Переназначить комбинацию клавиш на другую комбинацию, например, AltGr+C -> Ctrl+C, под Wayland

Я в основном хочу задать этот вопрос , но для GNOME на Wayland. Это означает, что ответы с участием AutoKey и xbindkeys не будут работать, так как ни один из них не работает под Wayland.

Фон:

Я хотел бы переназначить некоторые клавиши, чтобы в конечном итоге лучше использовать файлы .

Мой план состоит в том, чтобы сопоставить , а затем следовать этому , чтобы получить сочетания клавиш, подобные vim. На Wayland такое переназначение можно сделать через файлы XKB (см. ссылку).

Однако я также хотел бы использовать для копирования/вставки. В настоящее время я сопоставил его (используя файлы XKB). Это делает CapsLock + Cработают бесперебойно по всей системе, и хотелось бы это сохранить.

Итак: С CapsLockсопоставляется с , я хотел бы Capslock (= AltGr) + Cдействовать как .

Мой вопрос:

Под Wayland можно как-то привязать AltGr + Cк Ctrl + C?

(без перепривязки к Ctrl, так как это противоречит цели)

Альтернативный пример с Q

В файле XKB для латиницы /usr/share/X11/xkb/symbols/latin, для моего ключа определено следующее поведение:

      key <AD01>  { [ q, Q, at, Greek_OMEGA ] };

Это означает, что ключ имеет четыре возможных выхода:

  1. Нажатый в одиночку, он производит q.
  2. Нажато с Shift, он производит.
  3. При нажатии с , он производит .
  4. Нажато с AltGr + Shift, он производит Ω.

По сути, я хотел бы достичь того, что когда Qнажимается с AltGr, не производит @но Ctrl + Q.

1 ответ

Существует несколько инструментов, которые могут это сделать, например , KMonad, Interception Tools и .

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

Настоящее решение делает то, что я хочу, но обходит использование AltGrобъезд. Это лечит CapsLockв качестве Controlвезде, кроме h ,j ,k , l, который меняется на клавиши со стрелками.

1. УСТАНОВКА

Я строю из исходников, так как это было легко. Следующие строки сначала устанавливают зависимости (включая компилятор C), загружают исходный код, собирают и устанавливают его, включают его как службу, запускают и запускают при запуске.

Когда это будет сделано, он сообщит вам, где он установлен, чтобы вы могли удалить его для удаления. Вы можете удалить исходный код после установки.

      sudo apt install cmake libudev-dev
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd

2. НАЙДИТЕ НАЗВАНИЕ КЛАВИАТУРЫ, КОТОРУЮ ХОТИТЕ ПЕРЕНАПИСАТЬ

Вы должны найти название своей клавиатуры, чтобы мы могли сделать переназначение именно для этого. Бежать

      sudo keyd -m

и нажмите несколько клавиш. Он покажет название клавиатуры и нажатые клавиши. Запишите имя. Мой был AT Translated Set 2 keyboard.

3. СОЗДАЙТЕ ФАЙЛ КОНФИГУРАЦИИ

Где угодно, создайте файл конфигурации с любым именем. Мы перенесем его позже. Допустим, вы используете ~/my_keyboard.conf.

В нем поместите следующее. # - это комментарии, которые объясняют определенное поведение (обновлено для версии 2.1.1. Надеюсь, я не допустил ошибок):

      [ids]

*

[main]
### MAIN LAYER
    
# Make capslock activate the second layer:

capslock = layer(movement_layer)

### SECOND LAYER (called "movement_layer")

# Define the new layer, which while active
# by default treats every key as if Control was pressed,
# (":C" means the layer should inherit the Control layer),
# and overrides this default for only h, j, k and l, which
# are mapped to directions.

[movement_layer:C]

h = left
j = down
k = up
l = right

# In sum, in the main default layer, everything is standard, except
# when CapsLock is pressed, then the second layer is activated.
# When the second layer is activate, everything but h, j, k, l
# acts as if Control is held---e.g., c copies and v pastes,
# which we want, as we holding down CapsLock.)

4. КОПИРОВАТЬ И ПЕРЕИМЕНОВАТЬ ФАЙЛ КОНФИГУРАЦИИ И ПЕРЕЗАПУСТИТЬ KEYD

Затем мы копируем конфигурацию в нужное место и назовем ее правильно, а именно в соответствии с клавиатурой, которую мы хотим переназначить.

      sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf

Затем мы перезапускаем keydпоэтому он загружает новую конфигурацию:

      sudo systemctl restart keyd

Теперь ты в деле :)

5. СОВЕТ: СОЗДАЙТЕ Псевдоним, чтобы скопировать конфигурацию и перезапустить ключ.

В итоге я много играл с конфигурационными файлами. Я отредактировал их в подкаталоге моей домашней папки, затем скопировал их и перезапустил.

Чтобы сделать это менее хлопотным, в ~/.bash_aliases, Я добавил

      alias rekeyd='sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf && sudo systemctl restart keyd'
Другие вопросы по тегам