Использование setxkbmap для простого переназначения (аналогично xmodmap)

13

Я столкнулся с некоторыми проблемами после переназначения клавиатуры с помощью xmodmap: настройки сбрасываются случайным образом через 2-20 минут после применения. Погуглил, но не помогло: что-то их сбрасывает, но все упоминания относятся к xfce, пока я нахожусь под обычным Ubuntu 14.04 с единством.

Я видел такие фразы, как «использовать xkb, забудь xmodmap», но все еще не знаю, как это сделать. Это либо секретно, либо очень сложно, потому что объем информации об этом значительно меньше, чем для xmodmap.

Вот мой список настроек:

xmodmap -e "keycode 84 = Down"
xmodmap -e "keycode 79 = Home"
xmodmap -e "keycode 80 = Up"
xmodmap -e "keycode 83 = Left"
xmodmap -e "keycode 85 = Right"
xmodmap -e "keycode 87 = End"
xmodmap -e "keycode 90 = Insert"
xmodmap -e "keycode 91 = Delete"
xmodmap -e "keycode 89 = Next"
xmodmap -e "keycode 81 = Prior"

где коды клавиш - это соответствующие ключи на цифровой клавиатуре, с numlock = off (в основном я заменяю KP_Del на Delete, KP_Home на Home и т. д. - не спрашивайте почему))

Может кто-нибудь помочь найти способ сделать это, используя xkb - хотя бы одну из строк? И где найти «имена» ключей для других, чтобы я мог сделать все остальное на примере?

Ден Дробязко
источник
5
Ага. Была точно такая же проблема. Смотрите здесь: rlog.rgtti.com/2014/05/01/… и askubuntu.com/questions/422650/… . Если вы сможете найти, как использовать, xkbне переписывая системные файлы, напишите ответ здесь ... Вы будете вознаграждены миллионами голосов.
Романо
Ничего себе - наконец, руководство по переназначению xkb, которое проясняет ситуацию ... Но я не вижу ничего о переназначении Home, Delete и Up- & Down-arows. Это всегда о греческих или испанских письмах. До сих пор я шел другим путем - пытаясь не дать системе переопределить мои настройки Xmodmap (рецепт № 3 отсюда: programiroiro.blogspot.com/2013/03/… )
Ден Дробязко
1
Плохая идея - после этого переключение раскладки недоступно (
Ден Дробязко,

Ответы:

4

Вы можете следовать общей идее, приведенной в моем ответе на аналогичную проблему ; если вы все еще хотите переключить макет (хотя он все еще не работает ), вам следует определить новый макет или вариант .

Обратите внимание, что шаблон для копирования и изменения для редактирования клавиатуры немного сложен. Например, в моей клавиатуре геометрия "pc105"; это определено в /usr/share/X11/xkb/symbols/pc. Если вы посмотрите на это, оно включает в себя :

[...]
key <SPCE> {        [        space          ]       };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]

Клавиатура определяется в файле /usr/share/X11/xkb/symbols/keypad

[...] 
default  partial hidden keypad_keys
xkb_symbols "x11" {
   include "keypad(operators)"

   key  <KP7> {        [  KP_Home,     KP_7    ]       };
   key  <KP8> {        [  KP_Up,       KP_8    ]       };
[...]

Для названия ключевых символов (keysims) лучше всего искать в файле /usr/include/X11/keysymdef.h; вам может понадобиться установить пакеты для разработки (или установить его путем установки x11proto-core-dev):

[...]
/* Cursor control & motion */

#define XK_Home                          0xff50
#define XK_Left                          0xff51  /* Move left, left arrow */
#define XK_Up                            0xff52  /* Move up, up arrow */
[...]

имя ключа является тем, которое вы однажды удалили строку «XK_».

Rmano
источник