У меня 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. 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
настроили запуск при запуске? Вы можете отключить его и попробовать еще раз?