ทำให้ตัวเลื่อนการซูมของ Microsoft Natural Ergonomic Keyboard 4000 และ 7000 เลื่อนขึ้นและลงใน 14.04 (เชื่อถือได้)


29

ฉันพยายามใช้บทช่วยสอนนี้เพื่อให้สวิทช์เลื่อนทำงานบน Microsoft Natural Ergonomic Keyboard 4000 ของฉัน แต่ฉันพบข้อผิดพลาดดังต่อไปนี้:

sudo: /lib/udev/keymap: command not found

ฉันมีรุ่น udev 204-5ubuntu20.2(รุ่นที่พบใน Trusty)

ฉันสังเกตว่ารุ่นนี้ไม่มีkeymapเครื่องมือ แต่ฉันสังเกตเห็นว่าudevรุ่นที่สูงกว่า ( ซึ่งมีให้สำหรับ Debian เป็นต้น ) รวมถึงเครื่องมือนี้

มีคนอธิบายความแตกต่างนี้ให้ฉันได้ไหม =) และฉันควรทำอย่างไรในกรณีนี้ - ติดตั้งแพ็คเกจจาก Debian repo?


คุณต้องการที่จะแก้ไขปัญหานี้โดยใช้ udev หรือคุณมีทางเลือกอื่นหรือไม่? ฉันจะลังเลเล็กน้อยที่จะติดตั้งแพ็คเกจ udev debian ที่ไม่มีแพ็คเกจใน Ubuntu
jobin

ทางเลือกใดก็ได้ที่ยินดีต้อนรับ =)
Dmitry Belaventsev

ไม่นี้ความช่วยเหลือ?
jobin

keymapยูทิลิตีที่ไม่มีการจัดส่งแล้วจะทำอย่างไรต่อไป?
matt

ฉันได้อัปเดตบทช่วยสอนของฉัน (ที่คุณเชื่อมโยง) เพื่อรวมคำตอบด้านล่างแล้ว ขอบคุณ :-)
Terence Eden

คำตอบ:


27

ถ้าคุณดู/lib/udev/rules.d/60-keyboard.rulesคุณจะเห็นว่าทุกอย่างยุ่งเหยิงไปหมด นี่เป็นเพียงส่วนหนึ่งของการรวม udev เข้าสู่ systemd ที่เกิดขึ้น

กฎฮาร์ดแวร์ทั้งหมดถูกรวบรวมเป็นฐานข้อมูลฮาร์ดแวร์แบบไบนารี สิ่งเหล่านี้เป็นไปตามรูปแบบที่แปลกมาก กฎระเบียบที่มีอยู่สำหรับคีย์บอร์ดว่าเรือกับ udev /lib/udev/hwdb.d/60-keyboard.hwdbอาศัยอยู่ใน ดูที่ แต่อย่าแก้ไข (การอัปเดตอาจจะเขียนทับ)

ในการเพิ่มกฎที่กำหนดเองของคุณเราจะสร้างไฟล์ใหม่ในโดยการเรียกใช้/etc/udev/hwdb.d/ sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdbสิ่งที่คุณต้องทำคือการวางในต่อไปนี้ -

หากคุณใช้รุ่น 4000:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

หากคุณใช้รุ่น 7000:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

