Як замінити клавіші Alt і Windows на xmodmap?


9

У мене є клавіатура 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, тоді як ліва / права клавіші вікон - 133 і 134.

Я вдячний за будь-яку допомогу!


Для мене це свопи обидві пари Alt і Win: setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps. Я хочу лише змінити правильний Alt та Win. Це не «скасовує» лівий своп: setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocaps. Очевидно, немає жодного altwin:swap_ralt_rwinваріанту, за словами man xkeyboard-config.
Пітер Бечіч

Відповіді:


11

Це мій 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


7

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

У мене є один сценарій, який я дзвоню, коли переключаюсь на клавіатуру Apple (найважливішим варіантом є altwin:swap_lalt_lwinпідміна клавіш Alt і Super модифікатора):

# 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.


1
Багато бла-бла. Якщо ви просто хочете поміняти місцями лівий Alt і супер ключ , використовуйте наступну команду: setxkbmap -option altwin:swap_lalt_lwinі якщо ви хочете , щоб переключити лівий і правий альт і супер ключі, використовуйте наступну команду: setxkbmap -option altwin:swap_alt_win.
Ерік

Хороша відповідь. Але як мені це зробити саме для правильної виграші та правильного Alt (AltGr)? Нещодавно я отримав unicomp, де правильний виграш знаходиться поруч із пробілом замість AltGr, як я звик
цессор

6

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

Щоб отримати свої номери кодів, в командному рядку $ xev введіть ключі, для яких потрібно отримати номер. Більш детальну інформацію про це дивіться у цій публікації: xev та використання xmodmap

Це дає мені: Super_Lмає клавішний код 133 Alt_Lмає код 64

Отже, щоб поміняти команду Windows aka Command (на Mac) aka Super клавішу лівою клавішею 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 назад до клавіші Alt_L та Super_L так само, як вони були видалені. Якщо цього не зробити, я втрачаю ярлики, пов’язані із супер-клавішею (пошук), і він також порушує комбінацію клавіш alt + для перемикання між вікнами.

Ви можете додати ці команди у файл на зразок .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


виникла проблема всередині intellij, коли ключ alt не розпізнається під час просто заміни клавіш на mod1 та mod4. Але це скидання клавішного коду прекрасно працює в Intellij. Чудова робота
Jimubao

2

Ви також можете встановити параметри hid_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

0

Я б рекомендував не використовувати xmodmap у майбутньому через те, що він не працює у Wayland, але цей бік setxkbmap або xkbcomp був би найкращим методом для використання вперед, і мій проект Kinto використовує його.

Kinto поміняє потрібні клавіші, але також прослухає те, яке додаток ви використовуєте, щоб ви могли зберігати правильну клавішну карту для термінальних додатків, щоб вона відповідала вашому досвіду роботи на mac.

Ось відповідні посилання, але я також включу основу того, що робить Kinto, - мінус власні клавішні карти та можливість чергування клавіш, тому ви маєте уявлення про те, що насправді робить Kinto.

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

Зміст змісту

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.