ฉันจะเปลี่ยนปุ่มบนแป้นพิมพ์ของฉันได้อย่างไร (ฉันจะสร้างคำสั่งแป้นพิมพ์ลัด / เองได้อย่างไร)


131

ฉันต้องการเปลี่ยนการเชื่อมโยงคีย์บนแป้นบางปุ่มบนแป้นพิมพ์ของฉัน ฉันต้องการให้ผู้ใช้บางคนเรียกใช้คำสั่งและคนอื่น ๆ เพื่อเปิดใช้งานปุ่มที่แตกต่างกัน

ฉันสามารถใช้แอปพลิเคชันใดในการทำสิ่งนี้


ดัชนี:


ฉันยังคงหาคำตอบโดยใช้ dconf และวิธีอื่น ๆ


xmacro อาจเป็นของคำตอบนี้หรือไม่? มันสามารถ "บันทึก / เล่นการกดแป้นและการเคลื่อนไหวของเมาส์ในการแสดง X"
roadmr

@roadmr หากฉันสามารถใช้มันเพื่อสร้างทางลัดแป้นพิมพ์แบบกำหนดเองแล้วใช่!
เซท

ขอขอบคุณที่เพิ่มหัวข้อนี้ ฉันกำลังมองหาวิธีใช้คีย์เหมือนกับปุ่มเมาส์ (กดค้างและลากคลิก ฯลฯ ) ดูเหมือนว่าจะหายไปจากเธรด
krumpelstiltskin

@ krumpelstiltskin ขณะนี้ฉันไม่ทราบวิธีการทำซ้ำที่แน่นอนของเมาส์ ฉันแนะนำให้คุณถามคำถามใหม่ ถ้าฉันจะคิดออกฉันยังคงสามารถตอบมีหรือคนอื่นอาจจะมีคำตอบที่ดี :)
เซท

1
นี่คือ - คำxkbตอบ: askubuntu.com/a/347382/354350
DJCrashdummy

คำตอบ:


94

xbindkeys ..

sudo apt-get install xbindkeys

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

ในการสร้างไฟล์กำหนดค่าเริ่มต้นคุณใช้คำสั่ง:

xbindkeys --defaults

ซึ่งพิมพ์ไฟล์กำหนดค่าเริ่มต้น ดังนั้นหากคุณต้องการสร้างไฟล์ที่มีค่าเริ่มต้นคุณจะใช้:

xbindkeys --defaults > $HOME/.xbindkeysrc

ซึ่งพิมพ์ค่าเริ่มต้นลงในไฟล์ที่ซ่อนชื่อ.xbindkeysrcตั้งอยู่ในบ้าน ( ~)

ทีนี้การเปลี่ยนการเชื่อมโยงของคีย์เราต้องรู้ว่าชื่อหรือ keysym ของกุญแจเหล่านั้นคืออะไร xbindkeysอนุญาตให้เราใช้-kหมายเลขอ้างอิงเพื่อค้นหาชื่อของคีย์หรือคีย์ผสม วิ่ง:

xbindkeys -k

และกดปุ่มหรือคีย์ผสม ผลลัพธ์ของคุณจะคล้ายกับสิ่งนี้ (เมื่อกดspace):

"NoCommand"
m:0x10 + c:65
Mod2 + space

"No Command"บอกกับเราว่าในปัจจุบันไม่มีคำสั่งเชื่อมโยงกับSpaceกุญแจ

m:0x10 + c:65
Mod2 + space  

คือชื่อของคีย์ / คีย์ผสม

ไฟล์ปรับแต่ง ..

ให้เปิดไฟล์กำหนดค่าที่คุณทำไว้ก่อนหน้านี้:

gedit .xbindkeysrc  

นี่คือข้อความที่ตัดตอนมาจากไฟล์กำหนดค่าเริ่มต้น:

#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
#   Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
#   Mod3 (CapsLock), Mod4, Mod5 (Scroll). 
#

# The release modifier is not a standard X modifier, but you can  
# use it if you want to catch release events instead of press events

# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.

#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable

# Examples of commands:

"xbindkeys_show" 
 control+shift + q  

ทุกบรรทัดที่ขึ้นต้นด้วย#ความคิดเห็นและจะไม่สามารถอ่านหรือดำเนินการxbindkeysได้

จนถึงบรรทัดเดียวที่ไม่ได้ใส่ความคิดเห็นคือ:

"xbindkeys_show" 
 control+shift + q  

ข้อความที่ตัดตอนมานี้แสดงไวยากรณ์พื้นฐานของxbindkeysคำสั่ง:

"Command to run (in quotes)"
key to associate with command (no quotes)  

ดังนั้นตามที่คุณเห็น:

"xbindkeys_show" 
 control+shift + q  

รันคำสั่งxbindkeys_showเมื่อคุณกดCtrl+ + Shiftq

ผูกกุญแจเข้ากับคำสั่ง ..

ตอนนี้ให้ลองผูกกุญแจสองสามอัน ฉันแนะนำให้ล้างไฟล์เริ่มต้นทั้งหมดเพื่อให้มันว่างเปล่า มันมีการเชื่อมโยงคีย์ที่ตั้งไว้ล่วงหน้าซึ่งคุณอาจไม่ต้องการ

