Сделайте так, чтобы Терминал распознавал PageUp и PageDown при переназначении на разные ключи
Я понимаю, что Терминал по умолчанию не поддерживает PgDn и PgUp. У меня нет клавиатуры PgDn и PgUp, но в настоящее время они переназначены на разные клавиши, поэтому Shift+PgDn не работает. Я также пробовал Fn+Up. Как я могу заставить Терминал распознавать мои переназначенные ключи пейджинга?
3 ответа
(комментарий: вы нашли XKB! поздравляю, это адская нора! которые используют ту же конфигурацию.)
XKB следует модели RMLVO - Правила, Модель, Макет, Вариант, Опции. Ваше решение изменяет файл модели системы, но лучшим решением было бы найти или создать опцию для добавления переопределений. ( evdev
является правилом по умолчанию для большинства дистрибутивов, и большинство внешних клавиатур будет использовать pc
модель, хотя внутренние модели ноутбуков могут иметь определенные варианты, которые уже близки к вашему сценарию использования. Стандартная клавиатура QWERTY США будет использовать us
макет без варианта, хотя вы можете выбрать intl
или же altgr-intl
варианты, если вы работаете с другими языками.)
Параметры - это конкретные переопределения основных функций. Если вы хотите отключить CapsLock, потому что этот ключ просто отстой, для этого уже есть возможность ( caps:none
), или вы можете установить вместо него дополнительную клавишу Escape ( caps:escape
). Вы можете увидеть конкретные переопределения в /usr/share/X11/xkb/symbols/caps
; каждая строфа - это отдельная опция, которую вы можете включить во время выполнения.
Если вы делаете setxkbmap -print
Вы должны получить список ваших текущих настроек XKB:
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete"};
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Создайте свой файл переопределения:
$ mkdir -p .config/xkb/symbols
$ touch .config/xkb/symbols/pgupdown
Теперь отредактируйте новый файл в вашем любимом редакторе и добавьте следующее:
// mapping PgUp and PgDown to other keys
partial alphanumeric_keys
xkb_symbols "rwinmenu" {
key <RWIN> { [ Prior ] };
key <MENU> { [ Next ] };
};
// same but switched
partial alphanumeric_keys
xkb_symbols "menurwin" {
key <MENU> { [ Prior ] };
key <RWIN> { [ Next ] };
};
Теперь создайте базовую раскладку:
$ setxkbmap -print > ~/.config/xkb/mymap
Отредактируйте этот файл и добавьте новую опцию в список символов в формате +optionfile(function)
:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete"};
xkb_symbols { include "pc+us+inet(evdev)+pgupdown(rwinmenu)" };
xkb_geometry { include "pc(pc105)" };
};
Если позже вы решите, что предпочитаете PgUp вместо клавиши меню, просто замените rwinmenu
с menurwin
туда и тебе хорошо идти.
Теперь вы можете загрузить этот файл с xkbcomp
:
$ xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/mymap $DISPLAY
запуск xev
(от x11-utils
пакет) и нажмите клавиши, чтобы убедиться, что изменения загружены:
# sed to scrape out non-kbd events; xev is pretty spammy
$ xev | sed -ne '/^KeyPress/,/^$/p'
Если вы получили все в нужных местах, ваша клавиша меню должна отправлять события Next, а клавиша Win_R отправляет Prior. Если это работает, вы можете добавить выше xkbcomp
командовать вашим .xinitrc
или же .xprofile
поэтому он запускается при входе в систему или при запуске X.
... если вы не используете Gnome. (и / или, возможно, KDE.) Затем мы идем дальше по кроличьей норе и выясняем, как включить эту новую опцию в системные файлы, чтобы DE могли выбрать ее в качестве стандартной опции. По сути, это будет включать
- размещение вашего файла опций в
/usr/share/X11/xkb/symbols/
(вот почемуpgupdown
был хорошим вариантом выбора, так как не существует ранее существующего файла символов с таким именем) - а затем добавление строк в
/usr/share/X11/xkb/rules/evdev*
(чтобы отобразитьoptionsfile:function
Формат командной строки в+optionsfile(function)
использованxkbcomp
) - и, наконец, установка DE для использования предпочитаемого макета и параметров.
Шаг 2: Если вам нужно пойти по этому пути, вам может потребоваться выполнить шаг 2 снова после любых обновлений, связанных с xkb.
# in /usr/share/X11/xkb/rules/evdev
# find the line that starts "! option = symbols" and add new lines:
pgupdown:rwinmenu = +pgupdown(rwinmenu)
pgupdown:menurwin = +pgupdown(menurwin)
# in /usr/share/X11/xkb/rules/evdev.lst
# find the line that starts "! option" and add a new line:
pgupdown:rwinmenu PgUp on RWin, PgDown on Menu
pgupdown:menurwin PgUp on Menu, PgDown on RWin
# in /usr/share/X11/xkb/rules/evdev.xml
# .... ummm .... ¯\_(ツ)_/¯ .... sorry! ....
Шаг 3: проверьте, если localectl
доступно в вашей системе. localectl
может настраивать клавиатуры виртуальной консоли, а также настраивать системную клавиатуру X11. Поскольку оба параметра настроены в файлах правил, вы можете использовать либо rwinmenu
или же menurwin
в этих командах.
$ localectl set-x11-keymap us pc "" pgupdown:rwinmenu
# format [layout] [model] [variant] [option1,...,optionN]
Для Gnome вам нужно использовать dconf-editor
или же gsettings
:
# set layout/variant
$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"
# set options
$ gsettings set org.gnome.desktop.input-sources xkb-options "['pgupdown:rwinmenu']"
Другим вариантом для Gnome может быть отключение настроек клавиатуры; это должно позволить либо опции localectl, либо опции user-config оставаться в силе:
$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
Устранение неполадок: если кажется, что ваши изменения не подобраны, и вы уверены, что правильно отформатировали файл, удалите все *.xkm
файлы из /var/lib/xkb/
, Это кэшированные предварительно скомпилированные таблицы ключей, которые могут мешать вам.
Ресурсы:
- http://madduck.net/docs/extending-xkb/
- http://apps.jcns.fz-juelich.de/doku/sc/xkbmap
- https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg
- https://unix.stackexchange.com/questions/66624/where-is-xkb-getting-its-configuration
- https://askubuntu.com/questions/451945/permanently-set-keyboard-layout-options-with-setxkbmap-in-gnome-unity
Изменение ключей в /usr/share/X11/xkb/ символы /pc, кажется, работает, я не мог заставить работать другой ответ выше. Затем вы используете новые клавиши с кнопкой Shift.
key <RWIN> { [ Prior ] };
key <MENU> { [ Next ] };
Терминал Ubuntu по умолчанию поддерживает pgup и pgdn, горячие клавиши [shift]+pgup и [shift]+pgdn. Большинство других терминалов, которые вы используете, будут иметь те же самые ярлыки, в основном потому, что pgup и pgdn уже используются bash для определенных вещей, поэтому вы не можете их использовать.
редактировать: если вам нужно переназначить ключи pgup и pgdn, вы можете следовать этому ответу на askubuntu для linux:
https://askubuntu.com/questions/24916/how-do-i-remap-certain-keys-or-devices/24930