ฉันจะสลับแป้น 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 ในขณะที่ปุ่ม windows ซ้าย / ขวาคือ 133 และ 134

ฉันขอขอบคุณความช่วยเหลือใด ๆ !


สำหรับฉันนี้ swaps ทั้งคู่ Alt และ setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocapsWin: ฉันต้องการสลับ Alt และ Win ที่ถูกต้องเท่านั้น นี้ไม่ได้ "ยกเลิกการออก" setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocapsสลับซ้าย: นอกจากนี้เห็นได้ชัดว่าไม่มีตัวเลือกตามaltwin:swap_ralt_rwin man xkeyboard-config
Peter 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

คุณจะต้องแก้ไข. xsession หรือ. xinitrc ของคุณเพื่อเรียก xmodmap .Xmodmaprc


7

ฉันทำสิ่งนี้ใน Ubuntu 13.04 โดยรวมคำตอบของ Christophe (ซึ่งช่วยฉัน แต่ไม่ได้ผลกับตัวดัดแปลงและฉันไม่ต้องการหลุมฝังศพและตัวหนอนเป็นกุญแจตาย) อีกคำตอบเกี่ยวกับ setxkbmapเล่นกับตัวเลือกต่าง ๆ ในการตั้งค่า - keyboard-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 ตลอดเวลา


1
มีมาก bla bla ถ้าคุณเพียงต้องการที่จะแลกเปลี่ยน Alt ซ้ายและที่สำคัญสุดให้ใช้คำสั่งนี้setxkbmap -option altwin:swap_lalt_lwinและถ้าคุณต้องการที่จะเปลี่ยนทั้งด้านซ้ายและด้านขวา Alt setxkbmap -option altwin:swap_alt_winและปุ่มซุปเปอร์ใช้คำสั่งนี้:
erik

คำตอบที่ดี. แต่ฉันจะทำอย่างนั้นได้อย่างไรเพื่อความถูกต้องและการชนะอย่างถูกต้อง (AltGr) ฉันเพิ่งได้รับ unicomp ซึ่งการชนะที่ถูกต้องอยู่ติดกับ spacebar แทน AltGr อย่างที่ฉันคุ้นเคย
cessor

6

ฉันพบว่าใน Ubuntu 16.04 ที่ใช้ xkb และ gnome คุณต้องมีขั้นตอนเพิ่มเติมเล็กน้อยเมื่อเปรียบเทียบกับคำตอบของ Christopher Devineหากคุณต้องการรักษาพฤติกรรมการลัดทั้งหมดสำหรับ alt และปุ่ม Super นี่เป็นทางออกที่ง่ายที่สุดที่ฉันพบ

ในการรับหมายเลขรหัสของคุณในบรรทัดคำสั่ง$ xev และพิมพ์รหัสที่คุณต้องการรับหมายเลข สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เห็นโพสต์นี้: การใช้xev และ xmodmap

การทำเช่นนั้นทำให้ฉัน: Super_Lมี keycode 133 Alt_Lมีรหัส 64

ดังนั้นเพื่อสลับคำสั่ง Windows aka (บน Mac) หรือที่เรียกว่า Super key ด้วยปุ่ม 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 เพื่อสลับระหว่างหน้าต่าง

คุณสามารถเพิ่มคำสั่งเหล่านี้ลงในไฟล์เช่น. 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ตัวเลือกโมดูลเคอร์เนลเพื่อปรับเปลี่ยน apple keyboard ของคุณเท่านั้น แต่ไม่ใช่คีย์บอร์ด PC ปกติ ไม่จำเป็นต้องใช้ 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 ทำได้เช่นกัน - ลบด้วย keymaps ที่กำหนดเองและความสามารถในการสลับ keymap ดังนั้นคุณจึงมีความคิดว่า 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.