Как принудительно использовать общие сочетания клавиш / макросов для всей системы?

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

Я хочу в основном переназначить свою клавиатуру по всей системе, а не только в конкретном окне приложения. То есть, когда я переназначаю alt + j = Down , я хочу, чтобы alt + j был таким же, как нажатие клавиши «вниз», насколько это касается среды рабочего стола.

Ярлыки, которые я использую, оптимизированы для того, чтобы держать руки в естественном положении близко к домашнему ряду в любое время:

 # Note how # system-wide remapping of *single* keys is possible with xmodmap. Caps Lock --> Escape Escape --> Caps Lock # Switch caps lock with # the more useful escape key. # As far as *all* applications # are concerned, pressing caps lock # is actually pressing Escape. # However, I've not found a good way do the same for multiple keys: alt + space --> Right Arrow alt + Escape --> Enter shift + alt + h --> Backspace alt + x --> Delete shift + alt + l --> Delete ctrl + alt --> Alt # Default alt functionalities # remapped to ctrl + alt 

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

Первая почти успешная попытка решения:

Использование xbindkeys для вызова xvkbd (x виртуальная клавиатура). Это образец из моего .xbindkeysrc :

 # hjkl Movement ################### "xvkbd -xsendevent -text "\[Down]"" alt + j "xvkbd -xsendevent -text "\[Up]"" alt + k "xvkbd -xsendevent -text "\[Left]"" alt + h "xvkbd -xsendevent -text "\[Right]"" alt + l 

Проблемы:

alt ключ обычно является ключом по умолчанию для вызова меню приложения (например, alt + F выдает раскрывающееся меню * F * ile в большинстве приложений).

Кроме того, это, похоже, работает с некоторыми приложениями, в то время как другие, похоже, игнорируют его.

xbindkeys на самом деле не переназначает клавиатуру, а просто сообщает xvkbd для отправки сигнала, который иногда может создавать конфликты с активным приложением (в отличие от xmodmap, который по-настоящему переназначает клавиатуру).

Цель

Общесистемное переназначение моей клавиатуры, реализованное таким образом, что оно легко переносится (файл rc или что-то подобное).

alt – оптимальный ключ выбора, поскольку ctrl активно используется в приложениях, а клавиша mod – моим менеджером окон (Xmonad).

Моя настройка

Я запускаю Ubuntu 12.10 с рабочей средой Xmonad.


Это выполнимо? Я еще не знаю много о материалах на уровне ОС и способах ввода данных.

One Solution collect form web for “Как принудительно использовать общие сочетания клавиш / макросов для всей системы?”

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

Существует два разных инструментария для настройки: setxkbmap и xmodmap . Теоретически xmodmap устарел и должен быть заменен на setxkbmap, но иногда полезно и старое xmodmap.

Вы ограничены функциями, предоставляемыми xkb, но даже xmodmap предоставляет ограниченный набор модификаторов. Вы можете указать четыре ключа для каждой клавиши. Чтобы процитировать эту страницу:

 The first keysym is used when no modifier key is pressed in conjunction with this key, the second with Shift, the third when the Mode_switch key is used with this key and the fourth when both the Mode_switch and Shift keys are used. 

Может быть, это хорошая идея, чтобы больше узнать о деталях системы. Я бы предложил прочитать здесь или здесь, чтобы узнать, что возможно.

  • Как установить среду рабочего стола на CentOS 7?
  • Является ли Просветление полноценным DE или просто WM?
  • Перенос настроек XFCE из одной системы в другую?
  • Сценарий для поиска среды рабочего стола по умолчанию?
  • Как обращаться с gnome-settings-daemon memory leak?
  • Настройка переменной среды LANG для xfce
  • Имитировать рабочий стол через SSH?
  • xdg-open backend
  • Как использовать среду chroot'd на Android с внешним дисплеем, мышью и клавиатурой?
  • Как установить другую рабочую среду в Debian?
  • Проблема с Arch Linux: что вызывает проблему черного экрана при входе в Cinnamon?
  • Поиск и удаление пакетов, обеспечивающих рабочие среды настольных компьютеров
  • Interesting Posts

    огромный файл .sujournal на FreeBSD

    Howto Tell, если система аутентифицируется только с паролем или через PAM

    Настройка dwm для автоматического открытия приложений

    Что означает «S_I» в S_IRUSR и т. Д.?

    Как установить LXDE и X Window System на Debian Squeeze

    sed, найти и разместить после и до

    OSX 'env python' возвращает другой интерпретатор, чем 'python'

    Что произойдет, если я установлю дистрибутив GNU / Linux для ARMv7h на машине ARMv7l?

    Команда «ls» застряла, пытаясь перечислить устаревшую точку монтирования. Как вы убиваете / останавливаете его?

    безопасная конфигурация xorg

    Почему BIOS должен загружать загрузчик начальной стадии из MBR, но это не относится к UEFI?

    DD-WRT на WZR-HP-AG300H: хотите поддержку XFS; какая прошивка имеет ядро ​​3.8.13-1?

    Использование ^ в качестве метасимвола оболочки

    Как загружать модули при запуске в определенном порядке?

    Печать первой и последней строки всех файлов в папке

    Linux и Unix - лучшая ОС в мире.