ฉันจะทำการแมปคีย์แคปล็อคใหม่ได้อย่างไร?


68

ในอดีตฉันเคยใช้xmodmapเพื่อป้องกันไม่ให้Caps Lockปุ่มทำงานและบอกLaunchyให้จัดการกับการกดปุ่มแทน ฉันไม่สามารถทำสิ่งนี้ได้อีกต่อไป

อะไรคือวิธีที่ดีที่สุดในการปิดใช้งานCaps Lockพฤติกรรมปกติและทำอย่างอื่น


สำหรับ Ubuntu 14.04 ดูaskubuntu.com/q/444714/25388
LéoLéopold Hertz 준영

คำตอบ:


70

จากhowtogeek.comซึ่งมีคำตอบที่ดีสำหรับระบบปฏิบัติการใด ๆ

สำหรับ Linux (รวมถึง Ubuntu):

setxkbmap -option <OPTION>

ไหน<OPTION>สามารถสำหรับตัวอย่างของ:

  • caps:none - ปิดใช้งาน Caps Lock
  • caps:super- Caps Lock กลายเป็นSuperเพิ่มเติม(aka Win key)
  • caps:ctrl_modifier- Caps Lock กลายเป็นเพิ่มเติมCtrl
  • caps:numlock- Caps Lock กลายเป็นNum Lockเพิ่มเติม
  • caps:escape- Caps Lock กลายเป็นเพิ่มเติมหนี
  • caps:backspace- Caps Lock กลายเป็นเพิ่มเติมBackspace
  • caps:swapescape - Caps Lock กลายเป็น Escape และ Escape จะกลายเป็น Caps Lock

หมายเหตุ: Xmodmap ถูกคัดค้าน setxkbmap


2
รักคุณคนขอบคุณมันใช้ได้กับ ubutnu 14.10
Andrzej Rehmann

1
ทำงานใน Ubuntu 15.10 เช่นกัน! ขอบคุณ!
donatello

5
ดีและเรียบง่ายทำงานได้ใน 16.04
chepyle

3
หากต้องการคืนค่าsetxkbmapการเปลี่ยนแปลงใด ๆ(เช่นถ้าคุณต้องการคีย์ Caps ของคุณกลับไปยังตำแหน่งเดิม) คุณเพียงแค่เรียกใช้สิ่งนี้:setxkbmap -option
landroni

หากคุณ remaped ปุ่ม Capslock เพื่อ backspace และตอนนี้คุณสงสัยว่าทำไมมันจะไม่ลบคำหากคุณกดมันก็เป็นเพราะคุณต้องใช้คำสั่งพิเศษ หลังจากsetxkbmap -option caps:backspaceป้อนxset r 66และvoilá
Gabriel

19

ใน Ubuntu 11.10 - 13.04

  1. เปิดแอปพลิเคชั่นเค้าโครงแป้นพิมพ์และคลิกปุ่ม "ตัวเลือก"
  2. รายการของตัวเลือกการปฏิเสธจะเกิดขึ้น เลือก "ลักษณะการทำงานของคีย์ Caps Lock"
  3. เลือกตัวเลือกการเปลี่ยนตำแหน่ง Caps Lock ที่คุณต้องการ

สกรีนช็อตของตัวเลือกที่มี


1
@JacobJohanEdwards หมายเหตุตนเองโปรดตรวจสอบว่าxmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'ยังใช้งานได้หรือไม่
Jjed

สำหรับผู้ใช้ที่เป็นกลุ่ม 'Practical Vim' แนะนำให้จับคู่ปุ่มตัวล็อคกับ ctrl ที่ระดับระบบ รูปแบบแป้นพิมพ์> ตัวเลือก> ตำแหน่งคีย์ Ctrl> Caps Lock ในขณะที่ Ctrlทำการหลอกลวง
rpattabi

11
การตั้งค่าเหล่านี้ไม่มีอยู่อีกต่อไปใน 13.10 ติดตั้งgnome-tweak-toolคุณจะมีการตั้งค่าที่คล้ายกันภายใต้ "การพิมพ์"
pcworld

