У меня есть файл ~ / .speedswapper, который содержит следующее:
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
... когда я бегу xmodmap ~/.speedswapper
, это переключает escи Caps Lockключи. У меня есть эта строка в моем ~ / .profile, так что при каждом входе в систему эти ключи переключаются.
Однако , если я подключу внешнюю клавиатуру USB, эта настройка, похоже, не будет сохраняться. Клавиатура моего ноутбука работает отлично, но мне нужно снова запустить команду, чтобы внешняя клавиатура переключила две клавиши. К счастью, это не влияет на клавиатуру моего ноутбука - они синхронизируются.
Одним из решений было бы найти какой-нибудь способ запуска этой команды xmodmap всякий раз, когда подключена внешняя клавиатура, но я был бы открыт для другого решения по переключению клавиш, если оно будет более устойчивым. ОС Ubuntu 13.04.
Учитывая только что прокомментированный комментарий, похоже, что этого можно достичь, написав правило udev - я думаю, что мне нужно использовать опцию RUN, и что он должен быть запущен на / dev / hidraw0 или / dev / hidraw1, которые являются устройствами, которые появляются, когда я подключаю свою клавиатуру ... но я все еще пытаюсь обернуть голову вокруг концепции, поэтому я был бы благодарен за любую помощь от кого-то, кто знает, что они делают с udev
Ответы:
Поскольку у вас есть эта команда
~/.profile
, она будет выполняться только один раз, когда вы входите в систему. Одно, не очень элегантное, решение будет заключаться в том, чтобы поместить команду~/.bashrc
вместо вас, чтобы она запускалась каждый раз, когда вы открываете терминал.Лучшим решением было бы определить
udev
правило, которое будет выполнятьсяxmodmap
при вставке USB-клавиатуры (я использую значения, возвращенные для моей USB-клавиатуры, вам нужно будет отредактировать это решение, чтобы оно соответствовало вашему):Получите подробную информацию о вашей клавиатуре USB. Запустите эту команду с подключенной клавиатурой:
Чтобы написать
udev
правила, вам нужно знать, с чем они должны соответствовать. Вы можете получить это, выполнив поиск по выходным даннымudevadm info --export-db
дляevent6
записи, или просто разобрать его напрямую так:Это возвращает несколько строк текста, включая те, которые мы будем использовать:
udev
усложняется при использовании таких программ, как Xxmodmap
, я даже не смог заставить его работать при экспорте$DISPLAY
и$XAUTHORITY
. Во всяком случае, я не мог заставить его работать с вашим методом, поэтомуkeymap
вместо этого используется мое решение . Во-первых, вам нужно выяснить коды клавиш для, Escи Caps Lockвы можете сделать это, запустива затем нажмите соответствующие клавиши. В моей системе это возвращает:
Создайте новое правило раскладки, содержащее эти строки:
и сохранить его как
/lib/udev/keymaps/speedswap
.Определите новое
udev
правило. Создайте файл с именем/etc/udev/rules.d/95-speedswap.rules
и добавьте в него следующие строки:Это должно сделать это, по крайней мере, в моей системе, подключение к моему внешнему USB заставляет Escработать как Caps Lockи наоборот .
источник
udevadm info --export-db
несколько клавиатур и посмотрите, что у них общего. Может быть ,ID_MODEL=USB_Keykoard
или ,ID_USB_DRIVER=usbhid
но это также может вызвать правило с неправильным устройством. Вам решать.