วิธีการสลับ Caps Lock และ Esc อย่างถาวร


116

ฉันจะสลับการทำงานCaps LockและEscฟังก์ชั่นคีย์ใน Saucy ได้อย่างถาวร ฉันสามารถใช้คำสั่งนี้เพื่อทำมันชั่วคราว (จนกระทั่งรีบูต):

/usr/bin/setxkbmap -option "caps:swapescape"

ฉันลองเพิ่มคำสั่งนั้นเป็นแอปพลิเคชันเริ่มต้น แต่ดูเหมือนจะไม่ทำอะไรเลย


1
ฉันใส่คำสั่ง~/.bashrcนั้นลงไปในระหว่างการรีสตาร์ทระบบ ( ctrl:nocapsสำหรับฉันแม้ว่าสำหรับtmux)
opyate

2
@ จัดเรียงฉันจะใส่คำสั่งนั้นใน ~ / .profile เพื่อที่จะทำงานได้เพียงครั้งเดียวหลังจากเข้าสู่ระบบแบบโต้ตอบ
suzanshakya

คำตอบ:


126

dconf-editorวิธีการทำเช่นนี้ก็คือผ่าน วิธีการนี้มีขั้นตอนเพิ่มเติมไม่กี่ขั้นตอนgnome-tweak-toolแต่มีประโยชน์หากคุณไม่ต้องการดึงการพึ่งพาจากเครื่องมือปรับแต่ง

สิ่งนี้จะช่วยให้คุณใช้caps:swapescapeไวยากรณ์และทำการเปลี่ยนแปลงแบบถาวรโดยอัตโนมัติ

sudo apt-get install dconf-tools

หลังจากเริ่มต้นให้dconf-editorนำทางไปยังorg >> gnome >> desktop >> แหล่งอินพุต

xkb-optionsเพิ่มตัวเลือกที่คุณต้องการใน สตริงตัวเลือกถูกล้อมรอบด้วยเครื่องหมายคำพูดเดี่ยวและคั่นด้วยเครื่องหมายจุลภาค ระวังอย่าลบวงเล็บปิดท้าย

xkb-options ใน dconf-editor

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

สำหรับรายการตัวเลือกและไวยากรณ์ให้ใช้man 7 xkeyboard-configในเทอร์มินัล

ตัวเลือกทั่วไปอื่น ๆ ที่สามารถใช้ได้คือterminate:ctrl_alt_bkspอนุญาตให้ctrl+ alt+ backspaceสิ้นสุด X-session


5
+1 สำหรับการอ้างอิงkeyboard-config(7)นี่คือสิ่งที่ฉันกำลังมองหา
ulidtko

61
คุณสามารถทำได้จากบรรทัดคำสั่งโดยไม่ต้องติดตั้ง dconf-editor:dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:escape']"
Pi Delport

4
อย่าเรียกใช้คำสั่งด้านบนโดยใช้ 'sudo' เนื่องจากการตั้งค่านี้จะมีผลเฉพาะผู้ใช้แต่ละราย
Bohr

11
โปรดทราบว่าคุณจำเป็นต้องใช้'caps:swapescape'หากคุณต้องการสลับสองปุ่ม (แทนที่จะเพิ่งกำหนดEscให้Caps Lock)
thameera

1
หรือคุณสามารถทำได้gsettings set org.gnome.desktop.input-sources xkb-options "['caps:escape']"
ACyclic

50

วิธีแก้ปัญหาที่ควรใช้กับ linux distros ส่วนใหญ่:

setxkbmap -option caps:swapescape

ตัวเลือกอื่น ๆ ที่เป็นไปได้:

  • caps:none เพื่อปิดใช้งาน
  • caps:escape เพื่อให้การหลบหนีเพิ่มเติม
  • caps:super เพื่อทำให้เป็นคีย์พิเศษ (windows) เพิ่มเติม

ในการทำให้การทำงานนี้เริ่มต้นขึ้นคุณจะต้องใส่~/.profileเพราะจะทำงานหลังจากเข้าสู่ระบบแบบโต้ตอบเท่านั้น


1
ใช้งานได้ใน Ubuntu 14.04, Unity
ชาด

2
ทำงานให้ฉันใน Ubuntu 16.04 เช่นกัน
Jesse Chan

