ฉันมี logitech MX400 wireless มันมีปุ่มค้นหาที่ฉันต้องการใช้เพื่อวาง (แทนที่จะเป็นวงล้อเลื่อนที่ไวต่อความรู้สึก แต่กดยากมาก) ฉันทำการแมปปุ่มอื่นด้วย xbindkeys แล้วและใช้ xev เพื่อค้นหารหัสกดปุ่ม แต่ไม่สามารถใช้งานได้กับปุ่มค้นหา ใช้ xev และคลิกที่ปุ่มค้นหาฉันได้รับเหตุการณ์ต่อไปนี้
FocusOut event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 34, synthetic NO, window 0x0,
keys: 4294967275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue
ไม่มีเหตุการณ์ ButtonPress ดูเหมือนว่าปุ่มค้นหาจะถูกสกัดกั้นในระดับที่ต่ำกว่าเหตุการณ์ X ความคิดใด ๆ ฉันมี Ubuntu 12.04 อูบุนตูเห็นการคลิกและวางไข่ในกล่องโต้ตอบการค้นหา แต่ไม่มีร่องรอยการคลิกใน xev
แก้ไข
ฉันตรวจสอบวิธีการที่ให้มาพร้อมกับ xmodmap .Xmodmap
ตอนนี้ฉันมีบรรทัดต่อไปนี้
keycode 225 = XF86Paste NoSymbol XF86Paste``
xmodmap ~/.Xmodmap
ตอนนี้ทำงานปิดการใช้งานปุ่มทั้งหมด (หรืออย่างน้อยฉันไม่ได้รับผลใด ๆ จากการกดมัน) ฉันลองxmodmap -pke
แล้วมันจะพิมพ์ออกมา:
keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste
แปลกพอสมควร รายการอื่น ๆ ทั้งหมดอยู่ในรูปแบบที่คล้ายกัน ฉันใกล้จะแก้ปัญหาแล้ว แต่ก็ยังมีบางสิ่งแปลก ๆ
แก้ไข 2
ฉันพยายามเรียกใช้ xinput (ไม่เคยได้ยินคำสั่งนี้สิ่งที่น่าอัศจรรย์) Logitech มีสองรายการ นี่คือผลลัพธ์ของการแสดงรายการแต่ละรายการ (id 9 และ 10)
Logitech USB Receiver id=9 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 24
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )
Logitech USB Receiver id=10 [slave pointer (2)]
Reporting 6 classes:
Class originated from: 10. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 10. Type: XIKeyClass
Keycodes supported: 248
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
อุปกรณ์ทดสอบ 9 ไม่ได้ทำอะไรด้วยปุ่ม อุปกรณ์ทดสอบ 10 ทำงานแทนและนี่คือผลลัพธ์เมื่อฉันคลิก
$ xinput test 10
key press 225
key release 225
key press 225
key release 225
key press 225
key release 225
ดังนั้นดูเหมือนว่าเมาส์จะทำหน้าที่เป็นคีย์บอร์ดในเรื่องนี้ แต่ด้วยเหตุผลบางอย่าง xmodmap จะไม่ทำอะไรเลยเมื่อได้รับคีย์ 225
** แก้ไข **
ฉันสามารถยืนยันได้ว่าการเพิ่มการkeycode 225 = a
พิมพ์a
ทุกครั้งที่ฉันคลิกปุ่ม ดังนั้นปัญหาดูเหมือนจะเกี่ยวข้องกับวิธีการจัดการ XF86Paste จริง ๆ ฉันกำลังส่ง แต่มันไม่ได้วาง
tail -f /var/log/dmesg
แล้วเรียกใช้จากนั้นลองกดปุ่ม คุณได้รับการส่งออกหมายถึงคีย์ / ปุ่ม?
xinput list
xinput test <MOUSE ID>
มันใช้ได้ไหม?
xev
แสดงเหตุการณ์ XF86Paste / XF86Copy แต่ไม่มีอะไรเกิดขึ้น นั่นหมายความว่าคุณต้องใช้คีย์ผสม CTRL + v เพื่อการวาง Xmodmap จับคู่ปุ่ม 1: 1 แต่คุณสามารถใช้การตั้งค่าแป้นพิมพ์ลัดเพื่อเรียกใช้คำสั่งเมื่อกดปุ่ม (ดูคำตอบของฉัน)
xbindkeys
ตั้งค่าให้ทำงานเมื่อคุณเริ่มต้นใช่ไหม คุณสามารถปิดการใช้งานและลองอีกครั้ง?