ตอนนี้สมมติว่าคุณต้องการใช้Ctrl+ bเพื่อเปิดเบราว์เซอร์ของคุณ ก่อนอื่นคุณต้องรู้ว่าชื่อหรือkeysymของCtrl+ bคืออะไร ตามที่กล่าวไว้ก่อนหน้านี้คุณสามารถใช้xbindkeys -kเพื่อค้นหาชื่อของคีย์หรือคีย์ แต่มีวิธีที่ง่ายกว่า สำหรับชุดค่าผสมอย่างเช่นCtrl+ bคุณสามารถใช้:

Control+b

ง่ายกว่าเยอะเลย!

ตอนนี้หาคำสั่งสำหรับเบราว์เซอร์ที่คุณชื่นชอบ:

  • สำหรับ Firefox: firefox

  • สำหรับ Chromium: chromium-browser

  • สำหรับ Opera: opera

จำไวยากรณ์ก่อนหน้านี้ได้หรือไม่ xbindkeysคำสั่งที่จะเปิดตัว Firefox (หรือเบราว์เซอร์โปรดอื่น ๆ ของคุณ) เมื่อคุณกดCtrl+ bคือ:

"firefox"
Control+b

จากนั้นใส่ไฟล์ config ของคุณลงไปแล้วทำการบันทึก ตอนนี้คุณอาจสังเกตเห็นว่าคำสั่งของคุณยังใช้งานไม่ได้นั่นเป็นเพราะxbindkeysยังไม่ทำงาน ในการเริ่มต้นเพียงแค่เรียกใช้xbindkeysจากเทอร์มินัล ของคุณCtrl+ bตอนนี้ควรจะเริ่มต้นเบราว์เซอร์ของคุณ!

ผูกกุญแจกับกุญแจอื่น ๆ ..

หากคุณต้องการให้แป้นบนแป้นพิมพ์ของคุณเรียกแป้นอื่นบนแป้นพิมพ์ของคุณคุณจะต้องใช้ซอฟต์แวร์เพิ่มเติมเนื่องจากxbindkeysไม่รองรับตัวมันเอง ฉันรู้ว่าสองโปรแกรมที่เราสามารถใช้งานและxdotool xteฉันชอบxteฉันจะใช้มัน

ติดตั้ง:

sudo apt-get install xautomation

ไวยากรณ์สำหรับxteเป็นเช่นนี้:

xte 'command key/mousebutton/xyCoordinates'

ตัวอย่าง:

  • ในการโทรกดปุ่มเดียว: xte 'key keyName'

  • วิธีเรียกชุดคีย์: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName

  • วิธีเรียกปุ่มเมาส์: xte 'mouseclick buttonNumber' (เราจะหารือเกี่ยวกับการค้นหาหมายเลขปุ่มหลังสุด)

  • ในการเลื่อนเมาส์: xte 'mousemove xCoordinate yCoordinate'

  • และอื่น ๆ! อ่านman xte

ตอนนี้คุณรู้คำสั่งสำหรับการจำลองการกดปุ่มแล้วคุณสามารถเรียกมันจากxbindkeysสคริปต์ของคุณเช่นนี้

"xte 'key b'"
Control+b  

ตามที่คุณอาจคาดเดาการโทรนี้xte 'key b'เมื่อเรากดCtrl+ bซึ่งจะเข้าbสู่เอกสารใด ๆ ที่คุณอาจกำลังทำงานอยู่

อย่างไรก็ตามสิ่งที่ฉันควรทราบคือxbindkeysและxteไม่ได้ทำงานร่วมกันเป็นอย่างดีเสมอไป บางครั้งคุณต้องกดปุ่มตรงในเวลาเดียวกันที่จะได้รับการส่งออกครั้งอื่น ๆ มันทำงานได้ดี สิ่งนี้อาจหรืออาจจะไม่เกี่ยวกับการกำหนดค่าระบบและ / หรือฮาร์ดแวร์ .. ฉันไม่แน่ใจ ดูคำตอบของ maggotbrainสำหรับวิธีการผูกกุญแจที่เชื่อถือได้มากขึ้นกับปุ่มอื่น ๆ

ผูกปุ่มเมาส์เข้ากับคำสั่ง ..

คุณยังสามารถใช้xbindkeysเพื่อผูกปุ่มเมาส์กับคำสั่ง (และแป้นพิมพ์ลัดจากนั้นดูด้านบน) รูปแบบพื้นฐานสำหรับปุ่มเมาส์ควรเป็นที่คุ้นเคยสำหรับคุณ:

" [command to run]  "
b:n

[command to run]คำสั่งที่คุณต้องการเรียกใช้อยู่ที่ไหนและnจำนวนของปุ่มเมาส์ที่คุณต้องการใช้สำหรับคำสั่งนั้น

หากคุณไม่ทราบจำนวนปุ่มเมาส์คุณสามารถใช้xevเพื่อค้นหาว่ามันคืออะไร:

xev | grep button