สิ่งนี้ไม่ได้ผลสำหรับฉันใน Ubuntu 12.10 การล้อเล่นกับการตั้งค่าเหล่านั้นในศูนย์ควบคุมคำพังเพยนั้นดูเหมือนจะไม่มีผลอะไรเลย
Andrew Wagner

4
เหตุใดพวกเขาจึงลบตัวเลือกเหล่านี้ออกจาก 14.04
LéoLéopold Hertz 준영

18

คุณสามารถปิดการใช้งานได้โดยไปที่ keyboard-> Layouts-> options-> ลักษณะการทำงานของการล็อกตัวพิมพ์ใหญ่และเลือก "ปิดการใช้งานตัวพิมพ์ใหญ่"


แก้ไข :

ฉันไม่รู้ว่าทำไมมันดูไม่สะดวกกับแป้นคีย์บอร์ดอื่น

แต่ Launchy ทำงานได้ดีกับฉันหลังจากที่พยายามด้วยCTRL+ +SuperSpace

ป้อนคำอธิบายรูปภาพที่นี่

และคุณต้องทำรายการขาวlaunchyให้กับไอคอนถาด ดูฉันจะเข้าถึงและเปิดใช้งานไอคอนเพิ่มเติมให้อยู่ในถาดระบบได้อย่างไร . นอกจากนี้คุณต้องเพิ่มลงในแอปพลิเคชันเริ่มต้นเนื่องจากจะไม่ทำงานเมื่อไม่ได้เปิด


ท้าย ที่สุดก็เป็นอีกทางเลือกหนึ่งของ Launcy ลองใช้ไซแนปส์เพื่อการผสานรวมที่ดีที่สุดกับคำพังเพยและความสามัคคี


ตัวเลือกนี้ดูเหมือนจะไม่พร้อมใช้งานสำหรับฉันบน Ubuntu 15.04
MichielB

15

นี้เป็นพื้นการเปลี่ยนแปลงของคำตอบที่มีให้ ณhttps://askubuntu.com/a/223674/22073

XKBOptionนอกจากนี้คุณยังสามารถปรับเปลี่ยนพฤติกรรมของฝาล็อคใช้ การเปลี่ยนแปลงเหล่านี้จะถูกนำไปใช้กับคอนโซลเสมือน (/ dev / tty [1-6] หรือ Ctrl-Alt-F [1-6])

ตัวอย่างเช่นหากต้องการปิดใช้งาน Caps Lock คุณจะต้องมีสิ่งต่อไปนี้ใน/etc/default/keyboard:

# Check /usr/share/doc/keyboard-configuration/README.Debian for
# documentation on what to do after having modified this file.

# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:none"

# If you don't want to use the XKB layout on the console, you can
# specify an alternative keymap.  Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz

จากนั้นคุณจะเรียกใช้:

sudo dpkg-reconfigure keyboard-configuration

สำหรับรายชื่อเต็มของการปรับแต่งของ XKBOPTIONS /usr/share/X11/xkb/rules/base.lstที่จะดูที่ นี่คือรายการเต็มรูปแบบจากเครื่อง Ubuntu 13.10 ของฉัน: http://sprunge.us/cUZO

ข้อมูลเพิ่มเติมสามารถพบได้ใน ArchLinux wiki: https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Xorg


สมบูรณ์แบบฉันใช้XKBOPTIONS="ctrl:swapcaps"สลับ Ctrl ซ้ายกับ Caps
Márcio

มันทำงานได้ใน 16.04 ใน X และคอนโซลเสมือน
jfs

10

หากต้องการตั้งค่า caps_lock ที่ไม่มีประโยชน์ให้เป็นการเปลี่ยนพื้นฐานให้ทำ

xmodmap -e "keycode 66 = Shift_L"

สิ่งนี้ไม่คงอยู่หลังจากรีสตาร์ท
Czarek Tomczak

3
ในการทำให้มันคงอยู่หลังจากรีสตาร์ททำ: Ubuntu Dash Home> แอปพลิเคชันเริ่มต้น> เพิ่ม> พิมพ์คำสั่งด้านบน
Czarek Tomczak

