2
我有一個在Linux下運行的Swing應用程序,它有顯示重音字符的問題。爲什麼鍵入unicode時,Linux下不顯示KeyTyped事件?
縱觀該應用程序,我將問題追蹤到鍵盤。我添加了一個新的EventQueueManager來攔截所有收到的事件。
我在兩個系統上輸入了「[dead acute] [a]」序列。
在窗口,我得到:
D 090116 100330.015000 AWT-EventQueue-1 [HotKeyManager.java : 133 - handleAWTEvent] java.awt.event.KeyEvent[KEY_PRESSED,keyCode=129,keyText=Dead Acute,keyChar='´',keyLocation=KEY_LOCATION_STANDARD] on frame0
D 090116 100330.109000 AWT-EventQueue-1 [HotKeyManager.java : 133 - handleAWTEvent] java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD] on frame0
D 090116 100330.109000 AWT-EventQueue-1 [HotKeyManager.java : 133 - handleAWTEvent] java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='á',keyLocation=KEY_LOCATION_UNKNOWN] on frame0
D 090116 100330.125000 AWT-EventQueue-1 [HotKeyManager.java : 133 - handleAWTEvent] java.awt.event.KeyEvent[KEY_RELEASED,keyCode=129,keyText=Dead Acute,keyChar='´',keyLocation=KEY_LOCATION_STANDARD] on frame0
D 090116 100330.203000 AWT-EventQueue-1 [HotKeyManager.java : 133 - handleAWTEvent] java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD] on frame0
在Linux下,我得到:
D 090116 151026.380000 AWT-EventQueue-0 [HotKeyManager.java : 132 - handleAWTEvent] java.awt.event.KeyEvent[KEY_RELEASED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='?',keyLocation=KEY_LOCATION_UNKNOWN] on frame0
如此看來,沒有在鍵盤的處理方式有些差異。也許某種類型的字符編碼問題?
它看起來像Java和Linux下的硬件之間的錯誤,或者說是一種混淆,基於使用的語言環境。 – 2009-01-26 16:32:05