Клавиатура хромбука Acer C720 видимо хороша для прогулок по сети и работы в Chrome OS, но мне для написания программ некоторых клавиш не хватает. Это Home, End, PageUp, PageDown, Insert и Delete.
Можно попробовать использовать клавишу Alt (генерирует символ Alt) как модификатор для курсорных клавиш. Тогда получаются следующие клавиатурные комбинации:
Клавиша | Комбинация |
---|---|
Insert | Alt + \ |
Delete | Alt + BackSpace |
Home | Alt + Left (←) |
End | Alt + Right (→) |
PageUp | Alt + Up (↑) |
PageDown | Alt + Down (↓) |
Для модификации раскладки используем xkb. Сначала создадим каталог для конфигурационных файлов:
mkdir -p ${HOME}/.config/xkb/types ${HOME}/.config/xkb/symbols
В файле ${HOME}/.config/xkb/types/c720
указываем как будут себя вести совместно два модификатора - Shift и Alt. Интерес представляют ситуации, когда нажат Alt, то есть уровень 3.
xkb_types "c720" {
virtual_modifiers Alt;
type "ARROW" {
modifiers = Shift+Alt;
map[Shift] = Level2;
map[Alt] = Level3;
map[Alt+Shift] = Level3;
level_name[Level1] = "Base";
level_name[Level2] = "Caps";
level_name[Level3] = "Alt";
};
};
В файле ${HOME}/.config/xkb/symbols/c720
на уровне 3 производим подмену символов клавиш на нужные и не забываем очистить флажок модификатора, иначе новые символы будут обрабатываться неверно.
xkb_symbols "c720" {
key <BKSL> {
type="ARROW",
repeat=yes,
symbol[Group1] = [backslash, bar, Insert],
symbol[Group2] = [backslash, slash, Insert],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<INS>, clearmods=Alt)
],
actions[Group2] = [
NoAction(),
NoAction(),
RedirectKey(key=<INS>, clearmods=Alt)
]
};
key <BKSP> {
type="ARROW",
repeat=yes,
[BackSpace, BackSpace, Delete],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<DELE>, clearmods=Alt)
]
};
key <LEFT> {
type="ARROW",
[Left, Left, Home],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<HOME>, clearmods=Alt)
]
};
key <RGHT> {
type="ARROW",
repeat=yes,
[Right, Right, End],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<END>, clearmods=Alt)
]
};
key <UP> {
type="ARROW",
repeat=yes,
[Up, Up, Prior],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGUP>, clearmods=Alt)
]
};
key <DOWN> {
type="ARROW",
[Down, Down, Next],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGDN>, clearmods=Alt)
]
};
};
Осталось записать в .xinitrc следующую команду для загрузки изменённой раскладки:
setxkbmap -layout "us+c720" -types "complete+c720" -print|xkbcomp -I"$HOME/.config/xkb" - "${DISPLAY%%.*}"