Remapping Caps Lock กับ xmodmap ไม่ทำงาน


10

เมื่อฉันโปรแกรมฉันต้องการสลับคีย์เหล่านี้:

EscTab CtrlCapsLock

ใน~/.xmodmapฉันได้ระบุการแมปใหม่เหล่านี้:

keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab

EscapeและTabปุ่มแลกเปลี่ยนไม่มีปัญหา แต่แทนที่จะCaps_Lockและการแลกเปลี่ยนทั้งคีย์เหล่านั้นจะกลายเป็นControl_LCaps_Lock

ไม่ว่าฉันจะพยายามทำอะไรปุ่มควบคุมจะไม่ถูกกำหนดให้Caps_Lock(รหัสรหัส 66) หากฉันออกไปkeycode 66 =กุญแจจะไม่ถูกกำหนด แต่เมื่อฉันกำหนดControl_LหรือControl_Rไม่สามารถใช้งานได้ แต่ถ้าฉันกำหนดรหัสอื่นบางอย่างkeycode 66 = Tabมันจะถูกกำหนดให้โดยไม่มีปัญหา

มันเหมือนกับ xmodmap ไม่ต้องการให้สลับ Caps Lock และปุ่มควบคุม น่าผิดหวังจริงๆ ความช่วยเหลือ / ตัวชี้จะเป็นประโยชน์จริงๆ

PS: ฉันใช้ Archlinux

คำตอบ:


8

xmodmap (1) หน้าคนมีตัวอย่างสำหรับตรงนี้

   !
   ! Swap Caps_Lock and Control_L
   !
   remove Lock = Caps_Lock
   remove Control = Control_L
   keysym Control_L = Caps_Lock
   keysym Caps_Lock = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

แต่ถ้าคุณต้องการที่จะเสร็จสิ้นการทำมันในแบบที่คุณเริ่มต้นผมคิดว่าคุณต้องเพิ่มอย่างน้อยremoveและaddเส้น

   remove Lock = Caps_Lock
   remove Control = Control_L
   keycode 37 = Caps_Lock
   keycode 66 = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

ฉันเดาว่าเป็นกรณีตามวรรคนี้

   add MODIFIERNAME = KEYSYMNAME ...
           This adds all keys containing the given keysyms  to  the  indi‐
           cated  modifier  map.  The keysym names are evaluated after all
           input expressions are read to make it easy to write expressions
           to swap keys (see the EXAMPLES section).

ซึ่งทำให้ฟังดูเหมือนการเปลี่ยนแปลงตัวปรับแต่ง (shift, control, ฯลฯ ) จะไม่ถูกนำไปใช้จนกว่าคุณจะเรียกใช้เช่นกัน

(และมีเหตุผลเดียวกันกับremove)


ฉันอ่าน manpage และกำหนดปุ่ม Caps_Lock และ Control_L อีกครั้งตามตัวอย่าง แต่ฉันสงสัยว่าทำไมการทำแผนที่คีย์ใหม่ตามที่กล่าวถึงใน OP ไม่ทำงาน มันเป็นข้อบกพร่องหรืออะไรบางอย่าง?
Aby James

ดูเหมือนว่ามันเป็นเพียงวิธีที่ควรจะทำงาน ดูคำตอบที่อัปเดตของฉัน
มิเคล

4

คำตอบที่เกี่ยวข้องอย่างหลวม: ฉันต้องการตั้งค่าปุ่มตัวล็อกใหม่อีกครั้งเพื่อให้ตัวควบคุมด้านซ้ายปล่อยให้ตัวควบคุมด้านซ้ายจริงแตะต้อง หน้า man xmodmap ยังเสนอวิธีแก้ปัญหา:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.