Intereting Posts
Как подключить Ubuntu 13.10 к телевизору через HDMI? Как разбить текстовый файл на новые файлы Преимущество использования нескольких контрольных сумм для группы в AIDE Где rsyslog поддерживает объект local0? Как выполнить автоматическую синхронизацию с подключенным запоминающим устройством USB? zsh expand-or-complete для всех файлов независимо от команды / контекста Какой специальный файл содержит микрофонный вход? Загрузка с оболочки на HTTP-сервер Как запустить указанный код с помощью getopts, когда параметры или аргументы не заданы? Как вставить символ табуляции в «диалог»? Что означает :: 1 в Exim mainlog в rip и lip в журнале? Команды bash, похоже, не работают в .xinitrc Почему мой initrd имеет только один каталог, а именно «ядро»? Команда pdftotext не работает с несколькими файлами Поиск каталога рекурсивно для файлов, перечисленных в csv, и скопировать их в другое место

Переключение между раскладкой клавиатуры на основе входного события

У меня на компьютере есть французская и американская клавиатура. Я использую awesome wm и установил все, чтобы мне было легко переключаться между раскладкой клавиатуры. Но я все равно должен сделать это сам.

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

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

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

Спасибо за вашу помощь

Вы можете сделать это, настроив свои клавиатуры отдельно. Например, я использую американский английский макет на клавиатуре ноутбука и имею USB-клавиатуру Sun Type 6 с немецкой компоновкой, и у меня есть следующее в моем /etc/X11/xorg.conf.d/10-evdev.conf :

 # Default configuration for all keyboards not handled explicitly Section "InputClass" Identifier "evdev keyboard catchall" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "XkbRules" "evdev" Option "XkbModel" "pc105" Option "XkbLayout" "us(altgr-intl),de,ru" Option "XkbOptions" "lv3:menu_switch,caps:hyper,compose:ralt,grp:rctrl_rshift_toggle,terminate:ctrl_alt_bksp" EndSection # Match the external keyboard by USB ID Section "InputClass" Identifier "Sun Type 6" MatchIsKeyboard "on" MatchUSBID "0430:0005" Driver "evdev" Option "XkbRules" "evdev" Option "XkbModel" "sun(type6)" Option "XkbLayout" "de" Option "XkbOptions" "caps:hyper,compose:menu,terminalte:ctrl_alt_bksp" EndSection