วิธีแมปปุ่ม Caps Lock กับปุ่ม Escape ใน Arch Linux


23

ระบบปฏิบัติการของฉันคือ Arch Linux amd64, Gnome ENV

ฉันต้องการแมปCaps Lockกุญแจไปที่Esc(หลบหนี) ใน Arch Linux ฉันรันคำสั่ง:

xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'

มันใช้งานได้ดี แต่หลังจากนั้นปุ่ม Caps Lock ก็ใช้งานได้อีกครั้ง และฉันจะต้องเรียกใช้คำสั่งอีกครั้ง

ฉันค่อนข้างแน่ใจว่าโซลูชันนี้ใช้งานได้ดีเมื่อปีที่แล้ว ปัญหาของฉันคืออะไร ใครช่วยให้ฉันทำแผนที่ปุ่ม Caps Lock เพื่อหนีกุญแจตลอดไปใน Arch Linux OS ของฉัน

คำตอบ:


47

ข้อใดข้อหนึ่งต่อไปนี้ (เพื่อเพิ่มความซับซ้อน):

  1. ใช้setxkbmapเพื่อทำการแมปคีย์ใหม่ (ไม่ต้องการ daemon และไม่ขึ้นอยู่กับสภาพแวดล้อมเดสก์ท็อปหรือตัวจัดการหน้าต่างของคุณ) อย่าลืมเพิ่มคำสั่งก่อนบรรทัดexec gnome-session(หรือคล้ายกัน) ในของคุณ~/.xinitrcหรือ~/.xsession:

    setxkbmap -option caps:escape
    

setxkbmapสามารถพบได้ในแพคเกจเสริม / xorg-setxkbmap

  1. dconf-editor→→ org.gnome.desktop.input-sources.xkb-optionsเพิ่มcaps:escapeไปยังฟิลด์ดังกล่าว
  2. gnome-session-settings →โปรแกรมเริ่มต้น→เพิ่ม→ชื่อ = ทำการแมปตัวล็อคเพื่อหนีคำสั่ง =setxkbmap -option caps:escape
  3. สร้างเค้าโครงแป้นพิมพ์แบบกำหนดเอง

FYI ผมได้รับกฎ XKB โดยgrep ping /usr/share/X11/xkb/rulesสำหรับและcapsesc


2
วิธี dconf ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันขอบคุณ!
Keith Smiley

ขอบคุณที่ไม่ 2. ฉันกำลังมองหาข้อมูลนั้นสำหรับทุกวัย ไม่ฉันสามารถตั้งค่านี้ในบรรทัดคำสั่งผ่านgsettings org.gnome.desktop.input-sources xkb-options ['caps:none', 'numpad:pc', 'numpad:mac']
Oliver Jan Krylow

เกี่ยวกับไม่ 1: ถ้าคุณต้องการสลับมันแทนที่จะมีสองแป้น Escape คุณสามารถเรียกsetxkbmap -option caps:swapescapeใช้ได้
comfreak

5

สำหรับใช้ในXหน้า Arch Wiki Gnome มีคำแนะนำในการแก้ไขคีย์บอร์ดด้วย XkbOptions :

ใช้ dconf-editor, นำทางไปยังคีย์ที่ชื่อ org.gnome.desktop.input-sources.xkb-options และเพิ่ม XkbOptions ที่ต้องการ (เช่น 'caps: swapescape') ลงในรายการ

ในคอนโซลคุณสามารถสร้างkeymap แบบกำหนดเองสำหรับเอฟเฟกต์เดียวกัน สร้างรูปแบบแป้นส่วนตัวของคุณกับการเปลี่ยนแปลงที่จำเป็นสำหรับการCapsLockและEscapeที่/usr/share/kbd/keymaps/i386/qwerty/yourmapแล้วtarมันและรวมถึงในบรรทัด/etc/vconsole.confจะเรียกมันว่า:

KEYMAP=yourmap

3

xorg.conf

/etc/X11/xorg.conf.d/00-keyboard.confคุณสามารถบรรลุนี้โดยการแก้ไขไฟล์