ผลลัพธ์จะเป็นดังนี้:

user@host:~$ xev | grep button
    state 0x10, button 1, same_screen YES
    state 0x110, button 1, same_screen YES
    state 0x10, button 2, same_screen YES
    state 0x210, button 2, same_screen YES
    state 0x10, button 3, same_screen YES
    state 0x410, button 3, same_screen YES

เมื่อฉันกดปุ่มเมาส์แต่ละปุ่ม

ตัวอย่างเช่น:

" firefox "
b:2

เปิดตัว firefox เมื่อฉันกดปุ่มกลางของเมาส์


เป็นไปได้หรือไม่ที่ xbindkeys ในการทำแผนที่ Meta + C / V สำหรับการคัดลอก / วางและ Meta + Space สำหรับการเปลี่ยนภาษา?
Sonique

มีวิธีการต่อเนื่องของตัวละครในคีย์เดียวเช่นแนบ "สมการ" กับปุ่มปรับระดับเสียงหรือไม่
JPi

55

Xev และ xmodmap

การเปลี่ยนปุ่มลัดใช้และxevxmodmap

แอปพลิเคชันบรรทัดคำสั่งทั้งสองจะพร้อมใช้งานตามค่าเริ่มต้นดังนั้นจึงไม่จำเป็นต้องติดตั้งซอฟต์แวร์เพิ่มเติม

Xev "สร้างหน้าต่างจากนั้นขอให้เซิร์ฟเวอร์ X ส่งเหตุการณ์เมื่อใดก็ตามที่มีสิ่งใดเกิดขึ้นกับหน้าต่าง (เช่นถูกย้ายปรับขนาดพิมพ์พิมพ์คลิกเข้า ฯลฯ )" หน้าคน xev

xmodmapเป็น"โปรแกรมใช้ในการแก้ไขและแสดงแผนที่ตัวดัดแปลงแป้นพิมพ์และตาราง keymap ที่ลูกค้าแอปพลิเคชันใช้ในการแปลงรหัสเหตุการณ์เป็น keyyms" หน้าคน xmodmap

ตัวอย่างต่อไปนี้จะทำการแมปCaps_Lockคีย์ไปยังลักษณะการทำงานของEscคีย์ (ผู้ใช้ vi / vim จำนวนมากพบสิ่งนี้ว่าเป็นการแม็พคีย์บอร์ดที่มีประโยชน์)

ใช้ xev

เริ่มxevแอปพลิเคชันจากหน้าต่างเทอร์มินัล ( Ctrl- Alt- t)

แอปพลิเคชั่นจะเริ่มต้นแสดงจำนวนบรรทัดและเริ่มต้นหน้าต่างว่าง ทำให้xevหน้าต่างแอปพลิเคชันอยู่ในโฟกัสและกดปุ่มที่มีคุณสมบัติ / พฤติกรรมที่คุณต้องการใช้

  • กดESCปุ่ม

ในหน้าต่างเทอร์มินัลคุณจะเห็นเอาต์พุตหลายบรรทัด จดบันทึกบรรทัดที่ 3 กลับมา จะมีชื่อของคุณสมบัติที่คุณต้องการย้ายไปยังคีย์อื่น

KeyPress event, serial 32, synthetic NO, window 0x3e00001,
    root 0x256, subw 0x0, time 16245388, (616,73), root:(1487,535),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) ""

ในกรณีนี้Escที่สำคัญ (keycode 9) ใช้ชื่อ"หนี"

  • กดCaps Lockปุ่ม

คราวนี้เรากำลังมองหารหัสที่Caps Lockใช้อยู่

ให้สังเกตบรรทัดที่ 3 อีกครั้ง:

KeyRelease event, serial 32, synthetic NO, window 0x4c00001,
    root 0x256, subw 0x0, time 94702774, (862,151), root:(1733,613),
    state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XKeysymToKeycode returns keycode: 9
    XLookupString gives 1 bytes: (1b) ""

ใช้ xmodmap

ตอนนี้เราได้รับข้อมูลเกี่ยวกับคีย์ที่เราต้องการเปลี่ยนจากxevเราจะใช้xmodmapในการปรับเปลี่ยนคีย์แมป จากเทอร์มินัลคำสั่ง ( Ctrl+ Alt+ t) ให้เรียกใช้คำสั่งต่อไปนี้:

  • คำสั่งนี้แก้ไขCaps Lockเพื่อใช้ลักษณะการทำงานเช่นเดียวกับEsc

    xmodmap -e "keycode 66 = Escape"
    
  • ตัวเลือกนี้พิมพ์ตาราง keymap เป็นนิพจน์ลงในไฟล์ ~/.Xmodmap

    xmodmap -pke > ~/.Xmodmap
    

เปิดใช้งานการเปลี่ยนแปลง (สำหรับเซสชันการล็อกอินนี้เท่านั้น) โดยใช้คำสั่งต่อไปนี้:

xmodmap ~/.Xmodmap

