Можно указать ключ, который будет использоваться для доступа к 5-му уровню на клавиатуре в gnome-keyboard-properties («Клавиатура» в разделе «Оборудование в настройках системы»):
Но если я установлю 5-й уровень на AltGr и третий уровень на правый Ctrl, и если я установлю ключ 54 следующим образом:
xmodmap -e "keycode 54 = 1 2 3 4 5 6 7 8"
Я получаю следующие результаты от нажатия разных вариантов:
keycode 54 = 1
keycode 54 + right ctrl = 5
keycode 54 + right ctrl + shift = 6
keycode 54 + shift = 2
keycode 54 + AltGr = 1
keycode 54 + AltGr + shift = 2
Итак, что делает модификатор 5-го уровня? Как настроить его, чтобы я мог получить 5 или шесть разных символов из одного ключа (например, с помощью Shift, Alt Gr и Right Ctrl)? Ну, после немного копания:
(1) Ключ для выбора 5-го уровня делает некоторые странные вещи (в отношении некоторых французских макетов), которые не имеют отношения к тому, что я хотел сделать. В основном он устанавливает, какой ключ будет действовать как ISO_Level5_Shift. ISO_Level5_Shift используется в некоторых неясных макетах. Этот ответ основан на количестве результатов, полученных google при поиске «ISO_Level5_Shift» и на этих ссылках.
(2) Он не может использоваться для получения 6 символов из одного физического ключа. Один из способов добиться этого - использование файла .xmodmap, помещенного в директорию $ HOME.
Во-первых, команда
xmodmap -pm
дает ключи, которые действуют как различные модификаторы. В моей системе это было следующим:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x9)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c)
mod3 необходимо настроить, чтобы использовать 6 символов с одним ключом. Это должно быть помещено в файл .xmodmap:
clear mod3
clear mod5
keycode 94 = Mode_switch
add mod3 = Mode_switch
add mod5 = ISO_Level3_Shift
Тогда xmodmap -pm дал мне:
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x9)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Mode_switch (0x5e), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), ISO_Level3_Shift (0x6c)
Если ключевой код 94 является ключом, который я выбрал как mod3. Клавиши с различными физическими клавишами можно найти с помощью инструмента командной строки xev (просто запустите его и нажмите различные клавиши, появятся коды клавиш).
Затем, если я поместил файл .xmodmap
[ f5]или запустите
xmodmap -e "keycode 54 = 1 2 3 4 5 6"
Я получаю шесть разных символов из одного ключа с использованием altgr, shift и keycode 94 (это бесполезный ключ рядом с левым сдвигом на моем физическом макете).
UPDATE: если вам нужно всего пять символов, удобно настроить его следующим образом:
keycode 54 = 1 2 3 3 5 6
Иногда случается со мной, что я получаю 4 вместо 3 в противном случае.