นี่เป็นการปรับตัวจากบทช่วยสอนที่คุณโพสต์ดังนั้นคุณอาจต้องปรับแต่งตามคีย์บอร์ดของคุณ ดูที่lsusbและตรวจสอบให้แน่ใจว่าvendor:productรหัสด้านบน (ตามv####p####) ถูกต้อง มันจะไม่ทำงานหากพวกเขาไม่ตรงกัน

เมื่อแก้ไขเสร็จแล้วให้คอมไพล์ใหม่ hwdb udev ที่ใช้อีกครั้ง:

sudo udevadm hwdb --update

จากนั้นคุณอาจต้องเสียบปลั๊กอีกครั้ง หากเป็นแป้นพิมพ์ PS / 2 คุณอาจต้องรีบูต ในบางกรณีคุณต้องรีบูต


ขอบคุณสำหรับการตอบกลับ! hwdb.ddir ว่างเปล่าrules.dมีเพียง 3 ไฟล์ ( 70-persistent-cd.rules, 70-persistent-net.rules, README) คุณหมายความว่าฉันต้องสร้างไฟล์ใหม่หรือไม่? หรือฉันต้องแก้ไขบ้างไหม?
Dmitry Belaventsev

ใช่คุณควรสร้างไฟล์ใหม่ กฎคีย์บอร์ดที่มีอยู่กำลังดำเนินอยู่/lib/udev/hwdb.d/60-keyboard.hwdbแต่การแก้ไขจะหายไปหลังจากอัปเดต udev
Oli

2
น่าเสียดายที่ไม่ได้ทำให้ปุ่มเป้าหมายทำงาน
Dmitry Belaventsev

1
@ แมทคุณสามารถใส่ชื่อแทนหลายรายการได้ที่นี่
user.dz

1
แทนที่จะทำการเสียบ | การถอดปลั๊กสามารถใช้udevadm trigger /dev/input/by-id/usb-Microsoft-*เพื่อกระตุ้นการอัพเดท
Alexandr Priymak

37

Ubuntu 15.10 : ฉันไม่ประสบความสำเร็จกับคำตอบก่อนหน้า

ฉันใช้วิธีการที่คล้ายกับวิธีก่อนหน้านี้ได้สำเร็จ - มีการกล่าวถึงคำแนะนำใน /lib/udev/hwdb.d/60-keyboard.hwdbคำแนะนำที่ถูกกล่าวถึงใน

ฉันได้สร้างไฟล์ hwdb ใหม่โดยใช้ sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb ที่มี:

# Microsoft Natural Ergonomic Keyboard 4000 - ทำการย่อซูมเข้า / ออกเพื่อเลื่อนหน้าขึ้น / ลง
evdev: การป้อนข้อมูล: b0003v045Ep00DB *
 KEYBOARD_KEY_c022d = pageup
 KEYBOARD_KEY_c022e = PageDown

หลังจากนั้นฉันก็วิ่ง

sudo udevadm hwdb - อัปเดต
sudo udevadm ควบคุม - โหลด

และแทนที่คีย์บอร์ดและใช้งานได้

สำหรับรุ่น 7000 ใช้ evdev:input:b003v045Ep071D*


9
นี่เป็นคำตอบที่ถูกต้องสำหรับ Ubuntu 16.04
Greg Dan

2
ขอบคุณ แน่นอนมันดูเหมือนว่าkeyboard:คำจำกัดความไม่ทำงานบน Ubuntu 1604 evdev:และจะต้องมีการ แม้จะมีการแมปเริ่มต้น/lib/udev/hwdb.d/60-keyboard.hwdbสำหรับรุ่น 4000 ที่จับคู่กับzoomin/ zoomout- อย่างไรก็ตาม X ไม่สนใจเหตุการณ์ทั้งหมด (xev ไม่แสดงอะไรเลย) ดังนั้นคุณยังต้องเปลี่ยนการกำหนดค่าเช่นนี้
wump

2
b0003ดูเหมือนว่ามันรถบัสที่เฉพาะเจาะจง (ดังนั้นมันอาจจะทำงานในบางพอร์ต USB) ถ้าสิ่งที่ชอบ b*v045Ep071D*ทำงานอาจดีกว่า
Oli

3
ขอบคุณมันใช้งานได้ใน Ubuntu 16.04 ( evdev:input:XXXแทนkeyboard:usb:YYY) นอกจากนี้คุณยังสามารถใช้การทำแผนที่ที่แตกต่างกันแทน/pageup pagedownตัวอย่างเช่นฉันกำลังใช้scrollupและscrolldownทำการเลื่อนจริง
Martin Grůber

1
ทำงานใน Kubuntu 17.10 เช่นกัน
OOPMan

7

วิธีการแก้ปัญหาเดิมโพสต์โดย Oli ไม่ได้ทำงานสำหรับฉัน แต่การทำงานหลังจากที่ผมเปลี่ยนหมายเลขที่สำคัญ"0c022d"และ"0c022e"ไปและ"c022d" "c022e"ฉันใช้รุ่น 4000 ดังนั้นฉันไม่สามารถตรวจสอบได้ว่าต้องการการเปลี่ยนแปลงแบบเดียวกันสำหรับรุ่น 7000 หรือไม่

ที่จะทำซ้ำคำตอบของ Oli นี่คือสิ่งที่ฉันได้: sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdbสร้างไฟล์ใหม่โดยการทำงาน วางบรรทัดต่อไปนี้ลงในไฟล์ (สำหรับรุ่น 4000):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

หลังจากแก้ไขไฟล์แล้วให้คอมไพล์ hwdb ที่ udev ใช้อีกครั้ง:

sudo udevadm hwdb --update

จากนั้นจึงทำการถอดคีย์บอร์ด


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

ทำงานกับฉันใน Ubuntu 15.04 ขอบคุณ!
ปิแอร์

สิ่งนี้ใช้ได้กับฉันใน Debian Jessie 8.5
Nicolás

ฉันต้องการซื้อแป้นพิมพ์ประหยัดและฉันอยากรู้ว่ามันใช้งานได้กับ 16.04 LTS หรือไม่ หรือไม่มีปัญหาเช่นนี้
Arpad Horvath

4

การเพิ่มคำตอบของ Oli หากคุณต้องการให้การเลื่อนบรรทัดเหมือนอยู่บนเมาส์คุณสามารถปรับเปลี่ยนเพจอัป / pagedown เป็นขึ้น / ลงในกฎที่กำหนดเองของคุณ ชอบ:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down

โดยวิธีการ: ขึ้น / ลงเป็นค่าเริ่มต้นใน 18.04
LinuxLuigi

1

โซลูชันที่ดีอยู่ที่นี่และฉันสามารถเพิ่มได้เฉพาะคุณเท่านั้นที่สามารถแมปคีย์กับคีย์ X ที่ไม่ได้ใช้เช่นนั้น:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

ชื่อที่เหมาะสมที่จะใช้แทนของkatakanaสามารถพบได้ที่นี่

หลังจากรีบูต ;-) คุณสามารถทดสอบได้ว่ามีการจับคู่zoominและzoomoutคีย์ต่างๆสำเร็จแล้วและเพื่อค้นหาชื่อของคีย์ที่เหมาะสม (เพื่อใช้rc.xmlสำหรับ OpenBox WM เป็นต้น) โดยใช้xev:

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

ตอนนี้คุณสามารถเชื่อมต่อปุ่มใหม่เพื่อการกระทำที่สมบูรณ์ ในกรณีของตัวจัดการหน้าต่าง OpenBox ฉันใช้สิ่งนี้:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.