#java #linux #windows #keyboard-events #keyboard-layout
#java #linux #Windows #клавиатура-события #раскладка клавиатуры
Вопрос:
Я использую библиотеку Java под названием JNativeHook для получения события ввода в Lubuntu и Windows, моя проблема в том, что когда я набираю символ в Lubuntu с арабской раскладкой клавиатуры, я получаю английский сосед ключа, но когда я использовал библиотеку в Windows, я получал правильный ключ, почему это происходит? и как я могу это исправить? Вот мой код :
public void nativeKeyTyped(NativeKeyEvent e)
{
System.out.println("char: " e.getKeyChar());
}
Я загружаю 2.1 отсюда https://oss.sonatype.org/content/repositories/snapshots/com/1stleg/jnativehook/2.1.SNAPSHOT / , Но проблема становится еще хуже, когда я набираю один арабский символ, я получаю странные символы и множество событий, и это лишь небольшая часть выходных данных
INFO: hook_event_proc [314]: Key 0 typed. (罟)
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (ý
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (罟)
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. ()
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. ()
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (ý½
Oct 19, 2016 4:43:27 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFO: hook_event_proc [314]: Key 0 typed. (罟)
Char:
Ответ №1:
Проблема в том, как они переводятся в Linux, я изменил библиотеку поддержки, которая решила проблему в 2.1.
Комментарии:
1. Версия, которую я использую, — 2.3
2. Вы используете 2.0.3, 2.1.0 будет версией исправления 😉
3. Но последняя двоичная версия 2.0.3 github.com/kwhat/jnativehook/releases , должен ли я скомпилировать исходный код?
4. Да, официальной сборки 2.1 пока нет. Вам нужно будет скомпилировать из src или использовать последнюю nightly. Обратите внимание, что текущий мастер сломан, когда я пытаюсь разобраться с рефакторингом GlobalScreen. oss.sonatype.org/content/repositories/snapshots/com/1stleg /…
5. Убедитесь, что ваша консоль поддерживает широкие символы. Он должен поддерживать wchar_t, но этого недостаточно. Проверяйте вывод Java, а не консоль.