Я понимаю, что Терминал по умолчанию не поддерживает PgDn и PgUp. У меня нет PgDn и PgUp на моей клавиатуре, но в настоящее время они переназначены на разные клавиши, и поэтому Shift+PgDn не работает. Я также пробовал Fn+Up. Как я могу заставить Терминал распознавать мои переназначенные ключи пейджинга?
3 ответа
(комментарий: вы нашли XKB! Поздравляю, это адская кроличья нора, чтобы упасть. обратите внимание, что ваше решение будет взорвано в следующий раз, когда пакет ukntu-data для ubuntu обновит этот файл и повлияет на любые другие подключаемые вами клавиатуры, использующие ту же конфигурацию.
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#24930