4
ตั้งแต่วันที่ 18.04 การใส่setxkbmapคำสั่งใน~/.xsessionrcและ~/.profileไม่ปรากฏขึ้นเพื่อให้การตั้งค่ายังคงอยู่ระหว่างการเข้าสู่ระบบ / รีสตาร์ท
Conrad.Dean

2
@ Conrad.Dean ฉันใช้สิ่งนี้ในโรงกษาปณ์ 19 ซึ่งมีพื้นฐานอยู่ที่ 18.04 LTS: ไม่มีปัญหาที่นี่ การตั้งค่าไม่ควรมีอยู่ แต่จะโหลดเมื่อเข้าสู่ระบบ
jojo

~/.profileเป็นสถานที่ที่ไม่ดีที่จะวางสิ่งนี้ - ไฟล์นั้นจะถูกอ่านบนทุกเชลล์ล็อกอิน วางไว้ในไฟล์ที่ใช้เมื่อเริ่มต้น X11 เหมือนหรือ~/.xinitrc ~/.xsession
sarnold

39

ตกลงพบวิธีในการทำสิ่งนี้โดยใช้ gnome-tweak-tool

จากเทอร์มินัลรัน

sudo apt-get install gnome-tweak-tool -y && gnome-tweak-tool

คุณสามารถค้นหาตัวเลือกในการสลับ Caps Lock และ Esc ใน "การพิมพ์ -> การทำงานของปุ่ม Caps Lock"


5
บน Ubuntu 14 เลย์เอาท์ของหน้าต่างนั้นมีความเหนียวมาก แต่ก็ยังใช้งานได้
uvasal

1
ใช่ฉันคิดว่าgnome-tweak-toolไม่ควรใช้สำหรับงานนี้เพราะมีเครื่องมือเริ่มต้นที่จะทำ
LéoLéopold Hertz 준영

นี่คือทางออกที่ดีที่สุด
Jason McVetta

2
สำหรับ Ubuntu> 18.04 มันสามารถพบได้ในKeyboard & Mouse> Additional Layout Options>Caps Lock Behavior
Adracus

สิ่งนี้ใช้ได้กับฉันเมื่อวันที่ 19.04 ฉันไม่สามารถรับxmodmapหรือsetxkbmapแนวทางแก้ไขใด ๆ ที่จะคงอยู่ในวันที่ 19.04
ahmorris

23

คุณสามารถใช้xmodmapในเทอร์มินัลเพื่อสลับCaps LockกับEsc:

xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"   #this will make Esc to act as Caps Lock
xmodmap -e "keycode 66 = Escape NoSymbol Escape"        #this will make Caps Lock to act as Esc

หากต้องการรับการเปลี่ยนแปลงนี้สำหรับทุกเซสชันหลังจากที่คุณได้รันคำสั่งก่อนหน้านี้แล้วให้สร้างไฟล์ที่เรียก.xmodmapด้วย keymaps ใหม่โดยใช้คำสั่งต่อไปนี้:

xmodmap -pke > ~/.xmodmap

จากนั้นสร้างไฟล์ที่เรียกว่า.xinitrcในโฮมไดเร็กตอรี่ของคุณ, ที่มีบรรทัด / คำสั่งต่อไปนี้:

xmodmap .xmodmap

6
สิ่งนี้ไม่ทำงานภายใต้ Ubuntu 14.04 ฉันยังลองใช้ไฟล์. xsessionrc และมันก็ไม่ทำงานเช่นกัน
miguel.martin

คุณเลิกทำการตั้งค่าได้อย่างไร
hlin117

@ hlin117 เพียงแค่ล้างเนื้อหาของ~/.xmodmapไฟล์ (โดยเรียกใช้เฉพาะ> ~/.xmodmapในเครื่องเทอร์มินัลของคุณ) จากนั้นรีสตาร์ทเซสชันของคุณ
Radu Rădeanu

2
บน Ubuntu 14.04 สิ่งนี้ทำให้ Escape maps ไปที่ Caps_Lock แต่ Caps_Lock ไม่ได้ทำแผนที่เพื่อ Escape
user1691145

1
สวัสดีฉันทำสิ่งนี้และใช้งานได้ อย่างไรก็ตามนอกจาก esc ถูกผูกไว้กับ capslock ตอนนี้ caps-lock ถูกผูกไว้กับทั้ง caps-lock และ escape เป็นไปได้ไหมที่สภาพแวดล้อมเดสก์ท็อปยังคงแทนที่สิ่งนี้อยู่? ฉันใช้ KDE
xor

