Переназначение клавиши Numpad – на F4 в xterm: решение проблемы игнорирования команд

Если вы пытаетесь перенастроить Numpad – в xterm так, чтобы он эмулировал F4, но вместо этого получаете упрямый символ «-» – это не ваша ошибка. Протоколы обработки клавиш в X11 иногда капризничают: даже правильные, на первый взгляд, команды могут не сработать из-за тонкостей в синтаксисе или кодировках. Давайте разбираться, как обойти эти грабли.

Почему xterm «не видит» ваши настройки

Первое, что стоит понять: xterm обрабатывает события клавиатуры через ресурс XTerm.VT100.translations, но здесь есть нюансы. Например, просто указать KP_Subtract недостаточно – нужно явно указать тип события. В некоторых окружениях (особенно современных DE вроде XFCE или KDE) требуется явное упоминание перед именем клавиши. Без этого xterm может проигнорировать правило, особенно если другие программы перехватывают события.

Пример неправильного подхода:

-xrm 'XTerm.VT100.translations: #override NumpadSubtract: действие'

Здесь не хватает указания на момент нажатия клавиши. Правильнее:

KP_Subtract

(Кстати, KP_Subtract и NumpadSubtract – это разные идентификаторы в зависимости от версии X11. Лучше проверить через xev.)

Как определить правильный код для F4

Ошибка многих руководств – использование неверных escape-последовательностей. Например, string(0x1b) string(0x5b) string(0x41) отправляет сигнал стрелки вверх, а не F4. Чтобы получить точные коды:

1. Запустите в терминале:

xxd -ps

2. Нажмите F4, затем дважды Ctrl+D (чтобы завершить ввод).
3. Вы увидите вывод вроде 1b4f53 – это и есть шестнадцатеричное представление F4.

Разбиваем его на части:

string(0x1b) string(0x4f) string(0x53)

Важно сохранить порядок байтов и не добавлять лишние пробелы – иначе xterm интерпретирует это как раздельные символы.

Рабочий пример и частые ошибки

Собрав всё вместе, команда для запуска xterm будет такой:

xterm -xrm 'XTerm.VT100.translations: #override KP_Subtract: string(0x1b) string(0x4f) string(0x53)'

Что может пойти не так:

  • Лишние пробелы внутри строки с ресурсами – X11 строго соблюдает синтаксис.
  • Конфликт с другими привязками – даже если F4 не используется в DE, проверьте ~/.Xresources и системные настройки.
  • Неправильная кодировка – например, использование 0x5b ([) вместо 0x4f (O).

Совет: Если после настройки numpad – перестал работать в других программах, добавьте условие ! Ctrl перед действием – это ограничит переназначение только xterm.

И напоследок: если xterm всё равно печатает «-», проверьте, не используется ли модификатор (например, Num Lock). Иногда проблема решается заменой на (но это уже тема для другого эксперимента).

P.S. Не забудьте, что в некоторых сборках xterm (особенно в Opensuse) могут быть пропатчены для совместимости – тогда придётся ковыряться в исходниках или искать альтернативы вроде uxterm. Удачи в танцах с клавиатурой!

Добавить комментарий

Все поля обязательны к заполнению. Ваш адрес email не будет виден никому.

Новое
Интересное