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

10

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

Я видел такие фразы, как «использовать 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"

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

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

    
задан Den Rimus 13.06.2014 в 14:46
источник

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 */
[...]

имя keyym - это тот, который вы когда-то удалили строку «XK_».     

ответ дан Rmano 16.06.2014 в 10:16