Вопрос или проблема
Я использую Ubuntu 24.04 и беспроводную клавиатуру Logitech K400, на которой есть следующая клавиша:
Я хотел бы назначить ярлык этой клавише (например, для открытия терминала xterm). Сначала я попытался зайти в параметры Ubuntu и установить собственный ярлык. Это дало мне следующее:
Выглядит нормально, но когда я нажимаю клавишу, ничего не происходит.
Затем я узнал, что могу использовать xmodmap для переназначения клавиши. Для этого мне нужно знать её код, который теоретически можно получить с помощью xev
. Когда я запускаю xev
и нажимаю эту клавишу, я получаю следующее, что, похоже, не даёт мне кода клавиши (насколько я знаю):
FocusOut event, serial 38, synthetic NO, window 0x3c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 38, synthetic NO, window 0x3c00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 38, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(первый раз, когда я нажимаю кнопку с xev, значение 2 заменяется на 0, я не знаю, важно ли это…)
Когда нажимаешь другие клавиши, такие как “a”, код клавиши записывается явно, но здесь я не знаю, как его получить…
Я также пытался использовать showkey
, который отображает следующее, когда я нажимаю клавишу:
keycode 163 press
keycode 163 release
Однако, когда я пытаюсь изменить назначение клавиши 163:
xmodmap -e "keycode 163 = 16"
Ничего не происходит…
Другим вариантом было бы назначить ярлык на F12, но для этого мне нужно нажимать клавишу FN перед использованием любых клавиш от F1 до F12, что достаточно неудобно в долгосрочной перспективе… Я использую solaar, который позволяет «переключать» функциональные клавиши (т.е. делать их доступными без использования FN), но, к сожалению, это регулярно перестаёт работать спустя некоторое время, и мне приходится перезапускать его (что тоже слегка неудобно, так как никогда не знаешь, что произойдёт при нажатии функциональной клавиши…).
У вас есть идеи, как я мог бы заставить это работать?
ИЗМЕНЕНИЕ: Я прочитал, что опцию блокировки Fn можно установить в BIOS (чтобы использовать функциональные клавиши без необходимости нажатия Fn). Однако, когда я захожу в BIOS, она уже правильно установлена. Если изменить эту опцию, функциональные клавиши всё равно требуют использования Fn…
@bodo предложил использовать сочетание клавиш Fn + Esc для переключения опции блокировки Fn. Это действительно указано в BIOS, что это должно сделать. Однако на моём компьютере это вызывает выключение…
.
Ответ или решение
Для решения вопроса с назначением клавиши беспроводной клавиатуры Logitech K400 в Ubuntu 24.04, необходимо выполнить несколько шагов. Проблема заключается в привязке специфической клавиши для выполнения определенного действия, например, открытия терминала xterm
. Рассмотрим теоретическую информацию, примеры и приложение на практике для решения этой задачи.
Теория
Перед тем как приступить к практическим шагам по решению задачи, полезно понять общие принципы работы клавиатуры и переназначения клавиш в системе Linux.
-
Система ввода X11: Большинство современных графических интерфейсов Linux основаны на системе X Window System, чаще всего называемой X11. В этой системе используется
xmodmap
для изменения привязок клавиш. -
Ключевые понятия:
- Код клавиши (Keycode): Уникальный идентификатор, который система получает при нажатии клавиши.
- Символ (Keysym): Символ или функция, которой соответствуют нажатия клавиши.
-
Инструменты отладки:
- xev: Программа для отслеживания событий X, показывающая, какие события происходят при взаимодействии с интерфейсными элементами.
- showkey: Консольный инструмент, отображающий коды клавиш при нажатии в текстовой консоли.
- xmodmap: Утилита для изменения таблицы привязки клавиш в X11.
Пример
На примере вашей ситуации, вы сталкиваетесь с проблемой, при которой xev
не показывает коды клавиш, а showkey
выводит код 163
. Используя xmodmap
, вы смогли связать код с конкретным символом, но это не решило проблему.
Проблема может заключаться в том, что нужная клавиша не регистрируется или сопоставлена неправильно. Давайте более детально разберем использование и интеграцию этих утилит.
Приложение
-
Определение кода клавиши:
- Убедитесь, что ваша клавиатура корректно подключена. Рекомендуется перезагрузить систему и повторно протестировать клавишу через
xev
иshowkey
для подтверждения кода.
- Убедитесь, что ваша клавиатура корректно подключена. Рекомендуется перезагрузить систему и повторно протестировать клавишу через
-
Отладка через xev:
- Запустите
xev
в терминале. - Обратите внимание на то, показываются ли события при нажатии нужной клавиши. Если события не появляются, возможна проблема с драйвером или аппаратной совместимостью.
- Запустите
-
Настройка через xmodmap:
- Откройте файл конфигурации или создайте его, например,
~/.Xmodmap
. - Добавьте строку
keycode 163 = XF86Launch1
или другую функциональную команду. - Запустите
xmodmap ~/.Xmodmap
, чтобы применить изменения.
- Откройте файл конфигурации или создайте его, например,
-
Альтернативные подходы:
- Попробуйте использовать
xkb
для более точного управления привязками клавиш. Для этого есть возможность редактировать файл конфигурации, например,/usr/share/X11/xkb/symbols/pc
. - Программное обеспечение
Solaar
может быть использовано для управления функциями Logitech устройств, однако оно подвержено сбоям и может потребовать перезапуска.
- Попробуйте использовать
-
Настройки BIOS:
- Проверьте настройки BIOS на предмет опций, связанных с функциями клавиш. Если Fn Lock установлен, но не работает, попробуйте сменить ноутбук или обновить BIOS.
-
Решение проблем:
- Перегрузитесь с вариантом Safe Mode, чтобы избежать влияния других факторов на ваш процесс.
- Если проблема с клавиатурой Philips, убедитесь, что последняя установленная версия прошивки и драйверов.
Заключение, данная проблема требует многоступенчатого подхода к тестированию и конфигурации, принимая во внимание возможные аппаратные ограничения или проблемы с программным обеспечением. В случае, если предложенные меры не помогут, возможно, стоит обратиться в техническую поддержку Ubuntu или Logitech.