У меня есть внешняя клавиатура, которую я использую с моим настольным компьютером и ноутбуком Ubuntu 17.10 дома, и такая же клавиатура на моих машинах RHEL 6.8 на работе. Но на моем ноутбуке с Ubuntu 17.10 я большую часть времени использую встроенную клавиатуру, но в других случаях мне нужно подключить к ней ранее упомянутую внешнюю клавиатуру. Итак, мне нужно, чтобы клавиши Capslock и Control работали одинаково как для встроенной, так и для внешней клавиатуры.
Эта внешняя клавиатура имеет специальную прошивку, которая, среди прочего, меняет местами левый регистр и левую клавишу управления.
Я ищу следующее поведение:
То, что у меня сейчас, в основном работает: у меня есть сценарий, запускаемый из Startup Applications, который обнаруживает клавиатуру и запускает xmodmap
. Но это хакерство, потому что что-то в Gnome, Xlib, Xorg или еще где-то еще работает с Capslock на клавиатуре и поведением управляющих клавиш, так что я должен иметь sleep 5
прямо перед вызовом xmodmap
, чтобы дать Gnome / любое время закончить "возиться", чтобы мой вызов xmodmap
"победил". Это тоже хитрость, потому что она не связана с отключением и подключением клавиатуры. Он должен делать это только в зависимости от типа подключенной клавиатуры, а не в зависимости от входа в систему или выхода, блокировки или разблокировки или только при запуске Linux. Также мне пришлось иметь некоторую настройку, которая обнаруживает блокировку и разблокировку рабочего стола, а затем Gnome / что-то еще пытается снова сбросить клавиатуру при разблокировке.
Можно ли это сделать?
Я пытался решить другую проблему, но думаю, что она может иметь для вас побочные эффекты. Запись здесь: https://github.com/bjohas/Ubuntu-keyboard-map-like-OS-X
Мое конкретное предложение состояло бы в том, чтобы использовать xkb вместо xmodmap. xmodmap кажется более старой технологией, и она медленная. У меня был больший успех с xkb. Есть примеры переназначения модификаторов. (Хотя xkb быстрее и, возможно, более надежен, он, к сожалению, не настраивается пользователем. Поэтому я держу свою конфигурацию под рукой, чтобы иметь возможность восстановить ее после обновлений.)
Надеюсь, это поможет!