ฉันจะทำให้ปุ่ม 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.