Как указать Caps Lock и сопоставление клавиш управления для каждой клавиатуры?

У меня есть внешняя клавиатура, которую я использую с моим настольным компьютером и ноутбуком Ubuntu 17.10 дома, и такая же клавиатура на моих машинах RHEL 6.8 на работе. Но на моем ноутбуке с Ubuntu 17.10 я большую часть времени использую встроенную клавиатуру, но в других случаях мне нужно подключить к ней ранее упомянутую внешнюю клавиатуру. Итак, мне нужно, чтобы клавиши Capslock и Control работали одинаково как для встроенной, так и для внешней клавиатуры.

Эта внешняя клавиатура имеет специальную прошивку, которая, среди прочего, меняет местами левый регистр и левую клавишу управления.

Я ищу следующее поведение:

  1. Когда внешняя клавиатура отключена, поменяйте местами клавиши Caps Lock и Control, так как встроенная клавиатура используется.
  2. Когда я подключаю внешнюю клавиатуру, я хочу перестать менять местами Capslock и клавиши управления, потому что клавиатура уже делает это.
  3. Я хочу, чтобы такое поведение происходило при всех следующих условиях:
    1. Когда я вхожу в систему с помощью Gnome под Ubuntu 17.10
    2. Когда я вхожу в систему с помощью Gnome под RHEL 6.8
    3. Когда я использую не-X-терминал (консоль).
  4. Я хочу делать все это из сценариев, которыми я могу управлять из моего собственного домашнего каталога, и мне не нужно устанавливать специальные пакеты под пользователем root, поскольку мне нужно, чтобы он работал как под RHEL, так и под Ubuntu (последний я могу контролировать, но не первый, с точки зрения установки и настройки пакета).

То, что у меня сейчас, в основном работает: у меня есть сценарий, запускаемый из Startup Applications, который обнаруживает клавиатуру и запускает xmodmap . Но это хакерство, потому что что-то в Gnome, Xlib, Xorg или еще где-то еще работает с Capslock на клавиатуре и поведением управляющих клавиш, так что я должен иметь sleep 5 прямо перед вызовом xmodmap , чтобы дать Gnome / любое время закончить "возиться", чтобы мой вызов xmodmap "победил". Это тоже хитрость, потому что она не связана с отключением и подключением клавиатуры. Он должен делать это только в зависимости от типа подключенной клавиатуры, а не в зависимости от входа в систему или выхода, блокировки или разблокировки или только при запуске Linux. Также мне пришлось иметь некоторую настройку, которая обнаруживает блокировку и разблокировку рабочего стола, а затем Gnome / что-то еще пытается снова сбросить клавиатуру при разблокировке.

Можно ли это сделать?

1
задан 4 March 2018 в 02:59

1 ответ

Я пытался решить другую проблему, но думаю, что она может иметь для вас побочные эффекты. Запись здесь: https://github.com/bjohas/Ubuntu-keyboard-map-like-OS-X

Мое конкретное предложение состояло бы в том, чтобы использовать xkb вместо xmodmap. xmodmap кажется более старой технологией, и она медленная. У меня был больший успех с xkb. Есть примеры переназначения модификаторов. (Хотя xkb быстрее и, возможно, более надежен, он, к сожалению, не настраивается пользователем. Поэтому я держу свою конфигурацию под рукой, чтобы иметь возможность восстановить ее после обновлений.)

Надеюсь, это поможет!

1
ответ дан 29 February 2020 в 12:04

Другие вопросы по тегам:

Похожие вопросы: