Раскладки клавиатуры Linux

#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, а не консоль.