วิธีเปิดใช้งานปุ่ม caps lock อีกครั้ง?


12

ฉันกำลังตั้งค่าเค้าโครงแป้นพิมพ์เริ่มต้นของฉันเช่นนี้:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

มันปิดการใช้งานปุ่ม caps lock และทำให้มันเป็นปุ่ม ctrl เพิ่มเติมพร้อมกับฝูงตัวเลือกอื่น ๆ

ฉันต้องการทำสิ่งต่อไปนี้เพื่อสลับเค้าโครงแป้นพิมพ์:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

อย่างไรก็ตามจะไม่เปิดใช้งานปุ่ม caps lock อีกครั้ง ทั้งปุ่มควบคุมด้านซ้ายและปุ่มตัวล็อคยังคงเป็นปุ่มควบคุมเท่าที่ฉันเห็น

ฉันรู้ว่าฉันสามารถล้างรายการตัวเลือกทั้งหมดได้ แต่เพื่อประโยชน์ในการบำรุงรักษาฉันจะไม่คัดลอกตัวเลือกอื่น ๆ ฉันจะเปิดใช้งานการล็อคแคปได้อย่างไร?

อัปเดต: ดูที่การกดปุ่มด้วย xev (1) จะปรากฏ ctrl: nocaps ให้Control_Lทั้งสองปุ่มและ ctrl: swapcaps "คืนค่า" ปุ่ม caps lock (กดปุ่มให้Caps_Lock) อย่างไรก็ตามไฟ LED Caps Lock ไม่สว่างขึ้นหรือใช้งานได้จริง

การดูxkeyboard-config/symbols/ctrlไฟล์ในแหล่งข้อมูล X.org จะบอกใบ้ปัญหา:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

ตัวเลือกหลังไม่มีบรรทัด modifier_map ไม่ว่าจะทำอะไรก็ตาม


ฉันเดาว่าทุกคนที่พยายามจะช่วยฉันติดคีย์บอร์ดให้กับ dvorak = (
hhaamu

4
X เก่าและซับซ้อนมากในขณะนี้ที่มีไม่มากนักที่เข้าใจกลไกภายในที่หลากหลาย แม้จะมีส่วนต่าง ๆ ใน man page ที่บอกว่า (และฉันพูดถึง): " ไม่มีใครต้องการพูดว่ามันทำงานอย่างไรบางทีไม่มีใครรู้ว่า ... " ฉันสนใจในการมองเห็นคำตอบสำหรับคำถามนี้เช่นกัน แต่มันอาจจะเป็นกรณีที่ไม่มีใครรู้ว่า ...
jw013

คำตอบ:


14

คำสั่งต่อไปนี้ควรใช้งานได้:

xmodmap -e 'keycode 0x42 = Caps_Lock'

หรือ

setxkbmap -option

คำสั่งดังกล่าวใช้งานได้ดีเพื่อเรียกคืนพฤติกรรมเริ่มต้นซึ่งฉันแทบจะไม่ต้องการเลยโชคดี

ปกติฉันทำการแมป capslock ใหม่เพื่อควบคุม (โชคดีที่ VI / VIM รองรับ CTRL-C แทน ESC) ด้วยคำสั่งต่อไปนี้:

setxkbmap -option ctrl:nocaps -layout gb

"setxkbmap -option" เพื่อล้างการตั้งค่าเป็นสิ่งที่ฉันกำลังมองหา ฉันพยายามเปลี่ยนพฤติกรรมของฉัน แต่มันยังคงผนวกรายการที่ขัดแย้งกันไว้ในรายการตัวเลือก
m0j0

2

ลอง setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

จาก manpage:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

ประชดคือที่นี่-option ctrl:swapcapsแทนที่จริง-option ctrl:nocaps- ฉันเดาพฤติกรรมเปลี่ยน

แก้ไข:ตามที่ระบุไว้ OP เขาต้องการหลีกเลี่ยงการล้างตัวเลือก (ดังที่ทำในวิธีการด้านบน)

/usr/share/X11/xkb/rules/xorg.lstแสดงตัวเลือกctrl:aa_ctrl(ควบคุมที่ด้านล่างซ้าย) ซึ่งดูเหมือนว่าจะรีเซ็ตตัวล็อคแคปหลังจากnocapsที่นี่

ฉันคิดว่ามันน่าลองและคุณยังสามารถดูรายการ ( grep ctrl\:) และดูว่ามีสิ่งอื่นที่อาจใช้งานได้หรือไม่ในกรณีนี้ไม่ได้

หากไม่มีตัวเลือกสำหรับสิ่งนี้ฉันคิดว่าทางออกคือแฮ็กคีย์แมปปัจจุบันโดยเชื่อมโยง Caps Lock กับปุ่ม Caps Lock อีกครั้ง (แต่ฉันไม่เคยมีประสบการณ์แบบนั้นนอกจากเชื่อว่ามีเครื่องมือที่ช่วยให้คุณทำ ด้วยหนึ่งซับ)


แต่ฉันต้องการเก็บตัวเลือกที่ไม่เกี่ยวข้องกับตัวพิมพ์ใหญ่ (ตามที่ฉันระบุในคำถาม) เช่นการเขียนคีย์
hhaamu

โอ้ขอโทษฉันอ่านคำถามผิด ฉันไม่แน่ใจว่าสิ่งนี้จะทำงานได้หรือไม่ (ตามที่ฉันระบุswapcapsจริง ๆ แล้วเปิดใช้งานตัวพิมพ์ใหญ่ที่นี่) แต่จาก/usr/share/X11/xkb/rules/xorg.lstฉันเห็นว่ามีตัวเลือกctrl:aa_ctrl( ตัวควบคุมที่ด้านล่างซ้าย) ซึ่งดูเหมือนว่าจะรีเซ็ตตัวพิมพ์ใหญ่หลังจากnocapsที่นี่
njsg

ฉันคิดว่าโปรแกรมเวทย์มนตร์เป็นxmodmapแต่ฉันไม่แน่ใจว่าจะใช้มันอย่างไร
hhaamu

0

มีตัวเลือก "ตัวพิมพ์ใหญ่: capslock" (ที่แม็พกับการเพิ่ม "+ capslock (capslock)" ไปยัง xkb_symbols) ที่เปิดใช้งานตัวพิมพ์ใหญ่

อย่างไรก็ตามตัวเลือกนั้น (อาจเป็นตัวพิมพ์ใหญ่ทั้งหมด: xxxxx?) ถูกเพิ่มไว้ข้างหน้า ctrl: ตัวที่มีอยู่แล้ว; เป็น ctrl: swapcaps กำหนดคีย์ capslock ใหม่ตัวเลือกนั้นไม่มีผล

ดังนั้นคุณจำเป็นต้องลบตัวเลือกทั้งหมดและใส่ตัวเลือกที่คุณต้องการ; มีตัวเลือกวิธีการที่พวกเขาไม่ควรจะยกเลิกการกระทำของก่อนหน้านี้และมีตัวเลือกที่ขัดแย้งกัน (เช่นสอง (หรือมากกว่า) ที่กำหนดคีย์เดียวกัน) คุณไม่สามารถกำหนดการเรียงลำดับได้

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