Intereting Posts
команда find не работает: «незаконный вариант – n» Обновить cron в AIX Как стереть символы Unicode в терминале? Вставить пробел между цифрой и алфавитом в определенном столбце Дублирование и GPG: преобразование кодировки Почему тестовая версия Debian пакета находится за стабильной версией? Что все эти другие в вариантах grub и которые безопасны для удаления? Может ли BTRFS использовать массивы RAID RAID? Вербальное считывание регулярных выражений sed в квадратных скобках, звездочка вне скобок Конфигурация прокси SOCKS на KDE 4.4.5 / Debian 6.0.5 Аппаратная точка останова в GDB + QEMU отсутствует start_kernel iptables маршрутизирует маркированные пакеты с маршрутизатора на ПК и маршрутизирует их обратно на маршрутизатор Удаленный пользователь SSH всегда получает «соединение закрыто» jpegtran – без потерь обрезает левую часть изображения Как получить журнал из u-boot без ком-порта

Как изменить настройки клавиатуры активного пользователя с помощью udev и setxkbmap?

У меня есть клавиатура USB, которую я подключаю к своему рабочему столу. При его использовании, как правило, устанавливается вручную следующий параметр setxkbmap :

setxkbmap -option compose:ralt setxkbmap -option ctrl:swap_rwin_rctl setxkbmap -option ctrl:swap_lwin_lctl 

Поскольку я часто делаю это, я хотел бы автоматизировать процесс, используя правило udev . Следующее правило соответствует событию, когда я подключаю клавиатуру:

 ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="046a", ATTRS{idProduct}=="0023", RUN+="/home/cutuchiqueno/.local/bin/kbd_udev", OWNER="cutuchiqueno" 

скрипт, который является RUN, содержит три строки с начала этого вопроса:

 #!/bin/bash setxkbmap -option compose:ralt setxkbmap -option ctrl:swap_rwin_rctl setxkbmap -option ctrl:swap_lwin_lctl echo `date +%T` >> /home/cutuchiqueno/udevtest 

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

Две модификации сделали этот конкретный случай:

для скрипта kbd необходим DISPLAY:0.0 дополнение

правило udev отреагировало на событие, которое было слишком рано. Я изменил подсистему на input .

и все сработало хорошо.