ฉันสามารถตั้งค่าปุ่ม Caps Lock ใหม่เพื่อเล่นเสียงได้หรือไม่


16

ฉันกำลังพยายามใช้ปุ่ม Caps lock ที่ไม่มีประโยชน์อีกครั้งสำหรับสิ่งที่มีประโยชน์ในวันที่ 16.04 MATE ฉันเจอแล้ว

setxkbmap -option ctrl:nocaps

ปิดการใช้งาน แต่มันสามารถแมปใหม่เพื่อเล่น / หยุด VLC ตัวอย่างเช่น? ขอบคุณสำหรับคำตอบ!


ฉันไม่คิดว่ามันจะใช้ได้ .... ด้วยเหตุผลหลายประการ ... ตัวอย่างเช่นฉันคิดว่า linux ถือว่า capslock เป็นตัวดัดแปลงและไม่ใช่คีย์แยก นั่นอาจเป็นเหตุผลที่คุณไม่สามารถผูกมันไว้ใน VLC นอกจากนี้หากคุณปิดการใช้งานมันจะปิดการใช้งาน แต่คุณสามารถเล่นไปรอบ ๆ บน commandline และพยายามที่จะผูกมันด้วยvlc --key-play-pause <key-string>แต่ฉันไม่ได้พบสตริงที่ VLC ยอมรับเป็น CapsLock ...
โรเบิร์ต Riedl

1
ฉันติดตั้งdconf-editorลองสองสิ่งxdotoolลองติดตั้งลองสองสามอย่างและในที่สุดก็xbindkeysลองทำสองสามอย่าง ในตอนท้ายของการออกกำลังกายที่ไร้ผลนี้ปุ่มหยุดชั่วคราว / เล่นคีย์บอร์ดของฉันเสียและปุ่มเล่น / หยุดชั่วคราวหน้าจอของฉันเองเป็นสีเทาและดนตรีจะไม่เล่น ฉันทำสิ่งนี้ใน 16.04 เพื่อให้รีบูตใน 18.04 เพื่อยืนยันว่าทุกอย่างยังใช้งานได้และเป็นแฮ็คซอฟต์แวร์ที่ทำ ฉันจะเล่นเพลงผ่านโทรศัพท์ Android และไม่ใช่พีซีเท่านั้น เพียงแค่ให้คนอื่นระวังและบันทึกสิ่งที่คุณทำกับเครื่องของคุณดีกว่าฉัน
WinEunuuchs2Unix

1
@pbhj ขอบคุณสำหรับเคล็ดลับ ฉันจัดการเพื่อให้ play / pause ทำงานอีกครั้งด้วยปุ่มบนหน้าจอและปุ่มหยุดชั่วคราว / play keyboard ใน Ubuntu 16.04 ฉันแค่ต้องการเตือนผู้คนถึงข้อผิดพลาดที่อาจเกิดขึ้นจากการทดลองใช้ยูทิลิตี้คีย์บอร์ดระดับต่ำเหล่านี้
WinEunuuchs2Unix

1
2BFrank: อย่าลืมตอบหนึ่งในคำตอบหากมันแก้ปัญหาของคุณได้ เนื่องจากมีคำถามมากมายเกี่ยวกับคำถามนี้การทิ้งคำตอบที่ไม่ได้รับการยอมรับ (และไม่ใช่การมอบรางวัลด้วยตนเอง) จะเป็นการมอบรางวัลเพียงครึ่งเดียวของ @Sebastian Stark เนื่องจากคำตอบของเขาคือคะแนนสูงสุด
Nonny Moose

1
@NonnyMoose ขอบคุณสำหรับความคิดเห็นนั้น ฉันจะปล่อยให้มันแค่เขียนอัตโนมัติเพื่อตอบรับหรือคะแนนรวมสูงสุด แต่ฉันไม่รู้ว่ามันลดลงครึ่งหนึ่งดังนั้นฉันจะตัดสินด้วยตนเองให้คะแนนรวมสูงสุดในเวลาประมาณสองชั่วโมงถ้า ไม่ยอมรับคำตอบ
Chai T. Rex