6

วิธีการต่อไปนี้ใช้การผสมผสานของ Compiz เพื่อเรียกใช้แอปพลิเคชันเมื่อมีการกดปุ่ม

สรุป -

  1. เปลี่ยนพฤติกรรมของปุ่ม Caps Lock เพื่อเลียนแบบคีย์อื่น
  2. กำหนดค่า compiz เพื่อฟังคีย์ mimic'd ใหม่และเรียกใช้สคริปต์ที่กำหนดเอง

เปลี่ยนปุ่ม caps lock

เปลี่ยนพฤติกรรมของปุ่ม Caps Lock ด้วยคุณสามารถใช้xmodmapดังนี้

  • สร้างไฟล์เช่น "capslock"
  • คัดลอกและวางข้อมูลต่อไปนี้ลงในไฟล์
keycode 66 = cent
clear Lock
add Control = cent
  • ตอนนี้เรียกใช้ xmodmap เพื่อรับรู้การเปลี่ยนแปลงของคุณ:

xmodmap capslock

หากต้องการรันอย่างถาวรให้เพิ่มคำสั่งนี้ไปยังแอ็พพลิเคชันเริ่มต้น

กดปุ่ม Caps Lock ตอนนี้แค่เลียนแบบการกดปุ่ม "cent" โปรดทราบว่านี่ไม่ใช่กุญแจที่มีอยู่จริงบนแป้นพิมพ์ของฉัน

คุณสามารถได้รับรายชื่อของชื่อ keysym จากที่นี่

กำหนดค่า Compiz

เริ่มตัวจัดการการตั้งค่า CompizConfig

ในส่วนทั่วไปตรวจสอบให้แน่ใจว่า "คำสั่ง" เปิดใช้งานและกำหนดค่าคำสั่งตามที่แสดง:

ป้อนคำอธิบายรูปภาพที่นี่

NB เปิดใช้งานการรวมคีย์และใช้ "การรวมคีย์การจับ" เพื่อจดจำคีย์ "cent" ของคุณ คุณไม่สามารถรับ compiz ให้จดจำปุ่ม cap lock ได้อย่างน่าเสียดาย

ป้อนคำอธิบายรูปภาพที่นี่

ชัดเจน - เปลี่ยน "firefox" สำหรับคำสั่งใดก็ตามที่คุณใช้เพื่อเริ่ม "launchy"

ตอนนี้เมื่อคุณกดปุ่ม Caps Lock compiz จะรับรู้คีย์ "cent" ที่แมปและเรียกใช้คำสั่ง - ในกรณีนี้ firefox - ในกรณีของคุณ "launchy"


หลังจากการตั้งค่าไม่กี่นาทีกลับไป - และอีกครั้ง Caps Lock มีพฤติกรรมปกติ
Vitaly Zdanevich