ทำการเปลี่ยนแปลงอย่างต่อเนื่องในการรีบูต:

  • .xinitrcถ้ามันไม่ได้อยู่สร้างไฟล์ในโฟลเดอร์ที่บ้านของคุณเรียกว่า

    touch .xinitrc
    
  • วางบรรทัดต่อไปนี้ในไฟล์และบันทึกไฟล์:

    xmodmap ~/.Xmodmap
    

การแก้ไขคีย์ด้วยพฤติกรรมต่าง ๆ ของรัฐ

(เช่นNum Lock)

  • รับตาราง keymap สำหรับคีย์ตัวดัดแปลง (ตัวย่อเอาต์พุตที่นี่)

    $ xmodmap -pm
    shift       Shift_L (0x32),  Shift_R (0x3e)
    mod2        Num_Lock (0x4d)
    

หากคุณต้องการเปลี่ยนตัวอย่างเช่นลักษณะการทำงานของช่วงเวลาบน Del/ Periodแป้นบนปุ่มกดตัวเลขเป็นเครื่องหมายจุลภาคให้ใช้คำสั่งต่อไปนี้:

xmodmap -e "keycode 91 mod2 = KP_Delete comma"

โปรดทราบว่านี่คือการใช้การmod2กดปุ่มเพื่อเปลี่ยนพฤติกรรมที่สำคัญเมื่อNum Lockมีการกดปรับปรุง ไวยากรณ์สำหรับสิ่งนี้คือ:

xmodmap -e "<KEYCODE> <MODIFIER> = <behaviour> <behaviour_with_modifier>"

ทรัพยากร


2
+1! ฉันมีคีย์บอร์ดเกาหลีที่ไม่มีปุ่ม alt-gr และฉันต้องการมันดังนั้นคำตอบของคุณก็มีประโยชน์มากในการทำให้มันทำงานได้ สำหรับการอ้างอิงในอนาคตและเนื่องจากปุ่ม alt-gr ไม่ใช่วิธีที่ง่ายที่สุดในการตั้งค่านี่คือคำสั่ง (ฉันใช้ปุ่ม hanja ซึ่งมีรหัส 130): xmodmap -e "keycode 130 = ISO_Level3_Shift Multi_key ISO_Level3_Shift Multi_key"
Shautieh

43

ตามค่าเริ่มต้น (นี่เป็นเพียงการเสริมคำตอบที่ยอดเยี่ยมโดยเซท), อูบุนตู (ในตัวอย่างนี้ฉันใช้ 16.04) มี 2 หมวดหมู่ที่เป็นค่าเริ่มต้นในการตั้งค่าระบบ:

หากต้องการไปที่การตั้งค่าระบบให้คลิกขวาที่ไอคอนรูปเฟือง :

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

จากนั้นเลือกการตั้งค่าระบบ :

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

ที่นี่คุณจะพบ 2 ตัวเลือกที่สามารถส่งคุณไปยังส่วนสร้างทางลัด

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

หากคุณเลือกการป้อนข้อความคุณจะต้องเลือกลิงค์การตั้งค่าคีย์บอร์ดที่ด้านล่างขวาซึ่งจะส่งคุณโดยตรงไปยังตัวเลือกทางลัด

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

หากคุณเลือกตัวเลือกKeyboardคุณจะต้องคลิกที่แท็บทางลัด

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

หลังจากมาถึงที่แท็บทางลัดคุณจะต้องเลือกทางลัดที่กำหนดเองที่ด้านล่างของรายการทางด้านซ้าย:

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

จากนั้นคลิกที่เครื่องหมายบวกที่ด้านล่างเพื่อเริ่มสร้างทางลัดของคุณเอง:

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

จากนั้นเป็นเพียงเรื่องของคุณที่จะเพิ่มชื่อของทางลัด (อย่าสับสนชื่อของทางลัดสำหรับชื่อของคำสั่งจริงที่คุณจะดำเนินการ) และด้านล่างในฟิลด์คำสั่งคือที่ที่คุณจะใส่คำสั่งที่จะถูกเรียกใช้สำหรับทางลัดนี้ ในตัวอย่างต่อไปนี้ฉันตั้งชื่อทางลัด "Sublime Text 3" เพื่อทราบว่าทางลัดเฉพาะนั้นเกี่ยวข้องกับอะไร sublและบนสนามคำสั่งผมเพิ่มคำสั่งที่เกิดขึ้นจริงซึ่งเป็น

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

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

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

จากนั้นเราจะคลิกที่ข้อความ "ปิดการใช้งาน" เพื่อเพิ่มคีย์ผสมลงไป:

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

ในส่วนนี้ฉันกำหนดคีย์ผสมของSHIFT+ CTRL+ Sเพื่อที่เมื่อฉันกดชุดนี้มันจะเปิดแอพ Sublime Text

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

หลังจากนั้นคุณสามารถทดสอบชุดค่าผสมของคุณได้โดยกดปุ่มผสมที่เกี่ยวข้องและเห็นแอปเปิดอยู่:

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

หมายเหตุ: สำหรับชุดค่าผสมพิเศษเช่นชุดเดียวที่จะฆ่า X Server ฉันขอแนะนำให้เยี่ยมชมลิงค์ต่อไปนี้: ฉันจะเปิดใช้งาน Ctrl-Alt-Backspace เพื่อฆ่าเซิร์ฟเวอร์ X ได้อย่างไร


