ตัวแก้ไข Mode_switch คืออะไร


29

เล่นกับผมพบคีย์ปรับปรุงฉันไม่เคยได้ยินของ:xmodmap Mode_switchดูเหมือนว่าจะมีบางอย่างเกี่ยวกับการแทรกอักขระพิเศษ

ฉันกำหนดให้คีย์ แต่ดูเหมือนว่าจะไม่มีผลกระทบ มีไว้เพื่ออะไร? มันแตกต่างจากISO_Level3_Shift(Alt Gr)หรือไม่?


ดูเพิ่มเติมที่: unix.stackexchange.com/questions/249122/…
Pavel Šimerda

เชื่อมโยงในคำถามที่เกี่ยวข้อง: unix.stackexchange.com/questions/461972/…
Jeff Schaller

คำตอบ:


29

Mode_switchเป็นชื่อแบบเก่า (pre-XKB) ของคีย์ที่เรียกว่าAltGrในรูปแบบแป้นพิมพ์จำนวนมาก มันคล้ายกับShiftเมื่อคุณกดปุ่มที่สอดคล้องกับตัวละครคุณจะได้ตัวละครที่แตกต่างออกไปหากกดShiftหรือAltGrยัง ซึ่งแตกต่างShift, Mod_switchไม่ได้เป็นตัวปรับแต่งในความรู้สึก X11 เพราะปกติใช้กับตัวละครไม่ให้ปุ่มฟังก์ชันเพื่อการใช้งานที่จะต้องดำเนินการค้นหาตัวอักษรเพื่อให้ได้ผลที่ต้องการ

ISO_Level3_Shiftเป็นรุ่น XKB ของกุญแจนี้ โดยทั่วไปการพูด XKB นั้นซับซ้อนกว่ามากและสามารถทำสิ่งที่แปลกใหม่ได้ กลไกของ XKB นั้นเป็นเรื่องทั่วไปมากขึ้นเนื่องจากอนุญาตให้รูปแบบแป้นพิมพ์แตกต่างกันไปซึ่งปุ่มใดบ้างที่ได้รับอิทธิพลจากตัวดัดแปลงซึ่งมันจะทำให้ตัวดัดแปลง ( CapsLock-style) และตัวกดพร้อมกัน ( Shift-style) ปรับเปลี่ยนไปตามแบบอื่น ๆ


ISO_Level3_Shiftดีใจที่ได้ทราบว่าสามารถทำหน้าที่ 'เหนียว' ฉันกำลังมองหาฟังก์ชั่นนั้นเป็นเวลานาน: unix.stackexchange.com/questions/39014/…
vemv

@Gilles ดังนั้นมีAltGrและMode_switchปุ่มเดียวกันหรือไม่ ถ้าไม่ได้ในลิงค์นี้พวกเขาจะฟังเหมือนกัน คุณช่วยอธิบายให้ฟังหน่อยได้ไหม?
Utku

@Utku Mode_switchและISO_Level3_Shiftทำสิ่งเดียวกันด้วยวิธีที่ต่างกันเล็กน้อย ฉันไม่ได้อ้างว่าเข้าใจความแตกต่าง เวลาส่วนใหญ่พวกเขาไม่สำคัญ แต่ฉันจำได้ว่าการผสม xmodmap กับชื่อ XKB บางครั้งทำให้การปรับเปลี่ยนไม่ทำงาน
Gilles 'หยุดชั่วร้าย'

@Gilles ฉันไม่เข้าใจความแตกต่าง แต่ฉันจบลงด้วยus(cz_sk_de)คุณสมบัติหรือการแมป xmodmap ที่กำหนดเองสำหรับบางปุ่ม (ตัวอย่างเช่นเครื่องหมายจุลภาค) ขึ้นอยู่กับว่าAltGrเป็นMode_switchหรือISO_Level3_Shiftแต่ไม่สามารถรับคุณลักษณะทั้งสองในเวลาเดียวกัน
Pavel Šimerda

4
ปุ่มปักหมุดไม่ใช่CapsLockสไตล์ ปุ่มปักหมุดเรียกว่า "สลัก" และปุ่มล็อคเรียกว่าล็อค ปุ่มหมุดจะถูกปล่อยออกมาหลังจากที่ไม่มีการดัดแปลงตัวต่อไปในขณะที่กดปุ่มล็อคจะมีผลจนกว่าพวกเขาจะกดอีกครั้ง
Guildenstern

12

คำตอบนี้ไม่ได้มีไว้เพื่อขัดแย้งกับคำตอบของ @Gilles แต่มีไว้เพื่ออธิบายแง่มุมอื่นของจัดการอินพุตซึ่งฉันรู้สึกว่า "ไม่สว่าง" ในคำตอบของเขา

คุณสามารถใช้ทั้งสองISO_Level3_Shift(Alt-Gr) และMode_switchในเวลาเดียวกันกับผลที่แตกต่างกัน มันต้องมีการกำหนดค่าบางอย่าง แต่คุณสามารถมีทั้งคู่และใช้มันเพื่อสร้าง6ปุ่มที่แตกต่างกันต่อคีย์แป้นพิมพ์จริง!

คุณสามารถกำหนดค่าTabให้เป็นเช่นMode_switchเมื่ออยู่กับ และจากนั้นเช่นคีย์ที่มีป้ายกำกับ "H" บนแป้นพิมพ์สามารถสร้างอักขระ / คีย์ได้ดังต่อไปนี้:

