Как поменять местами клавиши Alt и Windows с помощью xmodmap?

У меня есть клавиатура Mac, где клавиши Alt/Win (т. е. Option / Command) инвертированы по сравнению с обычной клавиатурой ПК, и я хотел бы поменять их местами. У меня пока не было никаких успехов с xmodmap. Стандартная конфигурация выглядит следующим образом:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

В настоящее время клавиши alt влево / вправо-это коды клавиш 64 и 108, а клавиши windows влево/вправо-133 и 134.

Я ценю любую помощь!

30
задан Daniel Schuler
16.12.2022 14:17 Количество просмотров материала 2934
Распечатать страницу

4 ответа

Это мой Xmodmaprc:

! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode  94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode  49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks

вам придется изменить свой .xsession или .xinitrc для вызова xmodmap .Xmodmaprc

9
отвечен Christophe Devine 2022-12-17 22:05

я добился этого в Ubuntu 13.04, объединив ответ Кристофа (который помог мне, но не работал для модификаторов, и мне не нужны grave и tilde, чтобы быть мертвыми ключами),еще один ответ о setxkbmap, играя с различными параметрами в настройках-клавиатура-layout-options (даже глядя на исходный код) и проверка текущей конфигурации с помощью команды setxkbmap -query (который вы также должны запустить, чтобы проверить вашу конкретную модель клавиатуры и коды раскладки, как они могут отличаться).

у меня есть один сценарий, который я называю, когда я переключаюсь на клавиатуре Apple (решающий вариант является altwin:swap_lalt_lwin для замены клавиш Alt и Super modifier):

# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""  

# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"

# swap the grave-tilde with less-greater key
#  - variant without dead keys
xmodmap -e "keycode  94 = grave asciitilde"
xmodmap -e "keycode  49 = less greater less greater bar brokenbar bar brokenbar"

и еще один, который я называю, когда я вернусь на обычной клавиатуре:

# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""

# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"

обратите внимание, что я добавил параметр

terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier

чтобы включить ctrl + alt + backspace завершение сеанса Gnome, Уровень 3 ключ доступа с помощью правой клавиши win, сдвиг макета, нажав обе shift клавиши и повернул мой Caps Lock В дополнительный Ctrl (соответственно). Вы можете исключить некоторые или все из них.

можно использовать AutoKey для привязки вызова к какой-либо комбинации клавиш, или вызвать его из .profile или .bashrc если вы используете клавиатуру Apple все время.

6
отвечен metakermit 2022-12-18 00:22

вы также можете установить hid_apple параметры модуля ядра, чтобы изменить только клавиатуру apple, но не обычные клавиатуры ПК. Нет необходимости использовать xkbmap или Xmodmapr. Просто создайте файл /etc/modules.d/hid_apple.conf С содержанием

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2 карты функциональных клавиш F1...F12 не нужно нажимать Fn. Опустите его, если вы предпочитаете мультимедийные клавиши. Смотрите Arch Wiki дополнительные.

постоянно на Ubuntu:

echo options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all
2
отвечен sebastian 2022-12-18 02:39

я обнаружил, что на Ubuntu 16.04, который использует xkb и gnome вам нужно несколько дополнительных шагов по сравнению с ответ Кристофера Дивайна ответ выше, если вы хотите сохранить все короткое поведение для клавиш alt и super. Это было самое простое решение я нашел.

чтобы получить номер ключа, в командной строке $ xev и введите ключи, которые вы хотите получить номер. Для получения дополнительной информации об этом см. Этот пост:xev и xmodmap использование

это дает мне: Super_L есть код 133 Alt_L имеет код 64

так поменять Windows ака команда (на Mac) ака супер ключ с левой клавишей Alt я делаю:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

последние две строки добавляют mod1 и mod4 обратно в keysym для Alt_L и Super_L так же, как они были удалены. Если это не сделано, я теряю ярлыки, связанные с супер-ключом (поиском), и он также разрывает комбинацию alt+tab для переключения между Windows.

вы можете добавить эти команды в файл, как .xmodmap, а затем $ xmodmap .xmodmap запустит их.

в качестве альтернативы, вы можете запустить их последовательно в командной строке, как: $ xmodmap -e <expression here>

если вы хотите вернуться к отображениям клавиш по умолчанию, то вы можете изменить цифры в коде выше, например:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

или в Ubuntu я просто запустить: $ setxkbmap

2
отвечен Trevor Owens 2022-12-18 04:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх