Есть ноутбук с клавишами со стрелками и Fn + стрелки для PageUp/PageDown/Home/End. Хотите сделать эти клавиши такими, чтобы правый элемент управления менял их на:
Управление Left должно продолжать работать как прежде.
Следующее содержимое сохранено в /usr/share/X11/xkb/symbols/custom
и загружено этой командой setxkbmap -symbols "pc+us+inet(evdev)+custom"
:
key <UP> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Up, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGUP>, clearMods=Control)] };
key <DOWN> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Down, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGDN>, clearMods=Control)] };
key <LEFT> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Left, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGUP>)] };
key <RGHT> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Right, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGDN>)] };
К сожалению, приведенный выше скрипт перехватывает обе клавиши Control, а не только правую. Мне нужно, чтобы левая клавиша Control не меняла своего поведения. Изменение PC_CONTROL_LEVEL2 -> PC_RCONTROL_LEVEL2 вроде бы должно сработать, но в этом случае ничего не работает по-другому (как будто я не делал никаких изменений).
Есть идеи, почему PC_RCONTROL_LEVEL2 ничего не делает?
Я пробовал делать разные вещи, но, к сожалению, ничего не помогло. Я даже не могу заставить правую клавишу управления работать в качестве клавиши управления, даже после попытки сопоставить ее непосредственно с другой клавишей.
В настоящее время я использую Ubuntu 17.10 с интерфейсом GNOME по умолчанию. Спасибо!
Вам необходимо добавить оболочку функции следующим образом.
default partial alphanumeric_keys modifier_keys
xkb_symbols "custom" {
key <UP> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Up, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGUP>, clearMods=Control)] };
key <DOWN> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Down, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGDN>, clearMods=Control)] };
key <LEFT> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Left, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGUP>)] };
key <RGHT> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Right, NoSymbol ],
actions[Group1] = [NoAction(), RedirectKey(key=<PGDN>)] };
};