เป็นไปได้ไหมที่จะทำการแมประบบปุ่ม CapsLock ใหม่อีกครั้งเช่นเมื่อกดปุ่ม CapsLock ด้วยตัวเองมันจะทำหน้าที่เป็นปุ่ม Escape และเมื่อกดด้วยปุ่มอื่นมันจะทำหน้าที่เป็นปุ่มควบคุมหรือไม่?
เป็นไปได้ไหมที่จะทำการแมประบบปุ่ม CapsLock ใหม่อีกครั้งเช่นเมื่อกดปุ่ม CapsLock ด้วยตัวเองมันจะทำหน้าที่เป็นปุ่ม Escape และเมื่อกดด้วยปุ่มอื่นมันจะทำหน้าที่เป็นปุ่มควบคุมหรือไม่?
คำตอบ:
ฉันได้พบทางออกที่ดีมากเรียกว่าXcape จาก README:
xcape ทำงานเป็น daemon และดักจับปุ่มควบคุม หากมีการกดและปล่อยปุ่มควบคุมด้วยตัวมันเองมันจะสร้างเหตุการณ์คีย์ Escape
วิธีนี้เหมาะสมกว่าถ้าคุณได้กำหนดรหัส Caps Lock ใหม่เป็นควบคุม โปรแกรมในอนาคตเวอร์ชันนี้อาจทำการแมปนั้นให้คุณ แต่ตอนนี้นี่คือสิ่งที่คุณต้องทำด้วยตัวเอง
ฉันแม็พ Caps to Escape เพื่อให้พิมพ์ใน Vim สบายขึ้น ผมใช้และใส่ในครั้งนี้xmodmap
~/.Xmodmap
clear Lock
keycode 0x42 = Escape
วิธีสมัคร: xmodmap ~/.Xmodmap
. คุณสามารถใส่สิ่งนี้ลงในไฟล์เช่น ~ / .bash_profile (ฉันใส่ใน ~ / .xinitrc เพราะฉันไม่ได้ใช้ตัวจัดการการเข้าสู่ระบบ
ต้องการแม CapsLock + [อื่นที่สำคัญ] xbindkeys
พิจารณาใช้
วิธีแก้ปัญหาสำหรับ Linux เท่านั้นสำหรับการแมปคีย์ทั้งระบบคือการเขียนกฎ udev อย่างง่าย มันจะไม่ขึ้นอยู่กับ X จะทำงานกับเทอร์มินัลหรือแอพใด ๆ และพกพาได้ระหว่างการติดตั้งลีนุกซ์รุ่นล่าสุดโดยเพียงแค่คัดลอกไฟล์สองไฟล์
คุณต้องเขียนไฟล์ 2 ไฟล์: ไฟล์หนึ่งมีกฎ udev ซึ่งบอกให้เคอร์เนลทำการแมปคีย์และอีกไฟล์หนึ่งมีการแม็พจริงที่คุณต้องการ
ใช้วิธีนี้ฉันได้ทำการแมปแป้นพิมพ์ใหม่ทั้งหมดบางทีรหัสอาจมีประโยชน์ในการสร้างแรงบันดาลใจhttp://git.adirat.com/carpalx-keyboard
ฉันได้สร้างเครื่องมือใน C เป็นพิเศษเพื่อจุดประสงค์นี้ที่เอาชนะปัญหาหลายอย่างด้วยโซลูชัน xcape / xmodmap :
ฉันพบคำถามที่ต่างออกไปใน 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