Как переназначить кнопку поиска на моем Logitech MX400?

У меня есть беспроводной 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 нет следа события click.

Edit

Я проверил метод, предоставленный с помощью xmodmap. Теперь мой .Xmodmap содержит следующую строку

keycode 225 = XF86Paste NoSymbol XF86Paste``

running xmodmap ~/.Xmodmap теперь полностью отключает кнопку (или, по крайней мере, я не получаю никакого результата, нажимая ее). Я попробовал xmodmap -pke, и он печатает:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

Странно. Все остальные записи аналогично отформатированы.

Edit

Я попытался запустить 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. Я отправляю его, но он не вставляет.

1
задан 2 October 2015 в 18:26

1 ответ

Решение xbindkeys с xdotool

Для этого решения вам понадобятся xbindkeys и xdotool

Убейте xbindkeys и сбросьте конфигурацию своей кнопки

killall xbindkeys
[d4 ] и

xbindkeys --defaults >> ~/.xbindkeysrc

Убейте xbindkeys и сбросьте конфигурацию своей кнопки

Теперь вы можете изменить этот файл, чтобы добавить пользовательские привязки, они имеют форму

"<command>"
  <key combination>

, поэтому, если вы добавите

"gedit"
  m:0x0 +b:4

, вы откроете gedit при каждом прокрутке вверх.

Итак, теперь вы можете попробовать одно из следующих , выберите тот, который лучше всего подходит для вас. Во всех случаях xdotool click 2 будет эмулироваться, это средняя кнопка мыши, и это будет вставлять как внутренние, так и внешние терминалы.

перехватить 225 с вашей мыши:
"xdotool click 2"
  m:0x0 +b:225
код перехвата 225 в general:
"xdotool click 2"
  c:225
заменить все события XF86Search (сначала верните настройки мыши в исходные настройки, чтобы вы вернули XF86Search назад:
"xdotool click 2"
  XF86Search

Запустите xbindkeys и проверьте [!d21 ]

Запустите

xbindkeys

и посмотрите, работает ли он.

2
ответ дан 25 May 2018 в 02:40
  • 1
    Я хочу сообщить вам, что я думаю, что вы оба заслуживаете щедрости, поскольку вы очень помогли мне. Я до сих пор не знаю, работают ли ваши решения, завтра я буду тестировать их, но щедрость истекает, и я не хочу, чтобы это пропало. Как только у меня будет достаточно очков, я дам вам такую ​​же награду. благодаря – Stefano Borini 21 January 2013 в 00:25
  • 2
    Оке, спасибо (хотя я не знаю, возможно ли это). Рад помочь ;) – Gerhard Burger 21 January 2013 в 01:19
  • 3
    э-э ... ты прав. Я могу только наградить его здесь. Не волнуйся, как только у меня хватит репутации, я дам вам один из твоих ответов. – Stefano Borini 21 January 2013 в 01:33
  • 4
    Нет, нет, не беспокойтесь. Я совсем в порядке;) – Gerhard Burger 21 January 2013 в 14:33

Другие вопросы по тегам:

Похожие вопросы: