มันเป็นไปได้ที่จะสลับซ้ายShiftและซ้ายCTRLปุ่มใช้setxkbmap
แทนxmodmap
?
แก้ไข
ฉันได้เปลี่ยนมาใช้Fcitxซึ่งทำงานได้ดีกว่ากับรูปแบบแป้นพิมพ์และรูปแบบแป้นพิมพ์ที่กำหนดเองได้ดีกว่า IBus ทุกประการ ฉันขอแนะนำอย่างยิ่ง
มันเป็นไปได้ที่จะสลับซ้ายShiftและซ้ายCTRLปุ่มใช้setxkbmap
แทนxmodmap
?
แก้ไข
ฉันได้เปลี่ยนมาใช้Fcitxซึ่งทำงานได้ดีกว่ากับรูปแบบแป้นพิมพ์และรูปแบบแป้นพิมพ์ที่กำหนดเองได้ดีกว่า IBus ทุกประการ ฉันขอแนะนำอย่างยิ่ง
คำตอบ:
xmodmap
ล้าสมัย; ดังนั้นแน่นอนควรทำด้วยxkb
เครื่องมือ
การสลับที่คุณต้องการดูเหมือนจะไม่รวมอยู่ในไฟล์ X11 ที่เป็นค่าเริ่มต้น ดังนั้นคุณต้องเขียนเอง
หน้าhttp://madduck.net/docs/extending-xkb/ช่วยให้ฉันเข้าใจและหาวิธีที่จะทำ
สร้างไฟล์~/.xkb/keymap/mykbd
ที่คุณใส่ผลลัพธ์setxkbmap
มันจะเป็นคำจำกัดความแป้นพิมพ์ฐานของคุณ เช่น:
setxkbmap -print > ~/.xkb/keymap/mykbd
จากนั้นสร้างไฟล์สัญลักษณ์เพื่อกำหนดการสลับคีย์ของคุณใส่ไว้ใน ~/.xkb/symbols/myswap
ที่นั่นใส่บรรทัดต่อไปนี้:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
จากนั้นแก้ไข~/.xkb/keymap/mykbd
ไฟล์และเปลี่ยนxkb_symbols
บรรทัดเพื่อเพิ่ม
+myswap(swap_l_shift_ctrl)
ในที่สุดคุณสามารถโหลดได้ด้วยxkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(คุณไม่สามารถใช้-I
พารามิเตอร์"~" ได้) มันอาจจะคายคำเตือนมากมายเกี่ยวกับสัญลักษณ์ที่ไม่ได้กำหนดสำหรับคีย์ที่หายากบางตัว แต่คุณสามารถเพิกเฉยต่อมัน2> /dev/null
ได้
หากคุณต้องการที่จะสามารถสลับระหว่าง ctrl / กลับด้านปกติและกลับด้านได้อย่างง่ายดาย เพียงแค่สร้างภายใต้~/.xkb/keymap/
ไฟล์อื่นโดยไม่ต้องพิเศษ "myswap" xkbcomp
ตัวเลือกและโหลดด้วย คุณสามารถสร้างสคริปต์ขนาดเล็กสองสคริปต์เพื่อโหลดได้
xkbcomp $DISPLAY some.dump
ก่อนและก่อนที่จะโทรหา IBus และทำสิ่งที่แตกต่างระหว่างการทิ้งทั้งสอง (นั่นคือการกำหนดแป้นพิมพ์ที่สมบูรณ์); คุณอาจจะเห็นความแตกต่าง
setxkbmap -option caps:escape
งานได้ IBus จดจำปุ่มสลับที่ Esc และ Caps_Lock แต่มันไม่ได้ทำสำหรับปุ่ม Shift ซ้ายและปุ่มควบคุมด้านซ้าย
ฉันพบปัญหาบางอย่างในการทำแผนที่LALT
เพื่อControl_L
ใช้โซลูชันของ Pabloดูเหมือนว่าคุณจำเป็นต้องตั้งค่าmodifier_map
ตัวเลือกเช่นกัน
ฉันคัดลอกแม่แบบจาก/usr/share/X11/xkb/symbols/altwin
- มองหาxkb_symbols "ctrl_alt_win"
- และแก้ไขเพื่อตั้งค่าการเปลี่ยนแปลงต่อไปนี้:
~/.xkb/symbols/myswap
ไฟล์สุดท้ายคือ:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
ฉันยังเพิ่ม-w0
กับxkbcomp
คำสั่งที่จะหลีกเลี่ยงการส่งออกการเตือนใด ๆ เมื่อเปิดเปลือกใหม่
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** การสลับระหว่าง Mac กับ Linux ฉันชอบมีปุ่มควบคุมสองปุ่มบน Linux เพื่อประมาณแป้นพิมพ์ Mac สำหรับหน่วยความจำกล้ามเนื้อของฉัน