คำตอบ:


11

evtest และ dbus

นี่คือเวอร์ชันที่เกี่ยวข้องกับสคริปต์ขนาดเล็กที่ทำงานในพื้นหลัง ต้องดำเนินการขั้นตอนง่ายๆไม่กี่ขั้นตอน:

  • ติดตั้งevtestsudo apt install evtestโปรแกรม: โปรแกรมนี้สามารถถอดรหัสและพิมพ์เหตุการณ์ดิบจาก/dev/input/ลำดับชั้นของอุปกรณ์

  • inputเพิ่มบัญชีผู้ใช้ของคุณไปยังกลุ่ม ออกจากระบบและเข้าสู่ระบบอีกครั้ง (นี่เป็นสิ่งจำเป็นเพราะเรากำลังจะอ่านจากอุปกรณ์บางอย่างภายใต้/dev/input/ซึ่งปกติสามารถทำได้โดย root หรือผู้ใช้ในกลุ่มinputเราสามารถเรียกใช้สคริปต์เป็น root แต่แล้วเราจะต้องหาวิธีที่จะบอกว่าผู้ใช้คนใด อินสแตนซ์ของ dbus จำเป็นต้องคุยด้วย)

  • ปิดใช้งานปุ่ม capslock เช่นเดียวกับที่คุณทำหรือใช้การตั้งค่า Mate ที่สอดคล้องกัน นอกจากนี้ยังสามารถใช้งานได้หากคุณจับคู่คีย์ capslock กับ ctrl เหมือนกับที่หลาย ๆ คนทำ

  • เก็บสคริปต์ต่อไปนี้ไว้ที่ใดที่หนึ่งเช่น$HOME/bin/capshackและทำให้สามารถเรียกใช้งานได้:

    #!/bin/bash
    
    KEYBOARD=/dev/input/by-path/platform-i8042-serio-0-event-kbd
    EVENT="type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1"
    
    toggleVLC () {
            dbus-send \
                --type=method_call \
                --dest=org.mpris.MediaPlayer2.vlc \
                /org/mpris/MediaPlayer2 \
                org.mpris.MediaPlayer2.Player.PlayPause
    }
    
    evtest "$KEYBOARD" | \
    while read line
    do
        if [[ "$line" == *"$EVENT" ]]
        then
            toggleVLC
        fi
    done
    

สคริปต์ด้านบนจะฟังเหตุการณ์แป้นพิมพ์ของคุณและดำเนินการคำสั่งเมื่อกดปุ่ม capslock คำสั่งที่รันคือการใช้ dbus เพื่อส่งเหตุการณ์ play / pause ไปยังอินสแตนซ์ VLC ที่กำลังรัน คุณอาจต้องปรับแต่งKEYBOARDตัวแปรให้ชี้ไปที่แป้นพิมพ์จริงของคุณ แต่เป็นไปได้ว่าค่าดังกล่าวจะทำงานได้

หากคุณต้องการ toggleVLC () ฟังก์ชันที่จะเรียกว่าเมื่อคุณปล่อยคีย์ CapsLock คุณสามารถเปลี่ยนEVENTตัวแปรในสคริปต์ดังกล่าวว่าจะจบลงด้วยการแทนvalue 0value 1

นอกจากนี้ยังเป็นไปได้ว่าสำหรับคุณรหัสของคีย์ capslock นั้นแตกต่างจาก 58 คุณสามารถตรวจสอบสิ่งนี้ได้โดยการเรียกใช้evtestดูที่เอาต์พุตเมื่อคุณกด capslock และปรับตัวแปร EVENT ตามลำดับ คุณไม่จำเป็นต้องตรงตาม keycode (KEY_CAPSLOCK), value 1และชุดกิจกรรมเพียงเพื่อ

