У мене є бездротовий модуль Logitech MX400. У ньому є кнопка пошуку, яку я хотів би використовувати для вставки (замість надзвичайно чутливого, але важко натискаючого колеса прокрутки). Я вже перезаписав інші кнопки з 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. Ubuntu насправді бачить клік і породжує діалогове вікно пошуку, але в 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
запустили запуск при запуску, правильно? Чи можете вимкнути його і спробувати ще раз?