Как мне привязать клавиши “модификатор + стрелка” к home/end/pageup/pagedown в X?

Вопрос или проблема

У меня есть новая клавиатура 60% (NuPhy Air60), но на ней нет возможности использовать клавиши pageup/pagedown или home/end.

Моя цель — восстановить эти команды с помощью кастомной привязки клавиш, используя модификатор, такой как hyper или alt в сочетании с клавишами со стрелками. Я предпочел бы что-то вроде:

  • alt + стрелка вверх = pageup
  • alt + стрелка вниз = pagedown
  • alt + стрелка влево = home
  • alt + стрелка вправо = end

Я попытался использовать xmodmap для создания привязок, но, к сожалению, из-за известной многолетней ошибки в chromium мои привязки не работали в Chrome или VSCode.

Что еще можно сделать?

Привязки клавиш через sxhkd и xdotool

Эти программы могут быть использованы в качестве альтернативы xmodmap для упрощения настройки пользовательских привязок клавиш и обхода проблемы с chromium.

  • sxhkd — это программа, которую можно настроить для выполнения команд в ответ на сочетания клавиш.
  • xdotool — это программа, которая может эмулировать события клавиатуры, направленные на текущее активное приложение.

Чтобы привязать alt+стрелки к home/end/pageup/pagedown:

  1. Установите sxhkd и xdotool
    • для arch linux: sudo pacman -S sxhkd xdotool
    • эти пакеты обычно доступны в менеджерах пакетов других дистрибутивов
  2. Настройте sxhkd в ~/.config/sxhkd/sxhkdrc следующим образом:
    alt + Up
      xdotool keyup Up key --clearmodifiers Prior
    
    alt + Down
      xdotool keyup Down key --clearmodifiers Next
    
    alt + Left
      xdotool keyup Left key --clearmodifiers Home
    
    alt + Right
      xdotool keyup Right key --clearmodifiers End
    
    • обратите внимание, что Prior и Next — это “keysym” имена, соответствующие pageup и pagedown.
  3. Запустите демон sxhkd: sxhkd
    • вероятно, вы захотите запускать его при старте системы
    • инструкции для этого будут варьироваться в зависимости от вашей конкретной среды рабочего стола или оконного менеджера.

Источник: этот блог был очень полезен Использование Capslock + hjkl в качестве стрелок на Linux

Ответ или решение

Для решения задачи по настройке пользовательских сочетаний клавиш на новой компактной клавиатуре NuPhy Air60, которая не оснащена физическими клавишами для функций Page Up, Page Down, Home и End, требуется применение специализированных инструментов. Проблема осложняется несовместимостью стандартной утилиты xmodmap с браузером Chrome и редактором кода VSCode, что связано с давно известной ошибкой. В данном контексте оптимальным решением будет использование программ sxhkd и xdotool, которые позволяют обойти упомянутые ограничения.

Теория

Программа sxhkd (Simple X HotKey Daemon) разработана для выполнения заданных команд при нажатии определённых сочетаний клавиш. Это делает её незаменимой для настройки кастомных горячих клавиш внутри различных графических сред Linux. xdotool, в свою очередь, способна симулировать события нажатий клавиш, включая направление этих действий на активное в данный момент приложение. Вместе эти инструменты предоставляют мощные возможности для настройки клавиатурных комбинаций в обход ограничений классических утилит вроде xmodmap, что делает их ценными инструментами в данной задаче.

Пример

Чтобы задать необходимые сочетания клавиш с использованием alt и стрелок на клавиатуре для выполнения функций page up, page down, home и end, необходимо произвести несколько шагов:

  1. Установка программ:

    • На большинстве дистрибутивов Linux эти программы доступны в пакетных менеджерах. Для Arch Linux, например, достаточно выполнить:
      sudo pacman -S sxhkd xdotool
    • Для других дистрибутивов используйте подходящий пакетный менеджер (например, apt для Ubuntu/Debian).
  2. Настройка конфигурационного файла sxhkd:

    • В файле ~/.config/sxhkd/sxhkdrc создайте следующие записи:

      alt + Up
      xdotool keyup Up key --clearmodifiers Prior
      
      alt + Down
      xdotool keyup Down key --clearmodifiers Next
      
      alt + Left
      xdotool keyup Left key --clearmodifiers Home
      
      alt + Right
      xdotool keyup Right key --clearmodifiers End
    • Здесь Prior и Next – это «keysym» имена, соответствующие Page Up и Page Down.
  3. Запуск демона sxhkd:

    • Для активации настроек необходимо запустить sxhkd. Это можно сделать вручную в окне терминала, либо добавить запуск демона в автозагрузку системы, что будет удобно для обеспечения постоянного действия настроек при каждом старте системы.
    • Процесс добавления sxhkd в автозагрузку зависит от выбранного рабочего окружения или менеджера окон. Например, для систем с systemd можно создать unit-файл или добавить команду запуска в ~/.xinitrc.

Применение

Настройка пользовательских сочетаний клавиш оказалась достаточно простой благодаря использованию sxhkd и xdotool. Это решение не только предоставляет требуемую функциональность, но и избавляет от проблем совместимости с определёнными приложениями, вызванных спецификой работы xmodmap. Применив данный подход, можно не только восстановить недостающие функции клавиатуры, но и значительно расширить её возможности за счет использования комбинаций клавиш, удобных лично для пользователя.

Этот гибкий и мощный метод особенно полезен для пользователей, работающих с компактными клавиатурами без некоторых аппаратных кнопок. Приведённый подход позволяет не ограничивать себя в функционале только из-за конструктивных особенностей устройства.

Как видно из этих шагов, настройка пользовательских горячих клавиш на Linux может быть лёгкой и интуитивно понятной, если использовать правильные инструменты и методологически подходить к решению задач, связанных с пользовательским интерфейсом.

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

Капча загружается...