หมายเหตุ : Wayland ใช้ xkb แต่ xTools จำนวนมากหยุดทำงานอย่างถูกต้อง (ตัวอย่างเช่น xdotool)
หมายเหตุ : นี่เป็นบทช่วยสอนที่ไม่ครบถ้วนสมบูรณ์ มันมีประโยชน์มากที่สุดสำหรับบุคคลที่ต้องการสร้างเค้าโครงแปดระดับใหม่และทำความเข้าใจกับไวยากรณ์
หมายเหตุ:มีวิธีแก้ปัญหาที่รวดเร็วและสกปรก มันมีสเปรดชีตซึ่งสร้างรหัสที่คุณต้องการโดยอัตโนมัติ
ทำความเข้าใจกับไดเรกทอรี XKB
cd /usr/share/X11/xkb/ && ls
- types- วิธีกุญแจผลิตมีการเปลี่ยนแปลงโดยการปรับเปลี่ยนการใช้งาน (Shift, Control, Alt ~)
สิ่งสำคัญหากคุณต้องการปรับแต่งคีย์ตัวปรับแต่ง
- geometry- ใช้ในการวาดกราฟิกแป้นพิมพ์
สำคัญหากคุณกำลังออกแบบฮาร์ดแวร์แป้นพิมพ์ที่ไม่ได้มาตรฐาน
- rules- ดึงการกำหนดค่าที่เหมาะสมสำหรับการตั้งค่าปัจจุบันของคุณ
คุณจะต้องกำหนดสิ่งนี้
- keycodes- ตัวแปลรหัสคีย์สำหรับฮาร์ดแวร์คีย์บอร์ด
ตัวอย่าง: คีย์บอร์ด Macintosh เข้าใจ spacebar 57
ดังนี้ อย่างไรก็ตามเราเขียนมันเป็น<SPCE>
- symbols- ซึ่งค่าที่ได้รับมอบหมายให้สิ่งที่พิมพ์ซ้ำ
ที่นี่เราจะกำหนดโครงร่างที่กำหนดเองของเรา
- compat- ย่อมาจากความเข้ากันได้
ลักษณะการทำงานภายในของปรับเปลี่ยน (Shift, Control, Alt ... )
ขั้นตอนการทำงาน
keycodes > symbols > compat
ฉันแตะเท่านั้นsymbols
: ดูด้านล่างเพื่อดูวิธีแก้ปัญหาอย่างรวดเร็วและสกปรก
แผนที่สัญลักษณ์
/symbols/us ไฟล์ใด ๆ ในไดเรกทอรีนี้ตามโครงสร้างเดียวกัน
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
partial - ไม่ใช่แผนที่แป้นพิมพ์ที่สมบูรณ์
alphanumeric_keysส่วนของแป้นพิมพ์ที่ถูกแมป สามารถใช้ได้หลายแบบ
หมายเหตุ:หากไม่มีการ*_keys
ระบุจะถือว่าแป้นพิมพ์ที่สมบูรณ์
"basic" - ชื่อของแผนที่สัญลักษณ์
name[Group1]= "US/ASCII";ให้ชื่อที่ไม่ซ้ำกับกลุ่มแป้นพิมพ์นี้
modifier_mapสำหรับการแก้ไขคีย์ตัวปรับแต่ง (ctrl, shift, alt ~)
Shift { Shift_L, Shift_R };ไม่จำเป็นโดยปกติ มันแมปทั้งกะกับตัวปรับเปลี่ยนกะหรือที่รู้จักในระดับ 2
key <TLDE> The Tilde Key - โดยปกติแล้วจะเป็นปุ่มซ้ายบนขวาเหนือ Tab
key <AE01> ภาพประกอบ - ประกอบด้วยสามส่วนAE01
A= บล็อกปุ่มตัวอักษรและตัวเลข
KP= ปุ่มกด = ปุ่ม
FKฟังก์ชัน
E= แถวบนคีย์บอร์ด
Space Key= Arow
Shift Key= Brow
Caps Lock= Crow
Tab Key= Drow
01= ตำแหน่งของคีย์ในแถว
AE01= 1
AB02= X
AC05=G
[+ ]- ในภาษา C; ,วงเล็บหมายถึงรายการโดยที่รายการจะถูกแยกออกจาก ความยาวของรายการกำหนดจำนวนของระดับ ตัวอย่างเช่น:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
โดยทั่วไประดับแสดงถึงการกดปุ่มต่อไปนี้ด้วย:
- ไม่มีคีย์ตัวดัดแปลง
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - ไม่น่าจะเห็นอะไรเกินระดับ 4
กล่าวโดยย่อหากคุณต้องการจับคู่กุญแจเพื่อเปลี่ยน + altgr รายการของคุณจะต้องมีความยาวอย่างน้อยสี่รายการ
คำเตือน - ข้อผิดพลาดทั่วไป
บรรทัดเหล่านี้อย่างใดอย่างหนึ่งอาจทำให้เกิดข้อผิดพลาดร้ายแรงและจะทำให้คุณไม่มีคีย์บอร์ดที่ใช้งานได้:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
ควรเป็นBackSpace
: ให้ความสนใจการสะกดอย่างระมัดระวังเป็นพิเศษ
VoidSymbol
รายการที่ว่างเปล่าควรจะเป็น
มาตรการความปลอดภัยที่ดีที่สุด!
สำรองไฟล์ของคุณที่คุณกำลังแก้ไข:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
สร้างสคริปต์ที่คุณสามารถรันได้โดยไม่ต้องใช้รหัสผ่านรูท
สิ่งที่ต้องการ:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
หากมีสิ่งใดผิดพลาดให้ใช้เมาส์ของคุณเพื่อเรียกใช้บรรทัดของรหัสนั้น (อยู่ในสคริปต์ทุบตีซึ่งคุณให้สิทธิ์ sudoers ไว้โปรดอย่าลืมchmod +x
อนุญาตให้ใช้งานในลักษณะปฏิบัติการ)
กลยุทธ์การสำรองข้อมูลเพื่อกู้คืนระบบที่เสียหาย
- คำเตือน:แป้นพิมพ์และแป้นพิมพ์บนหน้าจอจะหยุดทำงานเมื่อมีข้อผิดพลาดน้อยที่สุด
- เมาส์จะทำงาน การพิมพ์สามารถทำได้โดยการเน้นอักขระและวางไว้โดยใช้การคลิกกลาง ใน Bash คุณสามารถ
return
(กด Enter) โดยวาง linebreak
- แป้นพิมพ์จะทำงานในโหมดการกู้คืนในรูทเชลล์ (เข้าถึงได้จากทุบตี)
- คุณสามารถใช้สภาพแวดล้อมแบบสดๆเพื่อแก้ไขไฟล์
วิธีแก้ปัญหาที่รวดเร็วและสกปรก
- มานี่
- ไฟล์> ทำสำเนา
- Mapper ชีตคือที่ที่คุณกำหนดเลย์เอาต์ของคุณ
- รายการอักขระเดี่ยวถูกแปลเป็นรหัสที่โปรแกรมเข้าใจ
( !
กลายเป็นU0021
) รองรับ Unicode!
- สตริงจะไม่ถูกแปลและได้รับการปฏิบัติเหมือนที่เป็นอยู่ ทำให้แน่ใจว่าไม่มีข้อผิดพลาดในการสะกดคำหรือกรณี!
VoidSymbol
สี่เหลี่ยมที่ว่างจะเต็มไปโดยอัตโนมัติด้วย
- XKB-Sort ชีตประกอบด้วยกลุ่มคีย์เช่น:
key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
เปลี่ยนแปลงสิ่งนี้ใน 8 ระดับทั้งหมด:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBแท็บยังมีเส้น แท็บอื่น ๆ สามารถละเว้นได้ (รหัสของมัน)
sudo vim /usr/share/X11/xkb/symbols/us
- แทนที่เนื้อหาโครงร่าง เลือกหนึ่งที่คุณจะไม่ใช้ ตัวอย่างเช่น: ฉันเปลี่ยนรายการ colemak โดยปล่อยให้โครงสร้างยังคงอยู่และเปลี่ยนคีย์
สายที่น่าสนใจ:
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5