h
H
← (Cursor)
← (Symbol)

with H
with ShiftH
with AltGrH
with AltGrShiftH
with TabH
with TabShiftH

ดังนั้นเพื่อกลับมาที่คำถามของคุณ: IL3SและMode_switchสามารถกำหนดค่าให้หมายถึงสิ่งต่าง ๆ ได้ดังนั้นคุณสามารถมีเคอร์เซอร์คีย์และ~ 200 ตัวละครที่มีประโยชน์จากภาษา (เน้นเสียง), การวาดกล่องและตัวละครทางเทคนิคบน35 ปุ่มของ แถว 3 ตัวอักษร

เพื่อให้บรรลุข้างต้น:

# Initial Setup
xmodmap -e 'keycode 23 = Mode_switch ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab'
xmodmap -e 'keycode any = Tab'
xcape -e "Mode_switch=Tab"

ตัวอย่างสำหรับH:

xmodmap -pke | grep 'h H'
# Make note of the keycode, note the 8 columns after the `=`,
# then edit and feed back into xmodmap with:
xmodmap -e 'keycode  43 = h H lowrightcorner uprightcorner Left leftarrow h H'

ว้าว! ฉันเห็นสิ่งที่คุณหมายถึงในวรรคสุดท้ายของคุณที่ 2 ตอนนี้คุณเพียงแค่ทำวันของฉัน😉ฉันไม่จำเป็นต้องคัดลอกและวางจากhtmlarrows.comfn: A → Bจะเขียนสิ่งที่ต้องการ
Patrick McLaren

ISO_Level5_Shiftผมคิดว่าวิธีปกติของการทำเช่นนี้คือการใช้ สิ่งนี้สร้าง 8 ระดับ, อันดับที่ 7 เป็นlvl3+lvl5+H&
Toothrot

1

Mode_shiftใน Xkb เป็นปุ่ม Shift สำหรับกลุ่มหรือเลย์เอาต์ หากคุณมีเลย์เอาต์ที่มีหลายกลุ่มคุณสามารถกดแป้นนี้ค้างไว้เพื่อเข้าถึงกลุ่มถัดไป หากคุณมีหลายเลย์เอาต์คุณสามารถกดปุ่มนี้ค้างไว้เพื่อเลื่อนไปมาระหว่างเลย์เอาต์ († 1)

ดังนั้นMode_shiftคือการจัดกลุ่มสิ่งที่Shift(หรือShift_Lและ Shift_Rเพื่อใช้ชื่อ keysym) คือระดับ

สิ่งนี้อาจชัดเจนมากขึ้นถ้าเราพิจารณาว่าMode_shiftมีนามแฝงที่เรียกว่าISO_Group_Shift(† 2) นอกจากนี้ยังมีปุ่มเรียก ISO_Group_LatchและISO_Group_Lockที่สอดคล้องกับ ISO_Level2_Latch(เลื่อนกะ) และShift_Lockตามลำดับ († 3)

นอกจากนี้ยังมีนามแฝงจำนวนหนึ่งสำหรับสคริปต์อื่น:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: สิ่งนี้ขึ้นอยู่กับความเข้าใจของฉันเกี่ยวกับ“ กลุ่ม” และ“ เลย์เอาต์” ของ Xkb ดูเหมือนว่าพวกเขาจะได้รับการปฏิบัติเช่นเดียวกับการเลือกระหว่างพวกเขาด้วยกุญแจเช่นนี้

† 2: ฉันกำลังอ้างอิงในไฟล์keysymdef.hในที่เก็บ Git นี้ ที่การแก้ไข ab8666661fc6 (“ เพิ่ม XF86XK_AudioPreset”, 2017-05-10) /usr/include/X11/keysymdef.hในการติดตั้งคุณอาจจะพบไฟล์นี้ที่

† 3: นอกจากนี้ยังมีกุญแจISO_Lockซึ่งเป็นกุญแจล็อคสำหรับวัตถุประสงค์ทั่วไป

ความหมายของAltGrกุญแจ

Gilles พูดถึงในคำตอบของเขาเกี่ยวกับ AltGrกุญแจ:

Mode_switchเป็นชื่อแบบเก่า (pre-XKB) ของคีย์ที่เรียกว่าAltGrในรูปแบบแป้นพิมพ์จำนวนมาก

นั่นทำให้ฉันสงสัยว่า "AltGr" อาจหมายถึง "กลุ่มสำรอง / กลุ่มทางเลือก" เนื่องจากMode_switchใช้เพื่อเปลี่ยนกลุ่ม สิ่งนี้กลับกลายเป็นว่าผิด ตาม หน้า Wikipedia บนAltGrปุ่ม “ AltGr” ดูเหมือนว่ามาจากแป้นพิมพ์ของ IBM และในคู่มือของพวกเขาบอกว่ามันเป็นตัวย่อของ“ กราฟิกสำรอง” เรื่องนี้สมเหตุสมผลเนื่องจากดูเหมือนว่าการใช้แป้นพิมพ์ในการวาด“ กราฟิก” (ตัวละครแบบกล่องวาดที่ใช้ในส่วนต่อประสานข้อความกับผู้ใช้) มาได้ดีก่อนที่จะมีการสนับสนุนที่ดีสำหรับการสลับอย่างรวดเร็วระหว่างสคริปต์หลายตัว

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