Java keypressed不适用于法语口音keycode = 0

时间:2016-02-12 18:41:16

标签: java keyboard keypress keyevent

我在法语中使用带有azerty键盘的Ubuntu,并且每个带有重音符号的键(éè...)的键码都为0。

KeyPressed / release适用于其他键,但我还需要它与“é”“è”“à”“ù”...

如何让它发挥作用?还有其他方法吗?

编辑:这是代码:

import java.awt.Event;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class KeyHandler implements KeyListener {

    private Screen screen;
    private Screen.KeyTyped keyTyped;

    public KeyHandler(Screen screen) {
        this.screen = screen;

        this.keyTyped = this.screen.new KeyTyped(screen);
    }

    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        System.out.println(keyCode);

        //this one works well for backspace for instance
        if (keyCode == KeyEvent.VK_BACK_SPACE) {
            this.keyTyped.keyBACKSPACE();
        }

        //many others keys which work
        ...
   }

}

使用此System.out.println,我获得了密钥的密钥代码:

我想要映射第二行,它是F1 F2 F3 ...和AZERTYUIOP之间的一行,此行中的键是:& é“'( - è_çà)=

当我尝试我的程序时,println的结果是:

&安培; 150

é0

“152

'222

(519

  • 45

è0

_ 523

ç0

à0

)522

= 61

所以它适用于大多数键,但对于任何非英语字母,都有问题,键码为0,我相信这意味着java不知道它是哪个键( http://docs.oracle.com/javase/7/docs/api/constant-values.html

public static final int     KEY_LOCATION_UNKNOWN    0

所以我的问题是,如何为那些非常常用的法语键盘键创建一个键码?

感谢您的帮助。

0 个答案:

没有答案