แทนที่จะใช้สคริปต์ evtest และสูงกว่าคุณสามารถใช้ thd จากแพ็คเกจ Trighappy (สิ่งที่ต้องการthd --dump /dev/input/*จะให้ผลลัพธ์ที่คล้ายกัน) แต่ฉันพบว่าการศึกษาน้อยลง

ตอนนี้เราสร้างหน่วยผู้ใช้ systemd เพื่อเริ่มสคริปต์โดยอัตโนมัติในพื้นหลัง:

  • สร้างลำดับชั้นของผู้ใช้ systemd: mkdir -p $HOME/.config/systemd/user

  • เพิ่มข้อความต่อไปนี้ลงในไฟล์ $HOME/.config/systemd/user/capshack.service

    [Unit]
    Description=Abuse capslock key
    
    [Service]
    ExecStart=%h/bin/capshack
    
    [Install]
    WantedBy=default.target
    
  • เปิดใช้งานหน่วยบริการที่คุณเพิ่งทำ: systemctl --user enable capshack

  • เริ่มบริการ: systemctl --user start capshack

จากนี้ไปคุณควรจะสามารถสลับ play / pause ใน VLC โดยใช้ปุ่ม capslock สคริปต์พื้นหลังควรเริ่มโดยอัตโนมัติเมื่อคุณเข้าสู่ระบบ

triggerhappy

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

  • เพิ่มผู้ใช้ในinputกลุ่มด้านบน

  • ติดตั้งแพ็คเกจ: sudo apt install triggerhappy

  • เพิ่มการกำหนดค่าสำหรับ triggerhappy ไปที่~/.config/thd/capslock.conf:

    KEY_CAPSLOCK    1   dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
    
  • เรียกใช้เช่นนี้: thd --triggers ~/.config/thd/capslock.conf /dev/input/event*

  • ทำให้ thd ทำงานสำหรับผู้ใช้ของคุณในลักษณะที่คล้ายกันเช่นที่อธิบายไว้สำหรับ capshack แล้ว

  • ตรวจสอบให้แน่ใจว่าคุณมีวิธีการใดวิธีการหนึ่งที่ระบุไว้ (capshack หรือ thd) ทำงานอยู่เพื่อไม่ให้สลับเป็นสองเท่าซึ่งการกดปุ่มแต่ละครั้ง

ฉันทดสอบทั้งหมดนี้ใน 18.04 ภายใต้เซสชันมาตรฐานและ 16.04 คู่ แต่ในทางทฤษฎีควรทำงานภายใต้ wayland หรือกับสภาพแวดล้อมเดสก์ทอปอื่น ๆ


@ WinEunuuchs2Unix ขอบคุณที่กล่าวถึง ฉันเองชอบสไตล์ verbose มากขึ้นของประโยค if / then / else เต็มรูปแบบ: มันชัดเจนมากขึ้นมันง่ายกว่าที่จะขยายและมันไม่ได้มีแนวโน้มที่จะทำให้สายยาวเกินไป แม้ว่าในกรณีนี้มันจะไม่สำคัญมากนัก
เซบาสเตียนสตาร์

ฉันเห็นด้วยกับสายยาวเกินไป เมื่อเร็ว ๆ นี้ฉันปรับรูปแบบการเข้ารหัสเป็นสองบรรทัดโดยมีบรรทัดแรก[[ test ]] && \ และบรรทัดที่สองเยื้องช่องว่างสี่ช่อง<command>เพื่อทดสอบการบวก ฉันเห็นด้วยใจอย่างเต็มที่เกี่ยวกับความสามารถในการอ่านเพราะคำแนะนำของฉันคือคนต่างด้าวกับภาษาโปรแกรมส่วนใหญ่
WinEunuuchs2Unix

มันยอดเยี่ยมมาก! ถึงแม้ว่าผมจะคิดว่ามันดูเหมือนว่าtriggerhappyควรจะเป็นวิธีที่จะไปตั้งแต่evtestเป็นจริงโปรแกรมการแก้จุดบกพร่อง :)
โรเบิร์ต Riedl

ใช่ evtest สำหรับการเรียนรู้การทำ :)
เซบาสเตียนสตาร์

... สำหรับฉันแล้ว keycode 58 คือmเพื่อให้สคริปต์ไม่ทำงาน ฉันขอแนะนำให้ตรวจสอบxmodmap -pke | grep Caps_Lockก่อนที่จะใช้สคริปต์นี้เพื่อให้แน่ใจว่ารหัสถูกต้อง
Nonny Moose

9

ใน Ubuntu 16.04 หลังจากใช้เวลา googling & เล่นซอdconf-editorและxbindkeysฉันพบวิธีแก้ปัญหาที่ง่ายมาก:

  • การติดตั้งรวดเร็วมากใน 2 นาที
  • ต้องติดตั้ง xdotool เท่านั้น
  • ไม่จำเป็นต้องใช้สคริปต์
  • ปุ่ม Caps Lock ยังคงเป็นที่รู้จัก แต่จะไม่สลับตัวอักษร
  • ทำงานร่วมกับการตั้งค่าทางลัดแป้นพิมพ์มาตรฐาน Ubuntu เอง

หากคุณต้องการความXF86AudioPlayช่วยเหลือจากGnome ที่คุณต้องการxdotool(ไม่จำเป็นสำหรับVLCตามเงื่อนไขของ OP):

sudo apt install xdotool

ตอนนี้เป็นส่วนที่ยุ่งยาก ทุกครั้งที่คุณกดCaps LocKปุ่มเพื่อสลับเพลงระหว่างเล่นและหยุดชั่วคราวตัวอักษรพิมพ์ใหญ่จะสลับเป็นเปิดและปิด

ใช้วิธีนี้เพื่อปิด Caps Lock สลับในขณะที่ยังคงใช้งานคีย์:

setxkbmap -option caps:none

เครื่องเล่นเพลงที่ยึดติดกับ Gnome

จากนั้นใน Ubuntu 16.04 ไปที่การตั้งค่า >> แป้นพิมพ์ >> ทางลัด >> ทางลัดที่กำหนดเอง :

audio pause-play ทางลัด. png

  • ตั้งชื่อเป็นAudio Play
  • ตั้งคำสั่งเป็นxdotool key XF86AudioPlay
  • จากนั้นคลิกที่Applyปุ่ม

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


เครื่องเล่นเพลงอย่าง VLC

ทำตามขั้นตอนสำหรับ Gnome ในส่วนก่อนหน้า แต่สำหรับคำสั่งใช้สิ่งนี้แทน:

qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

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


การตั้งค่าแป้นพิมพ์ลัดที่กำหนดเองจากบรรทัดคำสั่ง

คำถาม & คำอธิบายนี้อธิบายวิธีตั้งค่าแป้นพิมพ์ลัดที่กำหนดเองจากบรรทัดคำสั่ง: วิธีตั้งค่าแป้นพิมพ์ลัดที่กำหนดเองจากเทอร์มินัล


ปิดการใช้งานตัวล็อคอย่างถาวร

ขั้นต่อไปคือการทำให้สิ่งนี้setxkbmap -option caps:noneคงอยู่ตลอดการเรียบ ผลลัพธ์ของ Google ในคำตอบนี้โดย Terdon: บันทึกการตั้งค่า setxkbdmap :

วิธีง่ายๆในการเพิ่มคำสั่งลงใน$HOME/.profileไฟล์ของคุณ(คุณสามารถสร้างมันได้หากไม่มีอยู่):

setxkbmap -option caps:none

ที่ควรทำให้มันทำงานทุกครั้งที่คุณเข้าสู่ระบบ

หมายเหตุที่คุณควรใช้$HOME/.profileมากกว่า$HOME/.bash_profile, $HOME/.bashrcหรือไฟล์อื่น ๆ ที่คล้ายกัน นี่เป็นเพราะผู้จัดการการเข้าสู่ระบบของคุณควรอ่านค่านี้


เรียบง่ายสง่างามทำงาน: คำตอบที่สมบูรณ์แบบสำหรับฉัน!
Fabby

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

ใช้ได้กับ Wayland หรือไม่
danzel

@dabzel ฉันกลัว Wayland setxkbmap -option caps:noneไม่ได้ทำงานร่วมกับ ติดตั้งโปรแกรมยูทิลิตี้อย่างไร Wayland ยังคงสลับระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก คุณสามารถโพสต์คำถามที่แยกจากกันในการได้รับ Wayland setxkbmapเคารพ
WinEunuuchs2Unix

3

คำตอบนี้ได้รับการทดสอบบน Ubuntu MATE 16.04.4 LTS ใน VM (แต่แป้นพิมพ์เป็นแป้นพิมพ์ USB บน passthrough ดังนั้นจึงไม่ควรสร้างความแตกต่าง) นอกจากนี้ยังไม่จำเป็นต้องมีซอฟต์แวร์เพิ่มเติมและสามารถทำได้ในการติดตั้งวานิลลาโดยไม่ต้องติดตั้งแพคเกจใด ๆและยังคงอยู่ระหว่างบู๊ต

ทำการแมปแคปล็อค

  1. แก้ไขไฟล์/usr/share/X11/xkb/symbols/pcในฐานะรูท ระวังอย่าทำผิดพลาดที่นี่ (เช่นลืมเครื่องหมายจุลภาค) เพราะคุณอาจไม่สามารถใช้แป้นพิมพ์ของคุณได้อีกต่อไปหากคุณทำ (คาดเดาสิ่งที่ฉันเรียนรู้วิธีที่ยาก?;)

  2. ใส่ความคิดเห็นลงในบรรทัด

        key <CAPS> {    [ Caps_Lock     ]   };
    

    โดยวางเครื่องหมายทับสองข้าง ( //) ที่จุดเริ่มต้น

  3. เพิ่มใต้บรรทัดต่อไปนี้:

        key <CAPS> {    [ XF86AudioPlay, XF86AudioPause ]   };
    
  4. ใส่ความคิดเห็นลงในบรรทัด

        modifier_map Lock   { Caps_Lock };
    

    ในลักษณะเดียวกับข้างต้น

  5. Reboot

หมายเหตุ: (เครดิตถึงdanzelสำหรับการชี้ให้เห็นนี้) การอัปเดตแพ็คเกจxkb-dataสามารถเขียนทับไฟล์นี้ dpkg-divertวิธีการที่ปลอดภัยพอสมควรสำหรับการป้องกันนี้จะโอนเส้นทางที่ใช้ (ฉันพูดว่า "ปลอดภัยพอสมควร" เพราะแหล่งที่มาของไฟล์นี้ไม่ได้รับการแก้ไขในสามปี)

วิธีการทางเลือก

ปิดการใช้งานปุ่ม Caps Lock ด้วยตนเองในการตั้งค่ารูปแบบแป้นพิมพ์ของคุณจากนั้นใช้แนวทางในคำตอบนี้เพื่อเพิ่มการแมปคีย์ใหม่ของคุณเอง

ปัญหา?

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

อย่างไรก็ตามเมื่อฉันลองใช้ VLC ไม่ตอบสนองต่อปุ่มเล่น / หยุดชั่วคราว

ตรวจสอบให้แน่ใจว่าตั้งแป้นพิมพ์ลัดไว้อย่างถูกต้อง

  1. เปิดแป้นพิมพ์ลัด (ระบบ→ค่ากำหนด→ฮาร์ดแวร์→แป้นพิมพ์ลัด)

  2. ตรวจสอบให้แน่ใจว่าได้ตั้งค่า "Play (หรือ Play / Pause)" เป็น "XF86AudioPlay"

  3. หากไม่เป็นเช่นนั้นให้คลิกที่ส่วน "ทางลัด" แล้วกดปุ่มเล่น / หยุดชั่วคราวใหม่เพื่อตั้งค่าทางลัด ภาพหน้าจอที่เป็นประโยชน์

  4. หากยังใช้งานไม่ได้ให้รีบูตสองสามครั้งเพื่อการวัดที่ดี (นั่นคือสิ่งที่แก้ไขสำหรับฉัน)


นี้อาจจะยุ่งเกี่ยวกับxkbตัวเลือกโดยเฉพาะอย่างยิ่งcaps:...คนที่ นอกจากนี้ยังสามารถเขียนทับได้ด้วยการอัปเดตระบบ
danzel

แน่นอนมันสามารถ ข้อดีของการอัพเดตระบบคืออะไร ฉันจะเพิ่มบันทึกเกี่ยวกับสิ่งนี้ในคำตอบของฉัน ขอบคุณสำหรับความคิดเห็น!
Nonny Moose

เรียนทั้งหมดว้าว !! ขออภัยเป็นเวลาครู่หนึ่ง :-) และตอนนี้กำลังค้นพบความพยายามทั้งหมดที่คุณใส่ลงไปในการแก้ปัญหา !! จะลอง @ WinEunuuchs2Unix คำตอบและให้คุณโพสต์ ขอบคุณ LLAP !!
2BFrank

@ 2BFrank คุณอยากรู้คำตอบที่ได้ผลหรือไม่?
Nonny Moose

1

ติดตั้งxbindkeys, Xcapeและplayerctl ตรวจสอบให้แน่ใจว่าxcape(ทำแผนที่CapsLockไปยังกุญแจสำรองเช่นAlt+F12โดยxcape -e 'Caps_Lock=Alt_L|F12) และplayerctlจะ autostarted ในการเข้าสู่ระบบและเพิ่มไฟล์~/.xbindkeysrcทั้งสองสาย

"playerctl play-pause"
  Alt + F12

0

ทำให้ปุ่ม capslock ของคุณเป็นปุ่มเล่น / หยุดชั่วคราว

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

ข้อดี

  • ไม่จำเป็นต้องแก้ไขไฟล์ระบบที่มีอยู่ (ต้องสร้างไฟล์ใหม่เพียงไฟล์เดียว)
  • แอปพลิเคชั่นจะไม่ทราบว่ามันเป็นปุ่ม capslock จริง ๆ แต่คิดว่ามีการกดปุ่มเล่น / หยุดชั่วคราวจริง ๆ
  • ไม่จำเป็นต้องปิดการใช้งาน capslock ไม่มีความเป็นไปได้ที่จะทำลายxkbการกำหนดค่า

ข้อเสีย

  • จะต้องทำสำหรับแต่ละคีย์บอร์ดเป็นรายบุคคล (ซึ่งขึ้นอยู่กับสถานการณ์ก็สามารถพิจารณาเป็นพิเศษ)

ข้อกำหนดเบื้องต้น

  • evtest (สามารถติดตั้งผ่านsudo apt-get install evtest)

ขั้นตอน

ในเทอร์มินัลเรียกใช้sudo evtestและเลือกคีย์บอร์ดของคุณ หากไม่มีผลลัพธ์เมื่อคุณกดปุ่มกดCtrl+ Cและลองอุปกรณ์อื่น จำหมายเลขเหตุการณ์อุปกรณ์ที่คุณเลือกเราจะต้องการในภายหลัง กดปุ่ม capslock บางบรรทัดเช่นข้อความต่อไปนี้จะปรากฏขึ้น:

Event: time 1529406021.187148, -------------- SYN_REPORT ------------
Event: time 1529406021.218427, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1529406021.218427, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0

เราต้องการค่าจากMSC_SCANบรรทัดก่อนหน้าKEY_CAPSLOCKบรรทัด ในตัวอย่างข้างต้นนี่จะเป็น 70039 แต่ scancode บนแป้นพิมพ์ของคุณอาจแตกต่างกัน

ตอนนี้รันคำสั่งต่อไปนี้ แต่แทนที่ X ด้วยหมายเลขเหตุการณ์อุปกรณ์ที่คุณใช้สำหรับevtestคำสั่ง:

grep "" /sys/class/input/eventX/device/id/*

... ออกจะนี้bustype, product, vendorและversionของแป้นพิมพ์

สร้างไฟล์ชื่อ65-keyboard-custom.hwdbใน/etc/udev/hwdb.d/(สิทธิ์รากจำเป็น) ที่มีเนื้อหาดังต่อไปนี้:

evdev:input:b[bustype]v[vendor]p[product]e[version]*
 KEYBOARD_KEY_[scancode]=playpause

... ที่

  • [รถบัส], [ผู้ขาย], [ผลิตภัณฑ์] และ [เวอร์ชั่น] มีตัวอักษรและตัวอักษร 4 ตัวต้องเป็นตัวพิมพ์ใหญ่
  • [scancode] ต้องเป็นตัวพิมพ์เล็ก
  • evdev:...บรรทัดมีไม่มีช่องว่างก่อน
  • KEYBOARD_KEY...บรรทัดมีอีกหนึ่งพื้นที่ก่อน

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

evdev:input:b0003v046DpC228e0110*
 KEYBOARD_KEY_70039=playpause

ขั้นสุดท้ายให้รวบรวมการกำหนดค่าใหม่ไปยังฐานข้อมูลฮาร์ดแวร์:

sudo systemd-hwdb update

หากคุณต้องการใช้การเปลี่ยนแปลงทันทีแจ้ง udev:

sudo udevadm trigger

หากคุณต้องการคืนค่าการเปลี่ยนแปลงให้ลบไฟล์ที่คุณสร้างและรีบูต

คุณสามารถค้นหาข้อมูลรายละเอียดเพิ่มเติมในคำตอบเดิมของฉันในหัวข้อนี้


@Nonny Moose นั่นเป็นเหตุผลที่ฉันเขียนว่า "ต้องทำสำหรับแต่ละคีย์บอร์ดเป็นรายบุคคล" นอกจากนี้คุณสามารถระบุคีย์บอร์ดได้มากเท่าที่คุณต้องการดังนั้นคุณต้องทำเช่นนี้กับคีย์บอร์ดใหม่ทุกตัวที่คุณซื้อ ในทางกลับกันคุณสามารถละทิ้งแป้นพิมพ์ได้หากต้องการเช่นมีแป้นเล่น / หยุดชั่วคราวอยู่แล้ว
danzel

... ฉันไม่สนใจ ฉันยืนแก้ไขแล้ว
Nonny Moose

0

อาจจะใช้xbindkeysหรือXTEคุณสามารถทำได้ แต่ก่อนอื่นต้องแน่ใจว่ารหัสคืออะไรคุณสามารถดูรหัสสำหรับปุ่ม capslock โดยใช้คำสั่งxevในเทอร์มินัลแล้วกด (คุณสามารถดูรหัสของปุ่มเมาส์หรือเมาส์รวมถึงเมาส์สำหรับเล่นเกม) ด้วยรหัสกุญแจของปุ่ม capslock และปุ่มเล่นในมือคุณสามารถแก้ไขไฟล์ xbindkeys confi และทำการเปลี่ยนแปลงได้ ใช้touch ~/.xbindkeysrcเพื่อสร้างไฟล์ปรับแต่ง (หากระบบไม่สร้างโดยอัตโนมัติ) และnano ~/.xbindkeysrcเพื่อแก้ไข ฉันใช้มันเมื่อเดือนที่แล้วและนี่เป็นข้อสอบ ดูลิงค์เหล่านี้ที่อาจเป็นประโยชน์กับคุณมาก

https://help.ubuntu.com/community/MultimediaKeys

https://gist.github.com/jbonney/5743509

ทำการแมปปุ่มจากเมาส์เล่นเกมของฉันไปยังแป้นคีย์บอร์ด

https://matmunn.me/post/binding-volume-control-mouse-buttons-ubuntu/

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