Как переназначить Супер (левую) клавишу для управления ключом

26

Может ли кто-нибудь сказать мне, как переназначить мой Super(левый) ключ к Ctrlключу?

Я имею в виду Super(слева) должен работать как Ctrlключ.

Сэнди
источник
Вы хотите, чтобы только левая Супер клавиша действовала как Ctrl? Легко переназначить оба сразу из настроек раскладки клавиатуры, но изменение только одного должно быть сделано через конфигурационные файлы.
pconley
Да, я хочу, чтобы только левая клавиша Super действовала как Ctrl ..
Сэнди
Относится ли супер-клавиша к клавише на моей клавиатуре с логотипом MS Windows, лежащей между левым ctrl и левым alt / right alt gr и клавишей с другим странным логотипом?
Рене Ниффенеггер,
1
@ RenéNyffenegger Клавиша Super - это Windowsклавиша на клавиатуре ПК и Commandклавиша на клавиатуре Apple. Я не совсем уверен, что другой ключ, который вы описываете
Nhed

Ответы:

28

Чтобы внести серьезные изменения в клавиатуру, включая переназначение символов и изменение модификаторов, вам нужно использовать утилиту xmodmap - см man xmodmap. Есть несколько способов выполнить изменения:

  • либо из командной строки

    xmodmap -e "your commands"
    
  • или напишите команды в файл типа .xmodmaprc, затем выполните его в элементах входа в систему или в .bashrc с помощью

    xmodmap .xmodmaprc
    

    Если вы назовете файл, ~/.xmodmapон будет выполнен автоматически при входе в систему.

Теперь команды

То, что вы хотите сделать, это двухэтапный процесс. Сначала вы удаляете Super из его модификатора, а затем сопоставляете его с контролем.

  1. Запустите xmodmap -pmв окне терминала, чтобы получить список связанных модификаторов. На моей машине (и, вероятно, вашей) Super упоминается как mod4. Super_Lи Super_Rявляются отдельными ключами, которые выводят один и тот же модификатор.

    Теперь вы можете удалить модификатор из него. Запустите команду xmodmap (используя один из методов выше)

    remove mod4 = Super_L
    

    Теперь физический ключ по-прежнему называется внутренним Super_L, но он ничего не делает.

  2. Теперь просто переназначить его. Запустите команду xmodmap:

    add control = Super_L
    

Если вы хотите отменить это позже, просто запустите те же команды с соответствующими аргументами.

Нет Super_R?

Вывод xmodmap -pm может дать вам несколько ключей с именем Super_L, но ни один с именем Super_R). Если это так, у вас есть несколько дополнительных клавиш, назначенных для Control, но ни одна из них не назначена для Super. Вам придется переименовать один ключ. (Примечание: это может дать вам несколько Super_L и хотя бы один Super_R. Это нормально.)

Все имена ключей в таблице имеют шестнадцатеричное число в скобках рядом с ними. Этот номер является физическим кодом клавиши на клавиатуре (он может варьироваться в зависимости от модели). Если вам нужно изменить один Super_L на Super_R, сначала найдите код, который вы хотите связать с Super_R (не уверены, какой из них правильный? Выполните, xevзатем пару раз нажмите на правильный Super. Где-то в лабиринте вывода есть " код ключа = 133 "(с другим номером)). Запустите команду xmodmap

keycode 133 = Super_R

переименовать ключ, затем

add mod4 = Super_R

назначить его на Супер.

pconley
источник
Прежде всего, спасибо, что уделили мне время. Когда я набрал «удалить mod4 = Super_L» в терминале, я получил это сообщение: удалить mod4 = Super_L: команда не найдена . Снимок экрана: i.imgur.com/fbvEA.png
Сэнди
1
Это команда для утилиты xmodmap. Вы должны запустить его одним из методов, которые я дал в первом разделе. Я отредактировал свой ответ, чтобы сделать это более ясным.
pconley
Не могли бы вы также сказать мне, как запустить эти команды при запуске?
Сэнди
Когда вы входите в систему или когда система загружается? Если первое, просто поместите команды в файл .xmodmap в вашем домашнем каталоге; последнее было бы более уместно для отдельного вопроса в духе «как выполнить скрипт при запуске» (такие вопросы предположительно задавались ранее).
pconley
Для меня не работает без KeySum . keysym Super_L = Control_L
Александр Сушкевич
19

Командная строка:

xmodmap -e "remove mod4 = Super_L"
xmodmap -e "add control = Super_L"

Или вставьте, ~/.Xmodmapчтобы активировать при запуске:

remove mod4 = Super_L
add control = Super_L
Кок
источник
4

В Ubuntu вы можете редактировать /etc/default/keyboardи устанавливать:

XkbOptions = "altwin: ctrl_win"

Который:

Ctrl отображается на клавиши Win (и обычные клавиши Ctrl)

Читайте man 5 keyboardдля получения дополнительной информации. Вы можете найти все возможные комбинации параметров в вашей системе, выполнив:

grep alt /usr/share/X11/xkb/rules/evdev.lst | grep win
Mitar
источник
2

Если вы хотите сделать с графическим интерфейсом:

  1. Установить / открыть Gnome Tweaks
  2. щелчок Keyboard & Mouse
  3. щелчок Additional Layout Options
  4. расширять Ctrl position
  5. Выбрать Swap Left Win with Left Ctrl
Богатый
источник
1

Попробуйте с этим:

clear Control
clear mod4
remove Control = Control_L Control_R
remove mod4 = Super_L Super_R
add Control = Super_L

Поместите вышеупомянутые строки в ваш ~/.Xmodmapи выполните xmodmap ~/.Xmodmap.

Rendon
источник