ฉันใช้เวลา 13.10 ปีและฉันไม่มีไอคอน 'การป้อนข้อความ' ในการตั้งค่าระบบของฉันเลย :(
Wim

สวัสดีคุณสามารถให้ลิงค์ไปยังภาพที่แสดงการตั้งค่าระบบของคุณ
Luis Alvarado

2
น่าเศร้าที่ตอนนี้เราอยู่ที่ 15.04 คำตอบนี้เป็นระเบียบที่อ่านไม่ออก รูปแบบแป้นพิมพ์หายไปและด้วยความสามารถในการฆ่า X Server ภาพหน้าจอรวมกันก่อนหน้า 13.04 (ใครสนใจ!?!) และภาพหน้าจอที่ใหม่กว่าและมีบางคนใส่ภาพผิดสถานที่ดังนั้น "คลิกตัวเลือกที่ด้านล่างขวา)" อยู่ไกลจากภาพหน้าจอที่ล้าสมัยจริง :-(
skierpage

@skierpage นั่นเป็นเหตุผลที่ฉันตอบคำถามนี้: askubuntu.com/questions/367983/…หวังว่ามันจะช่วยได้
Luis Alvarado

If you click on the Options button at the bottom right (Found on 13.04 or previous versions)...ปุ่มตัวเลือกในรุ่น> 13.04 อยู่ที่ไหน
ไดโนเสาร์

21

ไปที่การตั้งค่าระบบKeboardเลือกแท็บทางลัดและเพิ่มทางลัดที่กำหนดเองใหม่สำหรับเบราว์เซอร์ของคุณ หากค่าเริ่มต้นของคุณคือ Firefox ให้ใช้firefoxสำหรับในฟิลด์คำสั่ง; ถ้าค่าเริ่มต้นของคุณคือ Firefox ใช้chromium-browserและอื่น ๆ :

เพิ่มทางลัดที่กำหนดเอง


ขอบคุณ ดูคำตอบของฉันเองสำหรับลักษณะเฉพาะบางประการเกี่ยวกับการตั้งค่าคีย์ ตอนแรกฉันก็งงถึงแม้ว่าฉันจะอยู่ในที่ที่ถูกต้องก็ตาม
Michael Durrant

2
แต่นี่ไม่ได้ผลในกรณีของฉัน Ubuntu (ด้วยเหตุผลบางอย่าง) จะไม่ให้ฉันตั้งค่าปุ่มทางลัดเลย! ฉันได้ติดตามจนถึงขั้นตอนที่ 4 (ดังที่แสดงในรูป) ฉันพลาดอะไรไปหรือเปล่า?
Vaibhav Kaushal

2
ฉันชอบคำตอบนี้สำหรับคำถามที่ซ้ำกัน
นาย B

3
@VaibhavKaushal: ในขั้นตอนที่ 5 คุณต้องคลิกขวาที่ "ปิดการใช้งาน" จากนั้นทำช็อตคัทที่คุณชอบซึ่งจะแสดงที่นั่นทันที
rubo77

อาจจำเป็นต้องบูตเครื่องใหม่เพื่อให้การเปลี่ยนแปลงมีผล
Shirley Temple

18

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

ครั้งแรกที่คุณเปิด AutoKey จะเริ่มให้บริการในพื้นหลัง (ไอคอนการแจ้งเตือนยังไม่ได้รับการอัปเดตเพื่อความเป็นเอกภาพดังนั้นจึงไม่มีการแสดงภาพ) เมื่อทำงานแล้วคุณสามารถเรียกใช้อินเทอร์เฟซการกำหนดค่าได้โดยเปิดใช้ตัวเรียกใช้งานอีกครั้ง:

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

ตอนนี้เปิดแก้ไข> การตั้งค่าและเลือก "เริ่มอัตโนมัติอัตโนมัติเมื่อเข้าสู่ระบบ" เพื่อให้แน่ใจว่าทางลัดของคุณทำงานทุกครั้งที่คุณเข้าสู่ระบบ

การจับคู่แป้นพิมพ์ลัดกับแป้นพิมพ์ลัดอื่น

  1. เลือกไฟล์> ใหม่> วลี
  2. ตรวจสอบให้แน่ใจว่าตั้งค่า "Paste using" เป็น "Keyboard"
  3. พิมพ์ปุ่มที่คุณต้องการแมปลงในกล่องข้อความ

    • พิเศษ (ที่ไม่ใช่ตัวอักษร) คีย์จะเป็นตัวแทนที่มีรหัสการบันทึกไว้ที่นี่
    • หากคุณพิมพ์หลายคีย์พวกเขาจะถูกส่งตามลำดับเว้นแต่ว่าคุณจะใส่กุญแจไว้+ระหว่างกัน (เช่น<ctrl>+cจะคัดลอกในแอปพลิเคชั่นส่วนใหญ่<ctrl>+c<ctrl>+n<ctrl>+vจะสร้างเอกสารใหม่ที่มีตัวเลือกและ<shift>+ubuntuพิมพ์ข้อความ "Ubuntu")
  4. กดปุ่ม "ตั้งค่า" ถัดจาก "ฮอตคีย์" สิ่งนี้จะแสดงกล่องโต้ตอบที่ช่วยให้คุณกำหนดคีย์ผสมที่คุณต้องการแมปจาก :

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

  5. เลือกไฟล์> บันทึก

ตัวอย่างของการกำหนดค่าที่เสร็จสมบูรณ์ (ซึ่งส่ง<enter>เมื่อคุณกด<ctrl>+m) มีลักษณะดังนี้:

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


หมายเหตุ: ปัจจุบัน Debian (ที่ Ubuntu ได้รับแพ็คเกจ AutoKey) ไม่ได้ดูแลแพ็คเกจ AutoKey สำหรับคำแนะนำในการติดตั้งปัจจุบันดูได้ที่: github.com/autokey/autokey/wiki/Installing
Joe

15

ลองสิ่งนี้:

ติดตั้งโปรแกรมที่ชื่อว่า XKeyCaps หากต้องการติดตั้งเพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง:

sudo apt-get install xkeycaps

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

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

จากนั้นเมื่อคุณได้รับแป้นพิมพ์บนหน้าจอคลิกขวาที่คีย์ที่คุณต้องการในกรณีของคุณคือมันSและเลือกกุญแจแลกเปลี่ยน

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

ตรวจสอบให้แน่ใจว่าได้เพิ่มบรรทัดด้านล่างลงในเซสชันของคุณเพื่อให้เริ่มใหม่ทุกครั้งที่คุณบูตเครื่อง

xmodmap ~/.xmodmap-`uname-n`

ที่มา: UFM ytsejam1138


คือuname-nควรจะเป็นuname -n?
wjandrea

unmae-nตามแหล่งที่มาของมัน ฉันไม่สามารถเข้าถึงเครื่อง Ubuntu เพื่อทดสอบ แต่เมื่อฉันทำฉันจะตรวจสอบเพิ่มเติม
มิทช์

8

หากคุณเพียงต้องการทำการแมปกุญแจคำตอบอื่น ๆ นั้นยอดเยี่ยม

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

AutoKey มีตัวบันทึกสคริปต์และวิธีง่ายๆในการป้อนลำดับคีย์พื้นฐาน แต่สคริปต์ของมันเขียนด้วย Python และสามารถทำอะไรก็ได้ที่คุณสามารถเขียนโค้ดได้

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

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

นอกจากนี้ยังมีตัวกรองหน้าต่างเพื่อให้คุณสามารถ จำกัด วลีหรือสคริปต์เฉพาะเพื่อให้ทำงานในหน้าต่างบางประเภทเท่านั้น (เช่นตัวที่มี Mozilla ในชื่อเพื่อให้ทำงานเฉพาะในสิ่งต่าง ๆ เช่น Firefox หรือ Thunderbird)

ปัจจุบัน AutoKey มีรุ่น Gtk และ Qt

การแก้ไข:

คู่มือการติดตั้ง

ฟอรัม ผู้ใช้งาน

มีสคริปต์ตัวอย่างจำนวนมากในวิกิ เนื่องจากเป็นแอพ GUI ที่มีตัวเลือกมากมายเป็นหลักตัวอย่างจึงต้องใช้ภาพหน้าจอและบทความทั้งหมด

ฉันมีวลีที่กำหนดไว้ดังนั้นเมื่อฉันพิมพ์ " Jmail! " มันจะแทนที่ด้วยที่อยู่อีเมลที่ค่อนข้างยาวของฉันทันที

ฉันเขียนสคริปต์ที่ถูกทริกเกอร์โดยการพิมพ์Ctrl- Pซึ่งใช้งานได้เฉพาะใน windows ที่มี "Mozilla" อยู่ในชื่อ การพิมพ์Ctrl- Pเปิดไดอะล็อกการพิมพ์ (Firefox หรือ Thunderbird) เลือกพิมพ์เป็นไฟล์จากนั้นเติมชื่อไฟล์พิมพ์ถัดไปที่มีอยู่ในคิวการพิมพ์ของฉัน (ฉันหมายเลข 01, 02, ... และสคริปต์อ่านคิว ไดเรกทอรีค้นหาหมายเลขไฟล์สุดท้ายและเพิ่มทีละ 1) ฉันใช้กับซอฟต์แวร์จำลองการพิมพ์สองหน้า ( duplexpr ) เพื่อกำจัดการกดแป้นพิมพ์และการเคลื่อนไหวของเมาส์

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


1
คุณสามารถเพิ่มข้อมูลเกี่ยวกับการติดตั้งและใช้งานได้หรือไม่ นั่นจะยอดเยี่ยม!
เซ ธ

AutoKey ได้รับการโยกย้ายบางส่วนจาก code.google ไปยัง GitHub ดูgithub.com/autokey/autokey นอกจากนี้ยังมีงูหลาม 3 สาขา - github.com/guoci/autokey-py3
Joe

AutoKey เวอร์ชั่นปัจจุบันอยู่ที่github.com/autokey/autokeyสาขา Python 2 ได้ถูกคิดค่าเสื่อมราคา
โจ

7

ใช้แป้นคีย์บอร์ดเป็นปุ่มเมาส์

คุณอาจต้องการแมปแป้นคีย์บอร์ดกับปุ่มเมาส์ หากคุณต้องการคลิกโดยใช้แป้นคีย์บอร์ด (มีประโยชน์หากคุณมี macbook หรือปุ่ม trackpad ที่แย่) จากนั้นคุณสามารถทำสิ่งต่อไปนี้

  1. ติดตั้งโปรแกรมอรรถประโยชน์บางอย่าง:

    sudo apt-get install x11-utils xkbset x11-xserver-utils
    
  2. ค้นหารหัสสำหรับรหัสที่คุณต้องการแผนที่:

    • พิมพ์xev | grep keycodeใน terminal
    • กดปุ่มที่น่าสนใจและบรรทัดเช่นนี้จะปรากฏ:

      state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,  
      
  3. ใช้รหัสกุญแจทำการแมปปุ่มเพื่อทำเช่นเดียวกันกับปุ่มซ้ายของเมาส์:

    • xkbset m
    • xmodmap -e "keycode 64 = Pointer_Button1"

Pointer_Button3เป็นปุ่มเมาส์ขวาและPointer_Button2อยู่ตรงกลาง


4

ใช้ xkb

xkbเป็นส่วนขยาย X Keyboard มีหน้าที่ในการจับคู่คีย์ของแป้นพิมพ์กับฟังก์ชันที่กำหนดไว้ สัญลักษณ์สามารถพบได้ในxkb คีย์ปรับปรุงจะถูกแมปใน/usr/share/X11/xkb/symbols//usr/share/X11/xkb/symbols/pc

บอกว่าฉันต้องเปลี่ยนฟังก์ชั่นCaps LockและLeft Controlปุ่มต่างๆ การเปลี่ยนแปลงเหล่านี้จำเป็นสำหรับpcไฟล์:

key <CAPS> {        [ Control_L             ]       };
key <LCTL> {        [ Caps_Lock             ]       };

ในการใช้การจับคู่ใหม่คุณต้องล้างxkbแคชจาก/var/lib/xkb:

rm -rf /var/lib/xkb/*

ตอนนี้เพียงแค่เริ่มต้น X เซสชั่นของคุณใหม่และคุณก็พร้อมที่จะไป

ที่มา: https://radu.cotescu.com/remapping-keys-in-ubuntu-14.04/

แก้ไข: ทำlsภายในsymbolsไดเรกทอรีให้สิ่งนี้:

af        cm            gn       kz              nec_vndr    sk
al        cn            gr       la              ng          sn
altwin    compose       group    latam           nl          sony_vndr
am        ctrl          hp_vndr  latin           no          srvr_ctrl
apl       cz            hr       level3          nokia_vndr  sun_vndr
ara       de            hu       level5          np          sy
at        digital_vndr  ie       lk              olpc        terminate
az        dk            il       lt              pc          th
ba        ee            in       lv              ph          tj
bd        empty         inet     ma              pk          tm
be        epo           iq       macintosh_vndr  pl          tr
bg        es            ir       mao             pt          tw
br        et            is       md              ro          typo
brai      eurosign      it       me              rs          tz
bt        fi            jp       mk              ru          ua
bw        fo            ke       ml              rupeesign   us
by        fr            keypad   mm              se          uz
ca        fujitsu_vndr  kg       mn              sgi_vndr    vn
capslock  gb            kh       mt              sharp_vndr  xfree68_vndr
cd        ge            kpdl     mv              shift       za
ch        gh            kr       nbsp            si

การแม็พภายในไฟล์ruนั้นขึ้นอยู่กับคีย์บอร์ดมาตรฐานของรัสเซีย macintosh_vndrโฟลเดอร์มีการแมปสำหรับคีย์บอร์ดแอปเปิ้ล โดยสรุปวิธีการนี้มีหลากหลายมาก ไปข้างหน้าและเล่นกับมัน :)


คุณพูดถึง 2 ไฟล์ มีการเปลี่ยนแปลงไฟล์อะไรบ้าง? :)
เซ

ฉันพูดถึงไฟล์เดียวเท่านั้น - /usr/share/X11/xkb/symbols/pc.
crisron

ความผิดฉันเอง. เอารูปลักษณ์ที่สองมาให้ฉันเพื่อรับรู้ว่าเส้นทางแรกเป็นโฟลเดอร์ไม่ใช่ไฟล์ แก้ไขเพื่อให้ชัดเจนมากขึ้น :)
เซท

3

ปรากฏว่ามันอยู่ภายใต้แอปพลิเคชัน 'แป้นพิมพ์'

หากคุณนำมาใช้คุณสามารถเปลี่ยนทางลัดได้ตามต้องการ ...

การเปลี่ยนแปลงค่อนข้างแปลกในการใช้ครั้งแรก คุณคลิกที่ด้านขวา (คอลัมน์ที่มี ctrl-alt-T, Disabled ฯลฯ ) จากนั้นคลิกปุ่มจริงเช่นctrlaltbที่คุณต้องการคุณจะเห็นลำดับคีย์ใหม่ปรากฏขึ้นในพื้นที่นั้นในขณะนี้ปิดหน้าต่าง ( หรือคลิกออกไป) และทางลัดใหม่จะใช้งานได้ในขณะนี้


1

ทางลัดที่มีอยู่แล้วเป็น WWW เพียงแค่เปลี่ยนไปCtrl+ +Alt bไม่จำเป็นต้องสร้างใหม่

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


1

ตัวจัดการการตั้งค่า CompizConfig (CCSM)

CCSM ให้คุณเปลี่ยนแป้นพิมพ์ลัดของระบบบางอย่าง

ในการติดตั้งให้ใช้ Software Center หรือคำสั่งนี้:

sudo apt-get install compizconfig-settings-manager

ตัวอย่างเช่น

ฉันใช้เพื่อเปลี่ยนทางลัด "Window spread" จากค่าเริ่มต้นSuper+ Wเป็นSuper+ Tabเช่นใน Windows 10 จากคำตอบของฉันในเธรดอื่น :

  1. เรียกใช้ CCSM จาก Dash
  2. ไปที่การจัดการหน้าต่าง -> เครื่องชั่ง -> แท็บการผูก -> เริ่มต้นเครื่องมือเลือกหน้าต่าง
  3. คลิกที่แป้นพิมพ์ลัด ( <Super>wบนพีซีของคุณ แต่<Super>Tabในภาพหน้าจอนี้)

    CCSM - การจัดการหน้าต่าง - มาตราส่วน

  4. คลิกเลือกคีย์ผสมกดคีย์ที่ต้องการจากนั้นคลิกตกลง

    แก้ไขตัวเริ่มต้นตัวเลือกหน้าต่าง


1

ฉันต้องการกด Print Screen เพื่อบันทึกภาพหน้าจอโดยใช้gnome-screenshotแอปพลิเคชันเช่นเดียวกับใน Mint

แต่ฉันต้องการใช้เทอร์มินัลไม่ใช่ GUI เพราะฉันต้องการให้เป็นค่าเริ่มต้นในขณะที่สร้าง ISO แบบกำหนดเองโดยใช้squashfsเครื่องมือ

ก่อนอื่นฉันติดตั้ง gnome-screenshot โดยใช้คำสั่ง

sudo apt-get install gnome-screenshot

จากนั้นฉันกำหนดทางลัดที่กำหนดเองโดยใช้การตั้งค่า -> แป้นพิมพ์ -> ทางลัดที่กำหนดเอง -> ปุ่มเพิ่ม (+) ->

ในกล่องโต้ตอบ:

  • ชื่อ: ภาพหน้าจอ
  • คำสั่ง: gnome-screentshot

กดปุ่มเพิ่ม

จากนั้นกดPrint screenปุ่ม

ตอนนี้คีย์ถูกผูกไว้และฉันสามารถบันทึกภาพหน้าจอได้ตามต้องการ
แต่ไม่ได้ใช้เทอร์มินัลเป็นวิธี GUI

จากนั้นฉันติดตั้งdconf-editorโดยใช้

sudo apt-get install dconf-editor

และค้นหาgnome-screenshot
ฉันพบการผูกคีย์แบบกำหนดเองที่พา ธ นี้

/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/

ค่าของคีย์คือ:

  • มีผลผูกพัน 'พิมพ์'
  • คำสั่ง 'gnome-screenshot'
  • ชื่อ 'หน้าจอพิมพ์'

ตอนนี้ฉันคัดลอกสิ่งเหล่านี้และลบคีย์ลัดแบบกำหนดเองของ GUI

ฉันเปิดเทอร์มินัลแล้วพิมพ์คำสั่งเหล่านี้

dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'gnome-screenshot'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding  "'Print'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'print screen'"

และ voila

ตอนนี้ฉันสามารถบันทึกภาพหน้าจอโดยไม่ต้องใช้ GUI dconfและเทอร์มินัล ฉันไม่ต้องการdconf-editorอะไรอีกแล้วมันเพิ่งติดตั้งเพื่อรับค่า


1

ฉันลองใช้วิธีแก้ปัญหาของ Kevin (วิธี xmodmap) บน ubuntu 18.04 มันไม่ทำงานในกรณีของฉัน แต่ขั้นตอนนี้ทำให้มันทำงานได้ในที่สุด:

  • คัดลอกxmodmap .Xmodmapในไฟล์ที่เรียกว่ามากกว่า.xsession.xinitrc
  • เปลี่ยนการอนุญาตของไฟล์ (คลิกขวา, คุณสมบัติ, แท็บการอนุญาต, เปลี่ยนการอนุญาตเป็น "อ่านและเขียน" และทำเครื่องหมายในช่องลงที่หน้าต่าง)
  • เพิ่มแอปพลิเคชันเริ่มต้นด้วย/home/<YOUR_USER_NAME>/.xsessionคำสั่ง as
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.