18

คล้ายกับคำตอบของ @ Radu แต่เข้ากันได้กับ 14.04 (ดูคำตอบนี้ด้วย )

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"
xmodmap -pke > ~/.xmodmap

หากไม่ได้ผลให้เปลี่ยน:

xmodmap -e "remove Lock = Caps_Lock"

ด้วย:

xmodmap -e "clear Lock"

ไม่ทำงานใน Linux Mint 17.1 (ซึ่งใช้ Ubuntu) :(
Jan Warchoł

3
ต้องเปลี่ยน "remove Lock = Caps_Lock" เป็น "clear Lock" เพื่อให้ทำงานได้
Sofia

13

ไปที่ไอคอนรูปเฟืองที่มุมบนขวาของหน้าจอและ:

  • คลิกการตั้งค่าระบบ
  • รูปแบบแป้นพิมพ์
  • ตัวเลือก ... (มุมล่างขวา)
  • ลักษณะการทำงานของปุ่มล็อคตัวพิมพ์ใหญ่ (ที่ 4 ลง)
  • เลื่อนลงและเลือก "สลับ ESC และ Caps Lock"

ทำ!


Joe : ยินดีต้อนรับสู่ถาม Ubuntu! ;-) คุณช่วยทบทวนการแก้ไขของฉันและทบทวนความช่วยเหลือในการแก้ไขเพื่อปรับปรุงการอ่านคำตอบของคุณในอนาคต ... ;-)
Fabby

2
นี่ควรเป็นคำตอบที่ดีที่สุดสำหรับ Ubuntu และมิ้นต์
prasad

สิ่งนี้ทำอะไรนอกเหนือจากการอัปเดตของสคริปต์ที่กล่าวถึงที่นี่หรือไม่ ต้องการทำเช่นนี้ในสคริปต์
Ben Creasy

7

รันคำสั่งนี้หนึ่งครั้งในเทอร์มินัล dconfควรได้รับการติดตั้งด้วย gnome 3 แล้ว

dconf write "/org/gnome/desktop/input-sources/xkb-options" "['caps:swapescape']"

โซลูชันนี้เพิ่งทดสอบตกลงบน RedHat Enterprise Linux 7
Chad Skeeters

3

ซึ่งสามารถทำได้จาก"รูปแบบแป้นพิมพ์" การตั้งค่าระบบ คลิกที่ "ตัวเลือก" สำหรับรูปแบบที่คุณใช้จากนั้นภายใต้ "ลักษณะการทำงานของปุ่ม Caps Lock" ให้เลือก "สวิตช์ Escape and Capslock"


ไม่สามารถใช้ได้อย่างน้อย 13.10
Isaac Dontje Lindell

3

ฉันได้สร้างเครื่องมือใน C เป็นพิเศษเพื่อจุดประสงค์นี้ที่เอาชนะปัญหาหลายอย่างด้วยโซลูชัน xcape / xmodmap :

มันทำอะไรได้มากกว่าเดิมเพราะมันเปิด CAPSLOCK เป็นทั้ง ESC และ CTRL


2

ฉันช้าที่จะตอบ แต่วิธีปกติในการสลับEscและCtrlอยู่กับบรรทัดต่อไปนี้ใน~/.Xmodmapไฟล์:

clear Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

สิ่งนี้ควรทำงานกับสภาพแวดล้อมเดสก์ท็อปทั้งหมด (KDE, Gnome) บน distros ที่พบบ่อยที่สุด (ตระกูล Ubuntu และ Debian, ตระกูล Fedora และ RH)


มันไม่ทำงานบน Ubuntu 16.04 คุณช่วยอธิบายเพิ่มเติมอีกหน่อยได้ไหม?
MaikoID

@MaikoID: นี่เป็นวิธีที่น่าสนใจมาก ๆ ในการเปลี่ยน CapsLock และ Esc ฉันเข้าใจว่า Ubuntu รุ่นใหม่ที่มี Unity จะทำลายสิ่งที่ "canonical unixy" จำนวนมากซึ่งดูเหมือนจะเป็นเหตุผลว่าทำไมคำตอบทั้งหมดที่นี่จึงตอบคำถามเกี่ยวกับรุ่นเฉพาะหรือ DE-specific (Unity) สำหรับสิ่งที่คุ้มค่านี้ไม่ทำงานบน Kubuntu ซึ่งผมเองใช้
dotancohen


