ทำการแมป CapsLock เพื่อ Escape และควบคุมระบบใหม่


18

เป็นไปได้ไหมที่จะทำการแมประบบปุ่ม CapsLock ใหม่อีกครั้งเช่นเมื่อกดปุ่ม CapsLock ด้วยตัวเองมันจะทำหน้าที่เป็นปุ่ม Escape และเมื่อกดด้วยปุ่มอื่นมันจะทำหน้าที่เป็นปุ่มควบคุมหรือไม่?


5
ดูเหมือนว่ามันจะยากมาก ตัวอย่างเช่นมันไม่สามารถสร้างกิจกรรมการลงกุญแจได้เนื่องจากคุณไม่รู้ว่ามีการกดแป้นใด ถ้ามันถูกปล่อยออกมาโดยไม่ต้องกดคีย์อื่นแสดงว่าเป็น Escape มิฉะนั้นจะเป็นปุ่มควบคุม
cjm

คำตอบ:


16

ฉันได้พบทางออกที่ดีมากเรียกว่าXcape จาก README:

xcape ทำงานเป็น daemon และดักจับปุ่มควบคุม หากมีการกดและปล่อยปุ่มควบคุมด้วยตัวมันเองมันจะสร้างเหตุการณ์คีย์ Escape

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


ฉันทำแฮ็คสคริปต์เพื่อทำสิ่งนี้: github.com/cmatheson/super-caps
cam

6

ฉันแม็พ Caps to Escape เพื่อให้พิมพ์ใน Vim สบายขึ้น ผมใช้และใส่ในครั้งนี้xmodmap~/.Xmodmap

clear Lock
keycode 0x42 = Escape

วิธีสมัคร: xmodmap ~/.Xmodmap. คุณสามารถใส่สิ่งนี้ลงในไฟล์เช่น ~ / .bash_profile (ฉันใส่ใน ~ / .xinitrc เพราะฉันไม่ได้ใช้ตัวจัดการการเข้าสู่ระบบ

ต้องการแม CapsLock + [อื่นที่สำคัญ] xbindkeysพิจารณาใช้


4

วิธีแก้ปัญหาสำหรับ Linux เท่านั้นสำหรับการแมปคีย์ทั้งระบบคือการเขียนกฎ udev อย่างง่าย มันจะไม่ขึ้นอยู่กับ X จะทำงานกับเทอร์มินัลหรือแอพใด ๆ และพกพาได้ระหว่างการติดตั้งลีนุกซ์รุ่นล่าสุดโดยเพียงแค่คัดลอกไฟล์สองไฟล์

คุณต้องเขียนไฟล์ 2 ไฟล์: ไฟล์หนึ่งมีกฎ udev ซึ่งบอกให้เคอร์เนลทำการแมปคีย์และอีกไฟล์หนึ่งมีการแม็พจริงที่คุณต้องการ

ใช้วิธีนี้ฉันได้ทำการแมปแป้นพิมพ์ใหม่ทั้งหมดบางทีรหัสอาจมีประโยชน์ในการสร้างแรงบันดาลใจhttp://git.adirat.com/carpalx-keyboard


ลิงค์นี้เสียแล้วคุณช่วยอัพเดทได้ไหม? ขอบคุณ!
qed

ฉันอัปเดตแล้วขออภัยในความล่าช้า
gimmesudo

Bitbucket กล่าวว่า "คุณไม่สามารถเข้าถึงที่เก็บนี้" คุณสามารถทำให้เป็นสาธารณะอีกครั้งได้หรือไม่ ขอบคุณ!
Tianyi Cui

@TianyiCui ตรวจสอบลิงค์ได้แล้ว
gimmesudo

1
ลิงก์นี้ใช้งานไม่ได้หรือถูกบล็อคสำหรับฉัน โอกาสใดที่คุณสามารถวางไฟล์จริงในคำตอบของคุณ?
เขาวงกต


1

ฉันพบคำถามที่ต่างออกไปใน AskUbuntu ซึ่งมีคำตอบที่ดีแต่ฉันต้องแก้ไขเล็กน้อยเพื่อให้ทำงานบนระบบของฉัน

ต่อความคิดเห็นของ Louis และ Sergiy ตรงนั้นฉันพบกับโซลูชันนี้ที่ทำงานกับฉันใน Ubuntu 16.04 (Xenial) และฉันจะนำมันไปกับระบบ Linux อื่น ๆ ที่ฉันใช้

ฉันติดตั้งxcapeและใส่รหัสต่อไปนี้ลงใน.profileไฟล์ในโฮมไดเร็กตอรี่ของฉัน

วิธีการอัพเดท:

เนื่องจากผู้จัดการการแสดงผลต่าง ๆ (gdm / kdm / sddm / etc) ทำงานในลักษณะที่แปลกและรีเซ็ตsetxbmapหลังจากหยุดชั่วคราว / ดำเนินการต่อหรือล็อค / ปลดล็อคฉันได้ค้นพบวิธีการตั้งค่าตัวเลือกในแบบที่พวกเขาสืบทอดและสวม ' ไม่รีเซ็ตตลอดเวลา เนื่องจากฉันหยุดชั่วคราวและทำงานต่อจำนวนมากฉันจึงต้องตรวจสอบให้แน่ใจว่าฉันไม่ได้รับสำเนาการxcapeทำงานจำนวนมากซึ่งได้รับการแก้ไขในสคริปต์ใหม่ด้านล่าง

ขั้นแรกให้แก้ไขการsudo gedit /etc/default/keyboardกำหนดค่าแป้นพิมพ์ด้วยและตั้งค่าXKBOPTIONS="ctrl:nocaps"จากนั้น~/.xprofileใส่บรรทัดเดียวด้านล่าง

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

หวังว่าส่วนต่างๆของสคริปต์จะช่วยคุณประหยัดเวลา / ปัญหาและป้องกันการเข้าสู่ระบบที่ติดอยู่ ก่อนอื่นจะตรวจสอบว่ามีอินสแตนซ์ที่ใช้งานอยู่แล้วและฆ่ามันเนื่องจากสิ่งเดียวเท่านั้นxcapeคือแผนที่ Ctrl ถึง Esc สิ่งนี้ปลอดภัยจากนั้นhashส่วนที่ทำให้แน่ใจว่าคุณได้xcape ติดตั้งมิฉะนั้นระบบของคุณจะหยุดทำงานเมื่อคุณพยายามเข้าสู่ระบบ สคริปต์คาดว่าจะออกอย่างหมดจด

วิธีเก่า:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

Sergiy:

ฉันใช้ gnome-tweak-tool เพื่อแมป Caps Lock กับ Ctrl เนื่องจากไม่มีเค้าโครงแป้นพิมพ์ในการตั้งค่าระบบใน Ubuntu 14.04 xcape -e 'Control_L = Escape' ไม่ทำงาน แต่หลังจากใช้ xcape -d ฉันค้นพบแล้วว่า Caps Lock สร้างรหัส key 66 และทำการแมปใหม่ตามลำดับ: xcape -e '# 66 = Escape' - Sergiy Byelozyorov 4 กันยายน '14 ที่ 10:08

หลุยส์:

ตามโพสต์บล็อกนี้คุณสามารถทำได้ด้วย xcape เพียงอย่างเดียว: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'ตัวพิมพ์ใหญ่: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau 4 สิงหาคม '15 เวลา 10:06

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