ฉันจะทำให้ปุ่ม Caps Lock เป็นปุ่ม Shift ที่สามได้อย่างไร


19

ฉันจะทำให้ปุ่ม Caps Lock ทำงานได้เหมือนกับปุ่ม Shift อื่นได้อย่างไร

มีคำถามมากมายเกี่ยวกับการมอบหมายใหม่หรือให้เรียกใช้คำสั่งที่กำหนดเอง ฉันแค่อยากให้มันทำงานเหมือนกับปุ่ม Shift อื่น ฉันไม่ต้องการให้ปุ่มอื่น ๆ เปลี่ยนสิ่งที่พวกเขาทำเพียงปุ่มเดียว

การทำงานของแป้นคีย์เลย์เอาต์ / Caps Lock จะไม่ทำงานฉันไม่เข้าใจวิธีการแมปใหม่ใน CCSM

ตอนนี้ฉันกำลังใช้แป้นพิมพ์ของสหราชอาณาจักร แต่ฉันเรียนรู้ที่จะพิมพ์บนแป้นพิมพ์สหรัฐฯแป้น Shift ซ้ายที่เล็กกว่าคือการขับ ME NUTS



1
@ David-yourfriend OP กล่าวโดยเฉพาะxmodmapว่าไม่ได้ผล
— TheWanderer

1
ใน xkb สิ่งนี้ดูเหมือนจะเกี่ยวข้องกับแผนที่ความเข้ากันได้ซึ่งแปลการผสมคีย์บางอย่างเป็นการกระทำแทนที่จะเป็นสัญลักษณ์ จะใช้เวลาวิจัยและทดสอบมากกว่าที่ฉันมีอยู่ในขณะนี้ ถ้าฉันมีโอกาสฉันจะขุดเข้าไปในนี้ต่อไปถ้าไม่ใช่เศษขนมปังนี้อาจนำพาคนอื่นไปในทิศทางที่ถูกต้อง
— Elder Geek

คำตอบ:


14

การขยายคำตอบที่ @ Zacharee1:

ทำการสำรองข้อมูลด้วย cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

จากนั้นแก้ไขด้วยgksu gedit /usr/share/X11/xkb/symbols/pcหรือตัวแก้ไขที่คุณโปรดปราน

ค้นหาบรรทัด (22) ที่ระบุว่า:

key <CAPS> { [ Caps_Lock ] };

และเปลี่ยนเป็น

key <CAPS> { [ Shift_L ] };

และบรรทัด (36) ที่บอกว่า:

modifier_map Lock { Caps_Lock };

และเปลี่ยนเป็น

//modifier_map Lock { Caps_Lock }; (ซึ่งควรคอมเม้นต์มันเพื่อปิดการล็อค)

การทดสอบแสดงให้เห็นว่าNum Lockยังคงทำงานได้ตามที่คาดไว้ การทดสอบเพิ่มเติมบ่งชี้ว่าไฟแสดงสถานะแป้นพิมพ์ดูเหมือนว่าจะเป็นบิต dyslexic ใน 16.04 แม้ในระบบที่ไม่มีการแก้ไข ตัวบ่งชี้ที่เลื่อนล็อคเมื่อเข้าสู่ระบบ แต่เลื่อนล็อคออกและ Num ล็อคไฟ แต่ Num ล็อคใน การแตะCtrlคีย์ซ้ายดูเหมือนว่าจะแก้ไขพฤติกรรมนี้และฉันไม่แน่ใจว่าเกี่ยวข้องกับการใช้สวิตช์ KVM ของฉันหรือไม่ (ซึ่งเป็นไปได้)

หมายเหตุ:การทดสอบเพิ่มเติมแสดงให้เห็นว่าไฟแสดงสถานะ NumLock ไม่สม่ำเสมอแม้ว่าจะไม่มีสวิตช์ KVM และจะต้องทำการแตะสองครั้งเพื่อซิงค์กับ NumLock หากคุณปล่อยทิ้งไว้คุณสามารถมองข้ามแสงไฟหรือหากมันรบกวนคุณคุณสามารถแตะมันได้ สองครั้งเพื่อให้ข้อมูลตรงกัน เหตุใดสิ่งนี้จึงเป็นพื้นฐานสำหรับคำถามใหม่ ...

อีกวิธีการแก้ไขปัญหาเดิมของคุณคือการได้รับแป้นพิมพ์ของสหรัฐอเมริการาคาไม่แพงและใช้การจับคู่แป้นพิมพ์ของสหรัฐอเมริกา

แหล่งที่มา: @ Zacharee1 คำตอบและการวิเคราะห์ของ/usr/share/X11/xkb/symbols/pcและการทดลองและการทดสอบข้อผิดพลาด


ดังนั้นคุณต้องปิดการใช้งานสิ่งที่บรรทัดที่ 36? เพียงแค่เปลี่ยนShift_Lเป็นเพียงพอที่จะปิดการใช้งาน capslock สำหรับฉันอย่างสมบูรณ์
— TheWanderer

