Làm cách nào để trao đổi các phím Alt và Windows với xmodmap?


9

Tôi có bàn phím Mac trong đó các phím Alt / Win (tức là Tùy chọn / Lệnh) được đảo ngược so với bàn phím PC thông thường và tôi muốn trao đổi chúng. Tôi chưa có may mắn nào với xmodmap cho đến nay. Cấu hình tiêu chuẩn như sau:

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)

Hiện tại, các phím alt trái / phải là mã khóa 64 và 108, trong khi các phím cửa sổ trái / phải là 133 và 134.

Tôi đánh giá cao bất kỳ sự giúp đỡ!


Đối với tôi, điều này hoán đổi cả hai cặp Alt và Win : setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps. Tôi chỉ muốn đúng Alt và Win đổi chỗ. Điều này không "hủy bỏ" trao đổi bên trái : setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocaps. Rõ ràng là không có altwin:swap_ralt_rwinlựa chọn, theo man xkeyboard-config.
Peter Becich

Câu trả lời:


11

Đây là Xmodmaprc của tôi:

! 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

Bạn sẽ phải sửa đổi .xsession hoặc .xinitrc của mình để gọi xmodmap .Xmodmaprc


7

Tôi đã đạt được điều này trong Ubuntu 13.04 bằng cách kết hợp câu trả lời của Barshe (giúp tôi, nhưng không hoạt động cho các công cụ sửa đổi và tôi không cần mộ và dấu ngã để làm khóa chết), một câu trả lời khác về setxkbmap , chơi với các tùy chọn khác nhau trong cài đặt- tùy chọn bố trí bàn phím (thậm chí nhìn vào mã nguồn ) và kiểm tra cấu hình hiện tại bằng lệnh setxkbmap -query(mà bạn cũng nên chạy, để kiểm tra kiểu bàn phím cụ thể và mã bố cục vì chúng có thể khác nhau).

Tôi có một tập lệnh mà tôi gọi khi chuyển sang bàn phím Apple (tùy chọn quan trọng là altwin:swap_lalt_lwinhoán đổi phím Alt và 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"

Và một cái khác mà tôi gọi khi tôi trở lại trên một bàn phím bình thường:

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

Lưu ý rằng tôi đã thêm các cài đặt

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

để kích hoạt ctrl + alt + backspace chấm dứt phiên Gnome, truy cập khóa cấp 3 bằng phím win phải, dịch chuyển bố cục bằng cách nhấn cả hai phím shift và biến Caps Lock của tôi thành một Ctrl bổ sung (tương ứng). Bạn có thể muốn loại trừ một số hoặc tất cả chúng.

Bạn có thể sử dụng AutoKey để liên kết cuộc gọi với một số phím tắt hoặc gọi nó từ bàn phím của bạn .profilehoặc .bashrcnếu bạn sử dụng bàn phím Apple mọi lúc.


1
Rất nhiều bla bla. Nếu bạn chỉ muốn hoán đổi alt trái và siêu khóa , hãy sử dụng lệnh này: setxkbmap -option altwin:swap_lalt_lwinvà nếu bạn muốn chuyển cả hai phím alt trái và phải và siêu khóa, hãy sử dụng lệnh này : setxkbmap -option altwin:swap_alt_win.
erik

Câu trả lời tốt. Nhưng làm thế nào để tôi làm chính xác điều đó chỉ để giành chiến thắng và đúng alt (AltGr)? Gần đây tôi đã có một unicomp, trong đó chiến thắng đúng nằm cạnh phím cách thay vì AltGr, như tôi đã quen với
giám sát

6

Tôi thấy rằng trên Ubuntu 16.04 sử dụng xkb và gnome, bạn cần thêm một vài bước khi so sánh với câu trả lời của Christopher Devine ở trên nếu bạn muốn giữ lại tất cả các hành vi cắt ngắn cho các phím alt và siêu khóa. Đây là giải pháp dễ nhất tôi tìm thấy.

Để lấy số mã khóa của bạn, trên dòng lệnh $ xev và nhập các phím bạn muốn lấy số. Để biết thêm thông tin về điều đó, hãy xem bài đăng này: sử dụng xev và xmodmap

Làm như vậy cho tôi: Super_Lcó mã khóa 133 Alt_Lcó mã khóa 64

Vì vậy, để hoán đổi Windows aka Command (trên Mac) aka Super key bằng phím Alt bên trái tôi làm:

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

Hai dòng cuối cùng thêm mod1 và mod4 trở lại keyym cho Alt_L và Super_L ngay khi chúng bị xóa. Nếu điều này không được thực hiện, tôi sẽ mất các phím tắt liên quan đến siêu phím (tìm kiếm) và nó cũng phá vỡ tổ hợp tab alt + để chuyển giữa các cửa sổ.

Bạn có thể thêm các lệnh này vào một tệp như .xmodmap và sau đó $ xmodmap .xmodmapsẽ chạy chúng.

Ngoài ra, bạn có thể chạy các tuần tự này trên dòng lệnh như: $ xmodmap -e <expression here>

Nếu bạn muốn quay lại ánh xạ khóa mặc định, thì bạn có thể đảo ngược các số trong mã ở trên, như:

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

hoặc trong Ubuntu tôi chỉ chạy: $ setxkbmap


có một vấn đề bên trong intellij trong đó phím alt không thể nhận ra khi chỉ trao đổi các phím với mod1 và mod4. Nhưng điều này thiết lập lại mã khóa hoạt động đẹp trong intellij. Công việc tuyệt vời
Jimubao

2

Bạn cũng có thể đặt các hid_appletùy chọn mô-đun hạt nhân để chỉ sửa đổi bàn phím apple nhưng không phải bàn phím PC bình thường. Không cần sử dụng xkbmap hoặc Xmodmapr. Chỉ cần tạo tập tin /etc/modules.d/hid_apple.confvới nội dung

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2ánh xạ các phím chức năng đến F1...F12mà không cần phải nhấn Fn. Bỏ qua nếu bạn thích các phím phương tiện. Xem Arch Wiki để biết thêm.

Vĩnh viễn trên 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

Tôi khuyên bạn không nên sử dụng xmodmap trong tương lai do nó không hoạt động trong Wayland, nhưng bỏ qua setxkbmap hoặc xkbcomp sẽ là phương pháp tốt nhất để sử dụng trong tương lai và Kinto dự án của tôi sử dụng nó.

Kinto sẽ trao đổi các khóa bạn muốn, nhưng nó cũng sẽ lắng nghe ứng dụng bạn đang sử dụng, để bạn có thể giữ sơ đồ phím đúng cho các ứng dụng đầu cuối để phù hợp với trải nghiệm của bạn khi sử dụng máy Mac.

Dưới đây là các liên kết có liên quan, nhưng tôi cũng sẽ bao gồm trung tâm của những gì Kinto làm - trừ các keymap tùy chỉnh và khả năng keymap xen kẽ, vì vậy bạn có ý tưởng về những gì Kinto thực sự làm.

https://github.com/rbreaves/kinto

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

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

Nội dung chính

# 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!
#
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.