У меня есть приложение Swing, работающее под Linux, в котором возникают проблемы с отображением акцентированных символов.
Заглядывая в приложение, я отследил проблему до клавиатуры. Я добавил новый EventQueueManager для перехвата всех полученных событий.
Я набрал последовательность «[dead sharp] [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
Так что, похоже, есть разница в способах работы с клавиатурой. Может быть, какая-то проблема кодировки символов?