ไฟล์ตัวอย่าง:

Section "InputClass"
        Identifier      "system-keyboard"
        MatchIsKeyboard     "on"
        Option          "XkbLayout" "us"
        Option          "XkbModel"  "pc104"
        Option          "XkbOptions" "caps:swapescape"
EndSection  

คุณสามารถระบุ XkbOptions หลายตัวอย่างเช่นcaps:swapcaps,terminate:ctrl_alt_bkspสำหรับการมี ESC และหมวกสลับ แต่ยังช่วยให้ X CtrlAlt Backspaceที่จะฆ่าด้วย man xkeyboard-configคุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ใน

GUI

คุณสามารถใช้เครื่องมือปรับแต่ง GNOME (แพคเกจ gnome-tweak-tool) เพียงคลิกTypingแล้วเลือกสิ่งที่คุณต้องการจากCtrl positionเมนู (ดูภาพด้านล่าง)

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


2

คุณสามารถใช้ xmodmap ใส่ของคุณ~/.Xmodmap:

remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

(ให้แน่ใจว่าการเริ่มต้น X จะใช้ของคุณ~/.Xmodmap)


นี่คือคำตอบที่ถูกต้อง distro-agnostic และ desktop-agnostic
dotancohen

เมื่อฉันใส่สิ่งนี้เข้าไปจะ~/.Xmodmapไม่มีอะไรเกิดขึ้น: (
ม.ค. Warchoł

ใส่สายxmodmap ~/.Xmodmapของคุณ~/.xinitrc!
uzsolt

เมื่อฉันใส่สิ่งนี้เข้าไป~/.Xmodmapแล้วxmodmap ~/.Xmodmapฉันได้รับข้อผิดพลาด:xmodmap: .Xmodmap:1: bad remove modifier name 'lock=caps_lock', not allowed xmodmap: .Xmodmap:2: bad keysym target key symbol 'Escape=Caps_Lock' xmodmap: .Xmodmap:3: bad keysym target key symbol 'Caps_Lock=Escape' xmodmap: .Xmodmap:4: bad add modifier name 'lock=caps_lock', not allowed xmodmap: 4 errors encountered, aborting
comfreak

คุณจะต้องเว้นวรรครอบเครื่องหมายเท่ากับ ฉันแก้ไขคำตอบ
uzsolt

0

! ฉันไม่รู้ว่าทำไมคำตอบข้างต้นไม่ได้ผล นี่คือหนึ่งในการทำงานสำหรับฉัน ใน ~ / .Xmodmap ของคุณ

! 66 is the keycode of Caps_Lock
clear    Lock
keycode  66 = Escape 

แล้ว

$ xmodmap ~/.Xmodmap

ฉันใช้ Fedora และผู้จัดการหน้าต่างที่ไม่ใช่คนโนม HTH


0

ไฟล์ยังสามารถที่จะสร้างขึ้นโดยอัตโนมัติโดยใช้/etc/X11/xorg.conf.d/00-keyboard.conf systemd-localedใช้คำสั่งต่อไปนี้:

localectl set-x11-keymap us "" "" caps:escape

หรือรวมถึงตัวเลือกที่มีประโยชน์อื่น ๆ :

localectl set-x11-keymap us,de "" "" caps:escape,grp:alt_caps_toggle,grp_led:caps,lv3:ralt_switch_multikey,terminate:ctrl_alt_bksp,eurosign:e,rupeesign:4

คำอธิบายด่วน:

  • CapsLk ทำหน้าที่เป็น Esc
  • สลับระหว่างรูปแบบแป้นพิมพ์สองรูปแบบus/ deพร้อมAlt+CapsLk
  • CapsLk LEDระบุว่าโครงร่างใดที่ทำงานอยู่
  • Alt ขวา ( RAlt) คือ "multikey" (ดูคีย์การเขียน )
    • RAlt+ eสร้าง
    • RAlt+ 4สร้าง(คล้ายกับวิธีที่Shift+ 4สร้าง$)
  • Ctrl+ Alt+ Backspaceฆ่า X
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.