ibus переопределяет мой xmodmap

Я использую xmodmap для swith Ctrl и Alt:

~ $> cat .Xmodmap ! ! based on: http://www.emacswiki.org/emacs/SwapControlAltAndCapsLock#toc8 ! !---------------------------------------------------------- ! Swap Control and Alt keys, both sides !---------------------------------------------------------- ! First clear all modifiers & control clear control clear mod1 clear mod4 ! Swap Control_L and Alt_L keycode 64 = Control_L keycode 37 = Alt_L Meta_L ! Menu becomes Alt_R Meta_R (AltGr) ! keycode 135 = Alt_R Meta_R ! Define Control_R and Alt_R similar to Control_L and Alt_L keycode 108 = Control_L keycode 105 = Alt_L Meta_L ! We need to set keycodes first, as some programs (emacs!) read ! the key names and seem to ignore what's below. add mod1 = Alt_L Alt_R Meta_L Meta_R add mod4 = Super_L Super_R add control = Control_L Control_R !------------------------------------------ ! Caps_Lock becomes an additional BackSpace !------------------------------------------ ! remove lock = Caps_Lock ! keysym Caps_Lock = BackSpaceclear control ! clear mod1 ! keycode 37 = Alt_L Meta_L ! keycode 64 = Control_L ! keycode 105 = Alt_R Meta_R ! keycode 108 = Control_R ! add control = Control_L Control_R ! add mod1 = Alt_L Meta_L Alt_R Meta_R 

Это прекрасно работает; однако, когда я запускаю ibus, ключевые сопоставления настигают ibus. Есть ли способ избежать этого?

Это не совсем проблема IBus (у IBus есть проблемы, много (1), но я не думаю об этом).

Ubuntu, как и любой современный Linux, использует расширение xkb для определения клавиатуры. xmodmap – это своего рода наследие, которое не гарантирует его работу .

Документации совершенно не хватает. Arch Linux (как всегда) имеет хорошую страницу . Мне удалось адаптировать клавиатуру, чтобы не переключаться, что связано с ошибками в Ubuntu Gnome (2).

Система сложная – я нашел здесь какую-то помощь и здесь . Но понимание того, как изменить модификаторы, по-прежнему выходит из моего набора навыков … и я подозреваю, что очень немногие люди его понимают (страшно).


Примечания:

(1) Клавиатура продолжает ошибочно ошибаться , https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1246272 , и многое другое …

(2) https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1218322 , https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090

  • Фактически, есть опция ibus, скрытая от графического интерфейса установки, для перезагрузки .xmodmap при изменении метода.

     dconf write /desktop/ibus/general/use-xmodmap true 

    Я еще не пробовал, но вы можете проверить /etc/dconf/db/ibus.d/00-upstream-settings для доступных параметров.

    Я использую Xubuntu 16.04, он может отличаться от 14.04.

  • Другой путь

    1. Остановить ibus с помощью системных раскладок

       dconf write /desktop/ibus/general/use-system-keyboard-layout false 

      или с помощью ibus-setup

    2. Измените собственные сопоставления клавиш

       $ cat /usr/share/ibus/keymaps/modifiers keycode 29 = Control_L keycode 42 = Shift_L keycode 54 = Shift_R keycode 56 = Alt_L keycode 97 = Control_R keycode 100 = Alt_R keycode 125 = Super_L keycode 126 = Super_R keycode 127 = Menu 

      Ссылка: для пути конфигурации

      ibus_keymap_get ()

       IBusKeymap * ibus_keymap_get (const gchar *name); Get an IBusKeymap associated with the giving name. This function loads the keymap file specified in name in the IBUS_DATA_DIR/keymaps directory. name : The keymap file to be loaded, such as 'us', 'jp'. Returns : An IBusKeymap associated with the giving name; or NULL if failed. 

Вы уже пробовали следующее.

… попробуйте включить опцию «Использовать системную раскладку клавиатуры» на вкладке «Дополнительно» в настройках IBus.

Подсказка из http://tots.1o24.org/how-to-stop-ibus-from-removing-your-xmodmap-mappings/

Я уже сталкивался с этой проблемой раньше и, наконец, нашел решение для этого, сделав комбинацию клавиш, выполняющую команду, которая имеет два задания:

  • Отправьте нажатой комбинацию клавиш Alt + Shift (эта комбинация клавиш изменит входной источник IBUS)
  • Загрузите мой профиль xmodmap в системную раскладку

Взгляните на мой пост для получения более подробной информации об этом решении: http://blog.z1k.pw/?p=60