@ Zacharee1 ฉันคิดว่ามันอาจเป็นสาเหตุของผลกระทบต่อ Numlock ที่ Tom Brossman พูดถึงในความคิดเห็นในโพสต์ของคุณและนำออกมาด้วยเหตุผลนั้นเท่านั้น
— Elder Geek

อืมมม นั่นอาจเป็นได้ ฉันเห็นว่าฉันสามารถให้ Zanna ทดสอบกับ VM ได้หรือไม่เพราะเธอมีกระดานในสหราชอาณาจักร
— TheWanderer

@ Zacharee1 มันจะเท่ห์เพราะฉันไม่มีฮาร์ดแวร์ที่พร้อมสำหรับการทดสอบและมักใช้ตรรกะในกรณีที่ไม่สามารถทำการทดสอบแบบสมบูรณ์ได้
— Elder Geek

ในที่สุดก็ทำการทดสอบและใช้งานได้ (อย่างน้อยตอนนี้) เป็นเรื่องแปลกที่ไฟ Num Lock บนแป้นพิมพ์ของฉันดับ แต่ปุ่มตัวเลขพิเศษจะถูกเปิดใช้งานตามค่าเริ่มต้นเมื่อฉันเข้าสู่ระบบและนั่นคือสิ่งที่ฉันเป็นหลังจากนั้น ขอบคุณ!
— Tom Brossman

10

คุณสามารถไปที่นั่นได้โดยการปรับเปลี่ยนวิธีการทำ CapsLock เพื่อผลิต“ a”? (ตัวอย่างเช่น).

ลบLockตัวปรับแต่ง (= Caps Lock) ออกจากCaps Lockคีย์และประกาศว่าคีย์นี้ส่งShift_Lkeysym

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

หรือคุณสามารถลบLockตัวดัดแปลงและเพิ่มShiftตัวแก้ไขได้

remove Lock = Caps_Lock
add Shift = Caps_Lock

~/.Xmodmapทั้งสองวิธีเส้นเหล่านี้ไปลงในแฟ้ม ทดสอบโดยโหลดด้วยxmodmap ~/.Xmodmap; ไฟล์จะถูกอ่านโดยอัตโนมัติเมื่อคุณเข้าสู่ระบบภายใต้สภาพแวดล้อมเริ่มต้น (หรืออย่างน้อยก็เป็นในวัน Gnome)


2
สมบูรณ์แบบที่ได้ผล ฉันสร้างเอกสารเปล่าใหม่ในโฮมไดเร็กตอรี่ของฉันชื่อ '.Xmodmap' และวางตัวอย่างแรกของคุณลงไป จากนั้นฉันพิมพ์ 'xmodmap ~ / .Xmodmap' ในเทอร์มินัลเพื่อให้มีผลทันที คำอธิบายเหล่านี้ทั้งคู่อยู่ในคำตอบที่เชื่อมโยงกัน ขอขอบคุณ.
— Tom Brossman

คำสั่งชุดที่สองไม่ทำงานสำหรับฉัน แต่คำสั่งแรกใช้งานได้ดี การกดปุ่ม Caps Lock ไม่ได้เปิดไฟของแป้นพิมพ์ด้วยซ้ำดังนั้นมันจึงไม่เรียกใช้ OCD แฝงของฉัน
— Waldir Leoncio

คำตอบที่ดี Gilles! เพียงเพิ่มคำตอบของคุณสิ่งนี้สามารถทำได้ด้วยคำสั่งเดียวเช่นกันxmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" และเลิกด้วยsetxkbmap -option ซึ่งไม่ได้เขียนลง~/.Xmodmapไฟล์ แต่สามารถใช้เมื่อจำเป็นและเพิ่มลงในแอปพลิเคชันเริ่มต้น คำตอบที่ดีมาก!
— Sergiy Kolodyazhnyy

7

ไม่สนใจความพยายามครั้งก่อนในการตอบคำถามที่ล้มเหลวฉันพบสิ่งที่เปลี่ยน capslock เป็นการเปลี่ยนด้านซ้ายอย่างสมบูรณ์ ไม่มีการสลับฉันคิดว่ามันคงอยู่และมันค่อนข้างง่าย

ก่อนอื่นฉันขอแนะนำให้ทำการสำรองข้อมูลก่อนที่จะแนะนำวิธีการเปลี่ยนแปลง

วิ่ง sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

ตอนนี้มีการสำรองข้อมูลไปที่การแก้ไข

ใช้เท็กซ์เอดิเตอร์ที่คุณชื่นชอบเพื่อแก้ไขไฟล์นี้เป็นรูท:

/usr/share/X11/xkb/symbols/pc

ค้นหากลุ่มที่มีลักษณะเช่นนี้ (ใกล้กับด้านบนบรรทัดที่ 22 สำหรับฉัน):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

แก้ไข