5
  1. ใช้คำสั่ง xev เมื่อคุณกด Enter, xev จะเปิดขึ้น xev นำข้อมูลอินพุตและ Poops ทั้งหมดของคุณเกี่ยวกับคีย์ไปยังบรรทัดรับคำสั่ง ฉันแนะนำให้นำเม้าส์ไปที่ปุ่มออกของหน้าต่าง xev, กดปุ่ม caps lock (หรือปุ่มใด ๆ ที่คุณต้องการหาข้อมูล), และออกจาก xev ทันที บรรทัดที่เกี่ยวข้องในระบบของฉันสำหรับตัวพิมพ์ใหญ่ดูคล้ายกับ:

    KeyPress event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    

    ประกาศkeycode(66) และkeysym(0xffe5)

    ตอนนี้คุณสามารถรับข้อมูลสำหรับคีย์อื่น - อันที่คุณไม่ได้ใช้จริง ๆ และในบริบทที่คุณต้องการใช้ปุ่ม caps lock ในไม่ทำอะไรเลย ดังนั้นหากคุณต้องการให้แคปล็อคเปิดใช้งาน Unity searchbox (เช่น super ปกติแล้ว) อาจใช้ `ตัวอย่างเช่น บนเครื่องของฉัน:

    keycode 49 (keysym 0x60, grave)
    
  2. ผูกฟังก์ชั่นของคีย์ใหม่เข้ากับปุ่ม Caps Lock โดยใช้ xmodmap ฉันค่อนข้างมั่นใจว่าคุณต้องการใช้คำสั่งเช่น:

    xmodmap -e "keycode 66=0x60"
    

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

  3. ทดสอบเพื่อให้แน่ใจว่าคำสั่งที่ฉันให้คุณทำงานตามที่คุณต้องการ

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

  5. เต้นรำ.

(ตะโกนออกมาด้วยความประหลาดใจ) เปลี่ยน Keybindings (ฮาร์ดแวร์กับซอฟต์แวร์)

นอกจากนี้สำหรับความช่วยเหลือเพิ่มเติมเกี่ยวกับ xmodmap:

http://www.xfree86.org/4.2.0/xmodmap.1.html

http://www.in-ulm.de/~mascheck/X11/xmodmap.html


4

Ubuntu 16.04

setxkbmap -option <OPTION> จากคำตอบของ Wernight ดูเหมือนจะทำงานได้ทันทีสำหรับฉัน

อย่างไรก็ตามมันจะหายไปเมื่อรีบูต เพื่อที่อยู่นี้ฉันได้เพิ่มลงในโปรแกรมเริ่มต้น

  1. ค้นหาและเรียกใช้Startup Applications>> คลิกเพิ่ม
  2. ใส่/usr/bin/setxkbmap -option <OPTION>เป็นคำสั่ง (หมายเหตุ: เส้นทางแบบเต็มเป็นสิ่งสำคัญ)

แทนที่<OPTION>ด้วยสิ่งที่ชอบcaps:escape(ฉันใช้สำหรับ vi)

พื้นหลัง

ฉันเพิ่งอัพเกรดจาก 15.10 เป็น 16.04 และสิ่งที่ฉันใช้ในการทำแผนที่สิ่งนี้ก่อนที่จะหยุดทำงาน


2

ตัวเลือกที่ฉันพบว่าดีที่สุดสำหรับฉัน (ใน X ที่รองรับ wm / de ใด ๆ ) กำลังเพิ่ม

Option "XkbOptions" "caps:swapescape"

ข้างใน

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "US"
    Option "XkbOptions" "caps:swapescape" # << is what you want
EndSection

บล็อกใน /etc/X11/xorg.conf.d/00-keyboard.conf (สร้างหากจำเป็น)


1

ในขณะที่แน่นอนว่าตัวเลือก xmodmap จะใช้งานได้ฉันต้องการค้นหาตัวเลือกที่ใช้ GUI สิ่งนี้มีให้สำหรับฉัน (ใช้ Ubuntu 15.10):

  • ติดตั้ง gnome-tweak-tool
  • ไปที่ 'พิมพ์'
  • ภายใต้ 'พฤติกรรมของปุ่ม Caps Lock' เลือก 'ปิดใช้งาน Caps Lock'

-1

ทางออกที่แข็งแกร่งที่สุดคือการซื้อแป้นพิมพ์ที่ให้คุณทำการแมปคีย์ในเฟิร์มแวร์เช่นคีย์บอร์ดแบบมืออาชีพที่ตั้งโปรแกรมได้

สิ่งเหล่านี้มักจะมีราคาประมาณ 200 bucks และยังมีสวิตช์กุญแจแบบกลไกระดับสูง พวกเขามีราคาแพง แต่เป็นวิธีเดียวที่จะหลีกเลี่ยงการต่อสู้กับสิ่งนี้ในทุกเครื่องใหม่ที่คุณนั่งลงและทุกครั้งที่นักพัฒนาทำการเปลี่ยนแปลงโครงสร้างพื้นฐานของระบบปฏิบัติการเป็นพื้นฐานเช่นเดียวกับแผนที่แป้นพิมพ์


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