โซลูชัน xmodmap
ฉันคิดว่าคุณสามารถทำได้โดยใช้xmodmapซึ่งเป็นเครื่องมือในการปรับเปลี่ยนคีย์แมป เนื่องจากแป้นพิมพ์ของฉันไม่มีSuperคีย์ที่ถูกต้องฉันจึงไม่สามารถยืนยันโซลูชันนี้ได้ดังนั้นโปรดแสดงความคิดเห็นหากไม่ได้ผล
ทำทุกขั้นตอนในเทอร์มินัล
พิมพ์แผนที่ปรับปรุงปัจจุบัน
เรียก
xmodmap
นี่ควรจะพิมพ์แผนที่ปรับปรุงปัจจุบันซึ่งน่าจะเป็นแบบนี้
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), 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)
บรรทัดสำคัญคือmod4
บรรทัดบรรทัดนี้แสดงรหัสคีย์ที่แมปกับสัญลักษณ์คีย์ Super_L และ Super_R
สำรองข้อมูลแผนที่สำคัญ
ก่อนที่เราจะเปลี่ยนแปลงสิ่งใด ๆ ขอแนะนำให้สำรองข้อมูลแผนที่สำคัญปัจจุบันเราสามารถทำได้ด้วย
xmodmap -pke > ~/.xmodmap.orig
ตอนนี้ถ้ามีอะไรผิดพลาดคุณก็สามารถพิมพ์
xmodmap ~/.xmodmap.orig
เพื่อคืนค่าแผนที่หลักดั้งเดิมของคุณ (หากคุณทำผิดพลาดร้ายแรงและไม่สามารถพิมพ์ได้อย่างถูกต้องอีกต่อไปการรีบูตก็ใช้งานได้)
ตรวจสอบการแมปกุญแจในปัจจุบันสำหรับ Super กุญแจ
สมมติว่าSuperกุญแจมีรหัสคีย์ที่ต่อเนื่องกัน (0x85 และ 0x86 ในกรณีนี้) เราสามารถตรวจสอบการแมปปัจจุบันโดยการเรียกใช้
xmodmap -pke | grep -wA1 $((0x85))
แน่นอนว่าคุณควรเปลี่ยน 0x85 ด้วยรหัสคีย์ที่คุณมีจากแผนที่ตัวปรับแต่ง สิ่งนี้ควรให้คุณ
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R
(การ$((0x85))
แปลงเลขฐานสิบหกเป็นทศนิยม)
คัดลอกพฤติกรรมของด้านซ้าย Super ไปทางขวา Super
อย่างที่คุณเห็นจากขั้นตอนก่อนหน้าSuperคีย์ด้านขวามีรหัสคีย์ 134 แต่เราต้องการให้พฤติกรรมของSuperปุ่มซ้ายซึ่งมีรหัส 133 ซึ่งเราสามารถทำได้โดยทำการแมปรหัสโดยใช้
xmodmap -e "keycode 134 = Super_L NoSymbol Super_L"
ตรวจสอบว่ามันใช้งานได้
หรือไม่ถ้าคุณทำตอนนี้
xmodmap -pke | grep -wA1 $((0x85))
คุณควรเห็น
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_L NoSymbol Super_L
หมายความว่าตอนนี้ปุ่มทั้งสองมีพฤติกรรมเหมือนกัน นอกจากนี้แผนที่ตัวดัดแปลงควรมีการเปลี่ยนแปลงในบรรทัดด้วยmod4
เราสามารถตรวจสอบสิ่งนี้โดยการเรียกใช้
xmodmap | grep 'mod4'
ซึ่งควรให้
mod4 Super_L (0x85), Super_L (0x86), Super_L (0xce), Hyper_L (0xcf)
และแน่นอนว่าทางลัดที่คุณกล่าวถึงควรใช้งานได้เช่นกัน!
ทำให้การจับคู่แบบคงที่
หากใช้งานได้คุณสามารถตรวจสอบให้แน่ใจว่าการตั้งค่าเหล่านี้ถูกนำไปใช้โดยอัตโนมัติเมื่อคุณบูต วิ่ง
echo 'keycode 134 = Super_L NoSymbol Super_L' >> ~/.xmodmaprc
~/.xmodmaprc
ในการจัดเก็บคีย์การแมปของคุณเองในแฟ้ม วิ่ง
echo 'xmodmap ~/.xmodmaprc' >> ~/.xsessionrc
เพื่อให้แน่ใจว่าแผนที่คีย์ที่กำหนดเองจะถูกดำเนินการเมื่อตัวจัดการหน้าต่างของคุณโหลด
Settings Manager -> Keyboard
, มีตัวเลือกexo-open --launch TerminalEmulator
อย่างไร? ถ้าเป็นเช่นนั้นมันจะพูดว่าอะไรในคอลัมน์ที่สองทางลัด?