key <CAPS>  {   [ Caps_lock             ]   };

เป็น

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

แทน. ( Caps_LockหลังShift_L,อาจไม่จำเป็น)

รีสตาร์ทเครื่องมือจัดการหน้าจอของคุณ (ปกติsudo service lightdm restart) และ capslock จะถูกเปลี่ยน ( หมายเหตุ:เครื่องทดสอบของฉันใช้ GNOME ดังนั้นฉันจึงต้องรีสตาร์ทgdmอย่างไรก็ตามนั่นทำให้เกิดการสั่นไหวแปลก ๆ ในทางเลือก TTY และgdmไม่เคยรีสตาร์ทเลยฉันต้องรีบูตอย่างสมบูรณ์)

อันนี้ฉันสามารถทดสอบได้จริงและสามารถยืนยันได้

ดัดแปลงมาจากxmodmap แบบถาวรใน Ubuntu 13.04


ขอบคุณ แต่สิ่งนี้รบกวนกับ Num Lock ซึ่งฉันจะไปอย่างถาวร ในการแก้ไขปัญหาเบื้องต้นของฉันการเปลี่ยน Caps_lock> Shift_L /usr/share/X11/xkb/symbols/capslockยังรบกวน Num Lock ด้วย มีบางอย่างที่แตกต่างกันประมาณ 16.04 ตัวอย่างเช่นไฟ Num Lock ที่ใช้ในการบูต แต่ตอนนี้มันออกไปที่การเข้าสู่ระบบ LightDM เมื่อฉันทดสอบโซลูชันของคุณจะเปลี่ยน Caps Lock เป็น Shift แต่ครั้งแรกที่ฉันกด Caps Lock Num Lock จะสลับไปและฉันต้องกด Num Lock สองครั้งเพื่อกลับสู่สถานะเดิม (เฉพาะครั้งแรก) แปลกประหลาด ขอขอบคุณสำหรับความช่วยเหลือจนถึงแม้ว่า
— Tom Brossman

บางทีฉันต้องถามคำถามใหม่ "วิธีป้องกัน Caps Lock ทำการแมปสัญญาณรบกวนใหม่ด้วย Num Lock ในวันที่ 16.04" แต่ฉันชอบที่จะหาสาเหตุที่นี่ ทั้งที่หรือถึงเวลาที่จะเปิดแป้นพิมพ์ขึ้นและทำให้การปรับเปลี่ยนทางกายภาพบางอย่างเพื่อให้มัน ...
— ทอม Brossman

แปลก. Numlock ใช้งานได้อีกxkbset nullify lockหรือไม่ถ้าคุณทำงาน
— TheWanderer

@ TomBrossman ฉันไม่รู้ว่าสิ่งนี้จะเปลี่ยนแปลงอะไรให้คุณบ้างไหม แต่มันใช้ได้ผลกับฉันไหม แทนที่จะเป็นเพียงการใส่ในShift_L Shift_L, Caps_Lockตรวจสอบให้แน่ใจว่าวงเล็บอยู่ในแนวตั้ง
— TheWanderer

1
@ TomBrossman ฉันชอบที่จะใช้ sudo ถ้ามันไม่เป็นอันตรายเพียงเพื่อให้แน่ใจว่า: p เมื่อฉันแก้ไขไฟล์ L สำหรับการเปลี่ยนเป็นตัวพิมพ์ใหญ่และตัวพิมพ์ใหญ่จะล็อค แปลก. สิ่งที่ NumLock นั้นก็แปลกเพราะมันใช้ได้ดีสำหรับฉัน สิ่งทั้งหมดนี้แปลก: p
— TheWanderer

3

สำหรับ 14.04

หนึ่งซับ:

xmodmap -e 'keycode 66=Shift_L'

แต่ในกรณีที่ไม่คาดคิด66ไม่ใช่รหัสที่ถูกต้องให้เรียกใช้xevในคอนโซลและกดCapsLockก่อน จากนั้นคุณจะเห็นสิ่งที่ชอบ:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

keycode XXที่ถูกต้องเป็นหนึ่งที่ระบุไว้ใน


1
Xmodmap trick no longer works and xkb handles this now.ดูข้อความโปรดปราน:
— TheWanderer

พุทโธ่! มันเป็นเพราะของ 16.04? มันใช้งานได้กับ 14.04 ของฉัน ดูเหมือนว่าจะไม่มีการระบุความคิดเห็นจำนวนมาก

ฉันไม่ได้ทำเงินรางวัลดังนั้นฉันไม่รู้จริงๆ
— TheWanderer

ขออภัยนี่สำหรับการติดตั้งครั้งใหม่ 16.04 ปุ่ม Shift ซ้ายหรือขวาน่าจะดีฉันเลือกไปทางซ้ายสำหรับคำถามเพราะมันอยู่ติดกันและxevเห็นว่าเป็นปุ่มที่แตกต่างกัน
— Tom Brossman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.