“1 แล้วโมดิฟายเออร์ระดับ 5 ทำอะไร?”
มันเลือกระดับที่ห้า ตัวปรับเปลี่ยนระดับที่ 2 (เพียงแค่กะปกติ) จะเลือกระดับที่สองและระดับที่ 3 จะเลือกระดับที่สาม
เหตุผลที่โมดิฟายเออร์ระดับที่ 5 เลือกระดับที่ห้าแทนที่จะเป็นระดับที่สี่ (หลังจากที่โมดิฟายเออร์ระดับที่ 3) คือการที่โมเดอเรเตอร์ทั้งสามนี้สามารถรวมกันได้หลายวิธีเพื่อเลือกแปดระดับที่แตกต่างกัน ซึ่งเพิ่งกดคีย์โดยไม่มีตัวดัดแปลงใด ๆ ) มีชุดค่าผสมแปดชุดตั้งแต่ 2 ↑ 3 = 8 สำหรับตัวดัดแปลงสองชุดแรกมีชุดค่าผสมสี่ชุด:
- ไม่มีตัวดัดแปลง (ระดับ 1)
- ตัวดัดแปลงระดับที่สอง, aka shift (ระดับ 2)
- ปรับปรุงระดับที่ 3 (ระดับ 3)
- ตัวดัดแปลงที่ 2 และ 3 (ระดับ 4)
การเพิ่มตัวปรับเปลี่ยนที่สาม (ระดับที่ 5) จะเพิ่มอีกสี่ระดับ
“2 ฉันจะตั้งค่าอย่างไรเพื่อที่ฉันจะได้อักขระ 5 หรือหกตัวที่แตกต่างจากปุ่มเดียว (แก้ไขโดย Shift Alt GrและRight
Ctrlตัวอย่าง)?”
ก่อนอื่นคุณต้องใช้เลย์เอาต์ที่ใช้อักขระอย่างน้อยห้าตัวต่อคีย์ คุณสามารถเลือกเค้าโครงที่มีอยู่ได้ แต่หากคุณต้องการเพิ่มระดับให้กับเลย์เอาต์ที่คุณกำลังใช้งานอยู่นั่นอาจไม่เหมาะสม ตัวอย่างเช่นมีเค้าโครงแป้นพิมพ์Neo († 1) แต่นั่นคือ "ปรับให้เหมาะสมสำหรับภาษาเยอรมัน" ดังนั้นจึงไม่เหมาะสำหรับผู้พูดภาษาอังกฤษส่วนใหญ่
ถึงกระนั้นก็อาจแนะนำให้ดูที่ปุ่ม Neo ได้เลือกสำหรับตัวปรับแต่งระดับ 5
เห็นได้ชัดว่า Neo เรียกโมดิฟายเออร์ระดับ 5 สำหรับ“ Mod4” ดังนั้นคุณจะเห็นว่ามันใช้ปุ่มทางด้านขวาของปุ่ม Shift ด้านซ้าย ( LSGT
) และปุ่ม alt ด้านขวา /AltGr
คีย์ นี่เป็นแป้นพิมพ์แบบยุโรป (105 แป้น) ซึ่งเมื่อเทียบกับแป้นพิมพ์สหรัฐฯ (104 ปุ่ม) มีการเลื่อนซ้ายแคบและปุ่มย้อนกลับสูงและผอม สำหรับรูปแบบแป้นพิมพ์ซึ่งขึ้นอยู่กับแป้นพิมพ์สหรัฐฯหนึ่งอาจต้อง - หรือต้องการ - เลือกแป้นอื่น ๆ
การเลือกคีย์ตัวปรับแต่งระดับ 5
ในคำตอบของ sup เขาเลือกที่จะใช้ Xmodmap เครื่องมือทุกวันนี้อย่างเช่น Setxkbmap ถูกแนะนำผ่าน Xmodmap Xkb มาพร้อมกับตัวเลือกที่กำหนดไว้ล่วงหน้ามากมายสำหรับสิ่งต่าง ๆ เช่นการเลือกตัวปรับแต่งระดับ 5 หากคุณปรึกษา
man xkeyboard-configและค้นหาlv5
ตัวเลือกเหล่านี้:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
ดังนั้นตัวเลือกที่ได้รับการบันทึกไว้คือ LSGT
กุญแจปุ่ม alt ขวาแป้น Windows ขวาและแป้น Windows ซ้าย ดังที่เราเห็น Neo ใช้สองตัวเลือกแรก
สมมติว่าคุณต้องการใช้lv5:ralt_switch_lock
ตัวเลือกบางรูปแบบ คำสั่งนี้ตั้งค่าus
เลย์เอาต์ด้วยคีย์ตัวปรับแต่งระดับ 5:
setxkbmap -option "lv5:ralt_switch_lock" us
ดังนั้นสำหรับตัวเลือกใด ๆ ที่มีการบันทึกไว้man xkeyboard-config
ให้ใช้เป็นอาร์กิวเมนต์-option
เมื่อใช้ Setxkbmap
ในกรณีที่ตัวเลือกเหล่านี้ไม่เพียงพอและคุณต้องการกำหนดคีย์อื่นให้เป็นตัวปรับแต่งเลเวล 5 แนะนำให้ดูที่การประกาศสำหรับตัวเลือกเหล่านี้ /usr/share/X11/xkb/symbols/level5
พวกเขาดูเหมือนจะอยู่ใน
การประกาศสำหรับ
lv5:ralt_switch_lock
หน้าตาแบบนี้:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
ด้านขวาของsymbols[Group1]
ประกาศคีย์หรืออักขระแต่ละระดับของคีย์ควรสร้าง สิ่งนี้ใช้ระดับแปดที่เป็นไปได้ทั้งหมดเนื่องจากควรล็อคตัวปรับแต่งระดับ 5 เมื่อกดพร้อมกับปุ่ม Shift ระดับ 5 อีกระดับหนึ่ง ดังนั้นระดับ 5-8 จะปล่อยออกISO_Level5_Lock
มาเนื่องจากระดับ
ทั้งหมดเหล่านี้เข้าถึงได้โดยกด shift ระดับ 5 ค้างไว้และรวมกันของปุ่ม Shift อื่น ๆ (ไม่มีให้ทั้งหมด) หากคุณต้องการเพียงแค่การทำงานแบบกะและไม่ใช่พฤติกรรมแบบกดปุ่มถ้ากดสองครั้งคุณสามารถประกาศได้ง่ายกว่า (จากไฟล์เดียวกัน):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
การเพิ่มเลเวลพิเศษให้กับเลย์เอาต์
เลย์เอาต์ Xkb นั้นเป็นแบบแยกส่วน คุณสามารถรวมเค้าโครงที่มีอยู่และปรับเปลี่ยนได้ ดังนั้นเราสามารถเลือกเลย์เอาต์ที่มีอยู่น้อยกว่า 5 ระดับและเพิ่มเลเวลบางส่วนลงไป
คุณสามารถสร้างเลย์เอาต์ใหม่โดยการคัดลอกไฟล์โดยใช้เลย์เอาต์ของคุณไปยัง
/usr/share/X11/xkb/symbols/
หรือที่ใดก็ตามที่เครื่องมือ Xkb ของคุณค้นหาเลย์เอาต์ แต่นี่ต้องใช้สิทธิ์ sudo ดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุด หรือคุณสามารถคัดลอกโครงสร้างไดเรกทอรีของxkb/
และวางรูปแบบของคุณได้ในภายใต้ไดเรกทอรีที่เหมาะสมคือxkb/
เพื่อบอกว่าคุณได้ทำไฟล์symbols/
xkb-tree/symbols/my-layouts
เพื่อให้รูปแบบการใช้งานที่กำหนดไว้ในแฟ้มนี้คุณสามารถใช้-print
ตัวเลือกในการแล้วท่อออกไปsetxkbmap
xkbcomp
สคริปต์แรปเปอร์นี้ใช้โครงร่างเป็นอินพุต:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
เท่าที่ไฟล์ที่มีเลย์เอาต์นั้นสมมติว่าเราต้องการขยายเลย์เอาต์ "US international" ซึ่งใช้สี่ระดับ ก่อนอื่นเราตั้งค่าปุ่ม Shift ระดับ 3 และระดับ 5 ในลักษณะเดียวกับที่ Neo ทำ:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
ตอนนี้เราต้องการเพิ่มตัวละครพิเศษ ลองใช้สี่ปุ่มแรกของรูปแบบ Qwerty เป็นตัวอย่าง ปุ่มเหล่านี้เป็นQ
ไปR
ซึ่งสอดคล้องกับการ<AD01>
<AD04>
ก่อนอื่นเราต้องทำให้กุญแจสามารถใช้งานได้มากถึงแปดระดับ:
key.type[Group1] = "EIGHT_LEVEL";
สำหรับแรกสี่ระดับเพื่อที่จะไม่ redefine NoSymbol
พวกเราแผนที่ให้พวกเขา จากนั้นเราเพิ่มสองระดับ ในระดับ 5 เราเพิ่มลูกศร←↓↑→
(† 2) ในระดับ 6 เราเพิ่มปุ่มทิศทาง การจัดวางของเรามีลักษณะดังนี้:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
ในการใช้งานเราสามารถใช้สคริปต์ตัวตัดคำที่เราสร้างขึ้น:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo อยู่de(neo)
ใน Xkb; setxkbmap "de(neo)"
.
† 2: เพื่อที่จะหาชื่อสัญลักษณ์ที่ใช้ XKB keysymdef.h
ค้นหาไฟล์ชื่อ X11/
มันควรจะอยู่ภายใต้ไดเรกทอรีชื่อ คุณยังสามารถใช้ชื่อ Unicode ได้เช่นU2192
U + 2192