Alt와 Windows 키를 xmodmap과 어떻게 교체합니까?


9

Alt / Win (예 : Option / Command) 키가 일반 PC 키보드와 반대로 반전 된 Mac 키보드가 있는데이를 바꾸고 싶습니다. 나는 지금까지 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입니다.

도움을 주셔서 감사합니다!


나에게 이것은 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.
피터 Becich

답변:


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

xmodmap을 호출하려면 .xsession 또는 .xinitrc를 수정해야합니다.


7

우분투 13.04에서 Christophe의 답변 (수정 자에게는 도움이되었지만 수정자를 위해 작동하지 않았고 죽은 키가 될 때도 묘한 물결표가 필요하지 않음), setxkbmap대한 또 다른 답변 을 설정하여 설정에서 다른 옵션으로 재생하여 이것을 달성했습니다 . 키보드 레이아웃 옵션 ( 소스 코드 확인 ) 및 명령을 사용하여 현재 구성 검사 setxkbmap -query(특정 키보드 모델 및 레이아웃 코드가 다른지 확인하기 위해 실행해야 함)

Apple 키보드로 전환 할 때 호출하는 스크립트가 하나 있습니다 ( altwin:swap_lalt_lwinAlt와 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 + 백 스페이스 그놈 세션 종료, 오른쪽 win 키를 사용한 레벨 3 키 액세스, 두 Shift 키를 모두 눌러 레이아웃 이동 및 Caps Lock을 추가 Ctrl로 각각 설정하십시오. 일부 또는 전부를 제외 할 수 있습니다.

자동 키 를 사용 하여 통화를 일부 바로 가기 에 바인딩 .profile하거나 .bashrcApple 키보드를 사용하거나 Apple 키보드를 항상 사용하는 경우 전화를 걸 수 있습니다 .


1
많은 bla bla. 당신이 경우 단지 스왑 왼쪽 Alt 슈퍼 키에 원하는 명령을 사용 : setxkbmap -option altwin:swap_lalt_lwin당신은 왼쪽과 오른쪽 Alt 키와 슈퍼 키를 모두 전환 할 경우, 다음 명령을 사용합니다 setxkbmap -option altwin:swap_alt_win.
erik

좋은 대답입니다. 그러나 올바른 승리와 오른쪽 대체 (AltGr)를 위해 정확히 어떻게해야합니까? 나는 최근에 내가 익숙해로 바로 승리, 대신 AltGr 키의 스페이스 바 옆에있는 unicomp, 있어요
cessor

6

xkb와 gnome을 사용하는 Ubuntu 16.04 에서 alt 및 super 키에 대한 모든 단축키 동작을 유지하려면 위 의 Christopher Devine의 답변 과 비교할 때 몇 가지 추가 단계가 필요하다는 것을 알았습니다 . 이것이 내가 찾은 가장 쉬운 솔루션이었습니다.

키 코드 번호를 얻으려면 명령 행 $ 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 + tab 콤보를 해제하여 창 사이를 전환합니다.

이 명령을 .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

또는 우분투에서는 방금 실행합니다. $ setxkbmap


intellij 내부에서 mod1 및 mod4로 키를 바꿀 때 alt 키를 인식하지 못하는 문제가 있습니다. 그러나 이것은 지능적으로 키 코드를 아름답게 재설정합니다. 장하다
Jimubao

2

hid_apple커널 모듈 옵션을 설정 하여 애플 키보드 만 수정하고 일반 PC 키보드는 수정할 수 없습니다. xkbmap 또는 Xmodmapr를 사용할 필요가 없습니다. /etc/modules.d/hid_apple.conf내용으로 파일 을 만드십시오.

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2F1...F12를 누를 필요없이 기능 키를 매핑합니다 Fn. 미디어 키를 선호하는 경우 생략하십시오. 자세한 내용은 아치 위키 를 참조하십시오 .

우분투에서 영구적으로 :

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

Wayland에서는 작동하지 않기 때문에 앞으로 xmodmap을 사용하지 않는 것이 좋지만 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!
#
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.