1

บน KDE GUI (ส่วนต่อประสานกราฟิกกับผู้ใช้) สามารถทำได้จาก Keyboard Layout ในการตั้งค่าระบบ คลิกที่ "อุปกรณ์อินพุต" ที่มุมซ้ายบนให้คลิกแป้นพิมพ์ จากนั้นคลิกแท็บ "ขั้นสูง" และภายใต้ "ลักษณะการทำงานของคีย์ Caps" เลือก "สลับ Escape and Capslock"


เป็นการดีที่คุณได้ให้คำตอบสำหรับคำถามนี้ คุณสามารถแก้ไขคำถามของคุณเพื่อขยายได้เล็กน้อยโดยอาจได้ผลลัพธ์ที่ต้องการเมื่อเลือก "สลับ ESC และ Caps Lock" ถูกเลือก
Phil UK

สวัสดีและยินดีต้อนรับสู่ถาม Ubuntu! ในสถานะปัจจุบันคำตอบนี้ยังไม่สมบูรณ์และดังนั้นจึงมีความเสี่ยงที่จะถูกลบ โปรดอ่านหน้าความช่วยเหลือวิธีตอบคำถามของเราจากนั้นกลับมาและแก้ไขคำตอบของคุณเพื่อให้มีรายละเอียดเพิ่มเติมโดยเฉพาะอย่างยิ่งวิธีการนี้จะแก้ไขคำถามของ OP นอกจากนี้โปรดอ่านทัวร์ของเราเพื่อรับตราและความคิดที่ดีขึ้นว่าเว็บไซต์ของเราทำงานอย่างไร แล้วพบกันใหม่!
Kaz Wolfe

ขอบคุณคำแนะนำของคุณ ฉันหวังว่าการแก้ไขนี้เป็นสิ่งที่คุณต้องการ
farhad goodarzi

FYI ลิงก์กับโดเมนของคุณดูเหมือนจะไม่ทำงาน (อย่างน้อยสำหรับฉัน) แต่โดเมนที่อยู่ IP ก่อนหน้านี้ใช้งานได้
แอนดรูว์ต.

1

คำตอบ "รูปแบบแป้นพิมพ์" พร้อมกับ "สวิตช์ Escape and Capslock" ข้างต้นไม่สามารถใช้งานได้กับ Ubuntu 16.04 และอีกต่อไป (เคยเป็นมาก่อนหรือไม่) คำตอบ: เพื่อหลีกเลี่ยงความเร่งรีบด้วยสิทธิ์เป็นต้นเพียงสลับไปที่รูทก่อนที่คุณจะเริ่มทำสิ่งนี้ทั้งหมดโดยsuป้อนรหัสผ่านรูทของคุณ แล้ว:

    cd /etc/default/
    vim keyboard

ที่นั่นคุณจะเห็นบรรทัด:

    XKBOPTIONS=""

เปลี่ยนเป็น:

    XKBOPTIONS="caps:swapescape"

ออกเป็นกลุ่มด้วยการบันทึก:

    :wqa

Reboot

และนั่นจะเป็นการถาวรฉันสัญญา :)


0

หมายเหตุ: นี่ไม่ได้สลับเฉพาะแผนที่ caps lock to esc เท่านั้น (นี่เป็นสิ่งที่ดีพอสำหรับกลุ่มผู้ใช้ของฉัน)

สำหรับ Ubuntu 16:04 (ด้วยสภาพแวดล้อม i3): สร้างไฟล์ ~ / .xessionrc พร้อมเนื้อหา

xmodmap -e "clear lock" #disable caps lock switch
xmodmap -e "keysym Caps_Lock = Escape" #set caps_lock as escape

1
ในขณะที่คำตอบนี้อาจแก้ไข 1/2 ปัญหาที่ OP ถามเกี่ยวกับมันแสดงในคิวคำตอบที่มีคุณภาพต่ำเนื่องจากความยาว (ฉันถือว่า) คุณอาจลองขยายเพิ่มเติมด้วยรายละเอียดเพิ่มเติม มันอาจจะทำงานอย่างไรและทำไม
เอ็ลเดอ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.