1

Есть ли способ заставить клавиши со стрелками действовать по-другому, пока нажата клавиша управления. В моей системе ^ -Up и Up генерируют один и тот же код ...

3 ответа3

2

Из моего /etc/personal-linux-console.map:

# Up
control keycode 103 = F69

# Left
control keycode 105 = F71

...
string F69 = "\033<Cu>"
string F71 = "\033<Cl>"

Из моего /etc/rc.local:

 loadkeys -q /etc/personal-linux-console.map

Я просто выбрал эти значения произвольно. Теперь в консоли Linux Control-Up отправит пять символов Escape - <- Cu-> и так далее. Вы говорите readline, как вы хотите интерпретировать это в вашем файле ~/.inputrc.

С X есть разные места для настройки. Некоторые изменения вы можете сделать с помощью xmodmap . В зависимости от того, как вы запустите X, вы можете просто сохранить команды xmodmap в ~/.Xmodmap или /etc /X11 /Xmodmap и автоматически загружают их. Некоторые изменения будут слишком сложными для xmodmap, и вам нужно будет написать файлы определений XKB (они находятся в /usr /share /X11 /xkb на моем компьютере). Они очень волосатые и плохо документированы. Вы должны найти, какие несколько документов и учебных пособий есть на Google. Примерно через год мы увидим развертывание нового поколения XKB, поэтому я не знаю, какой смысл вкладывать время в изучение старого формата.

Я не знаю, возможно ли делать Control-ключи с командами xmodmaps. Я думаю, что это. Раньше у меня были мои собственные файлы XKB (в любом случае мне нужны были файлы XKB). Теперь у меня настроены управляющие клавиши в конфигурационных файлах моего X-терминала (urxvt). Я использую ту же произвольно выбранную последовательность escape - <- Cu-> для управления и т.д., Чтобы я мог использовать настройки в моем файле .inputrc (для readline) и для других терминальных программ (mutt, elinks и скоро).

Для некоторых переопределений ключей также полезно писать собственные файлы terminfo, чтобы приложения с поддержкой terminfo могли с большей вероятностью обрабатывать / распознавать их. Я не делаю этого для своих настроек Control-arrow. Но, например, если у вас есть какой-то ключ, определенный для вывода строки Escape - <- SU->, вы можете использовать файл terminfo, который объявляет эту строку как ключ "Undo". Тогда в некоторых приложениях вы сможете просто называть эту клавишу "Отменить", независимо от того, что она говорит на вашей физической клавиатуре.

Это сложно. Там нет общего решения, которое проще. (Хотя, если вас интересовало только несколько ключей, в некоторых приложениях вы вполне можете игнорировать некоторые сложности.)

0

Под консолью вы можете использовать dumpkeys для проверки таблицы перевода и loadkeys для ее изменения (например, здесь, чтобы сопоставить их с дополнительными функциональными клавишами F13-F16):

box# dumpkeys
...
keycode 103 = Up
keycode 105 = Left
keycode 106 = Right
keycode 108 = Down
...

box# loadkeys <<EOF
control keycode 103 = F13
control keycode 105 = F14
control keycode 106 = F15
control keycode 108 = F16
EOF
0

Переведите putty в режим эмуляции xterm, если это возможно, вместо VT100. Если это не может сделать эмуляцию xterm, переключитесь на эмулятор, который может. VT100 не может выполнить необходимые последовательности клавиш, точка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .