เล่นกับผมพบคีย์ปรับปรุงฉันไม่เคยได้ยินของ:xmodmap
Mode_switch
ดูเหมือนว่าจะมีบางอย่างเกี่ยวกับการแทรกอักขระพิเศษ
ฉันกำหนดให้คีย์ แต่ดูเหมือนว่าจะไม่มีผลกระทบ มีไว้เพื่ออะไร? มันแตกต่างจากISO_Level3_Shift
(Alt Gr)หรือไม่?
เล่นกับผมพบคีย์ปรับปรุงฉันไม่เคยได้ยินของ:xmodmap
Mode_switch
ดูเหมือนว่าจะมีบางอย่างเกี่ยวกับการแทรกอักขระพิเศษ
ฉันกำหนดให้คีย์ แต่ดูเหมือนว่าจะไม่มีผลกระทบ มีไว้เพื่ออะไร? มันแตกต่างจากISO_Level3_Shift
(Alt Gr)หรือไม่?
คำตอบ:
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/…
Mode_switch
และISO_Level3_Shift
ทำสิ่งเดียวกันด้วยวิธีที่ต่างกันเล็กน้อย ฉันไม่ได้อ้างว่าเข้าใจความแตกต่าง เวลาส่วนใหญ่พวกเขาไม่สำคัญ แต่ฉันจำได้ว่าการผสม xmodmap กับชื่อ XKB บางครั้งทำให้การปรับเปลี่ยนไม่ทำงาน
us(cz_sk_de)
คุณสมบัติหรือการแมป xmodmap ที่กำหนดเองสำหรับบางปุ่ม (ตัวอย่างเช่นเครื่องหมายจุลภาค) ขึ้นอยู่กับว่าAltGr
เป็นMode_switch
หรือISO_Level3_Shift
แต่ไม่สามารถรับคุณลักษณะทั้งสองในเวลาเดียวกัน
CapsLock
สไตล์ ปุ่มปักหมุดเรียกว่า "สลัก" และปุ่มล็อคเรียกว่าล็อค ปุ่มหมุดจะถูกปล่อยออกมาหลังจากที่ไม่มีการดัดแปลงตัวต่อไปในขณะที่กดปุ่มล็อคจะมีผลจนกว่าพวกเขาจะกดอีกครั้ง
คำตอบนี้ไม่ได้มีไว้เพื่อขัดแย้งกับคำตอบของ @Gilles แต่มีไว้เพื่ออธิบายแง่มุมอื่นของxkb การจัดการอินพุตซึ่งฉันรู้สึกว่า "ไม่สว่าง" ในคำตอบของเขา
คุณสามารถใช้ทั้งสองISO_Level3_Shift
(Alt-Gr) และMode_switch
ในเวลาเดียวกันกับผลที่แตกต่างกัน มันต้องมีการกำหนดค่าบางอย่าง แต่คุณสามารถมีทั้งคู่และใช้มันเพื่อสร้าง6ปุ่มที่แตกต่างกันต่อคีย์แป้นพิมพ์จริง!
คุณสามารถกำหนดค่าTabให้เป็นเช่นMode_switch
เมื่ออยู่กับxcape ⌂และxmodmapจากนั้นเช่นคีย์ที่มีป้ายกำกับ "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'
fn: A → B
จะเขียนสิ่งที่ต้องการ
ISO_Level5_Shift
ผมคิดว่าวิธีปกติของการทำเช่นนี้คือการใช้ สิ่งนี้สร้าง 8 ระดับ, อันดับที่ 7 เป็นlvl3+lvl5+H
&
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 และในคู่มือของพวกเขาบอกว่ามันเป็นตัวย่อของ“ กราฟิกสำรอง” เรื่องนี้สมเหตุสมผลเนื่องจากดูเหมือนว่าการใช้แป้นพิมพ์ในการวาด“ กราฟิก” (ตัวละครแบบกล่องวาดที่ใช้ในส่วนต่อประสานข้อความกับผู้ใช้) มาได้ดีก่อนที่จะมีการสนับสนุนที่ดีสำหรับการสลับอย่างรวดเร็วระหว่างสคริปต์หลายตัว