Сделайте так, чтобы Терминал распознавал PageUp и PageDown при переназначении на разные ключи

1328
William

Я понимаю, что Терминал по умолчанию не поддерживает PgDnи PgUp. У меня нет PgDnи PgUpна моей клавиатуре, но в настоящее время они переназначены на разные клавиши и, следовательно, Shift+ PgDnне работает. Я также попробовал Fn+ Up. Как я могу заставить Терминал распознавать мои переназначенные ключи пейджинга?

2
Какой терминал не поддерживает pgdn / pgup? Ipor Sircer 7 лет назад 1
Я уверен, что это поддерживает. Ipor Sircer 7 лет назад 0
Пожалуйста, не делайте ** не ** кросспост. См. [Допускается ли перекрестная публикация вопроса на нескольких сайтах Stack Exchange, если вопрос является тематическим для каждого сайта?] (// meta.stackexchange.com/a/64069) DavidPostill 7 лет назад 3
Я не совсем понимаю. Вы ищете терминальное приложение Linux, которое поддерживает PgDn и PgUp, потому что у вас нет клавиш PgDn и PgUp на клавиатуре? Получение нового терминального приложения не приведет к волшебному добавлению физических клавиш на клавиатуру. Я сомневаюсь, что вы это имели в виду, так что, возможно, вы могли бы прояснить свой вопрос? Но имейте в виду, что запрос программных рекомендаций [не по теме] (http://superuser.com/help/on-topic). 8bittree 7 лет назад 1
@ 8bittree, вы можете переназначить расположение PgDn и PgUp на клавиатуре, как я сделал, но затем Shift + PgDn и Shift + PgUp не работают в новых назначенных местах. William 7 лет назад 0
Вы пытались использовать стрелку Fn + Up (вниз) вместо Page Up (вниз)? Много раз это работает. Hastur 7 лет назад 0
@Hastur да, это не работает William 7 лет назад 0
Вы можете использовать Scroll Lock, но он не настроен по умолчанию в Ubuntu. Вы можете исправить это с помощью этой процедуры: https://linuxtechie.wordpress.com/2008/04/07/getting-scroll-lock-to-work-in-ubuntu/ cscracker 7 лет назад 0
@cscracker как блокировка прокрутки относится к PgDn и PgUp. William 7 лет назад 0
@William Scroll Lock, если она включена, позволяет использовать стрелки и кнопки перемещения вверх / вниз для прокрутки буфера. Это то, что у нас было до создания shift + pgup / pgdn. Это переключение в режим прокрутки, поэтому он называется Scroll Lock. Linux и большинство Unices поддерживают эту функцию, но некоторые современные (Ubuntu) не отображают ключ по умолчанию. Если вы сами сопоставите ключ, он сработает. cscracker 7 лет назад 1
О, так что вопросы с наградой не могут быть закрыты, это удобно. Рекомендации по программному обеспечению не по теме. Daniel B 7 лет назад 0
@DanielB У меня нет желания программ, которые я бы хотел сделать на самом деле. William 7 лет назад 0
Так что уточните свой вопрос. Тщательно. Объясни, что ты хочешь. Объясните вам переназначенные ключи или что-то еще Включите всю разбросанную информацию из комментариев. Их много, поэтому они не будут видны по умолчанию! Daniel B 7 лет назад 0

3 ответа на вопрос

6
quixotic

(комментарий: вы нашли 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 могли использовать ее как стандартную опцию. По сути, это будет включать

  1. размещение вашего файла опций /usr/share/X11/xkb/symbols/(вот почему pgupdownбыл хороший выбор опций, так как нет ранее существующего файла символов с таким именем)
  2. и затем добавление строк в /usr/share/X11/xkb/rules/evdev*(чтобы отобразить optionsfile:functionформат командной строки на +optionsfile(function)используемый xkbcomp)
  3. и, наконец, установка 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/. Это кэшированные предварительно скомпилированные таблицы ключей, которые могут мешать вам.

Ресурсы:

Так что я на самом деле в конечном итоге с помощью ключа для Prior вместо того, чтобы возражать обновлять прежде, чем я отправлю вознаграждение. William 7 лет назад 0
Я заметил, что ваш аккаунт незарегистрирован. Ваши ответы * отлично *, так что идите, получите учетную запись. Попросите слияние, свяжитесь с нами, если что-то пойдет не так. Journeyman Geek 7 лет назад 1
2
William

Изменение ключей в / usr / share / X11 / xkb / символы / pc, кажется, работает, я не мог заставить работать другой ответ выше. Затем вы используете новые клавиши с кнопкой Shift.

key <RWIN> { [ Prior ] }; key <MENU> { [ Next ] }; 
0
Warley

Терминал 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

Для этого все еще нужны клавиши Page Up и Page Down. (Но на самом деле название вопроса было довольно плохим.) Arjan 7 лет назад 0
о хорошо, круто Если вам нужно переназначить команды, вы можете следовать советам в этом ответе. http://askubuntu.com/questions/24916/how-do-i-remap-certain-keys-or-devices/24930#24930 Warley 7 лет назад 0
Если это можно сделать, например, для работы с Shift, то, я думаю, вам следует [edit] (http://superuser.com/posts/1136810/edit) свой ответ? (Обратите внимание, что я не задаю вопрос ...) Arjan 7 лет назад 0
Я попытался переназначить ключи, и они не регистрируются в новом месте. William 7 лет назад 0

Похожие вопросы