Как переназначить кнопку поиска на моем 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 нет никаких следов события щелчка.

Редактировать

Я проверил метод, предоставляемый 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. Я посылаю это, но это не вставка.

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

2 ответа

Для моделирования событий клавиатуры, я предлагаю Вас большой инструмент xdotoolInstall xdotool.

1. Установка xdotool через терминал (CTRL+ALT+T):

sudo apt-get install xdotool

или используйте Центр программного обеспеченияInstall xdotool.

2. Создайте сценарий, который использует xdotool для эмуляции ключа вниз события CTRL и против В терминале:

mkdir -p ~/bin  
gedit ~/bin/fakepaste

Скопируйте следующее содержание в окно редактора, которое открылось. После копирования кода сохраняют, затем закрывают его:

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

Теперь сделайте исполняемый файл сценария:

chmod +x ~/bin/fakepaste

3. Выйдите из системы и войдите в систему для перезагрузки ПУТИ.

4. Создайте пользовательский ярлык

Перейдите в System Settings, затем перейдите в Keyboard, затем Shortcuts.

Нажмите + кнопка у основания диалогового окна. Обеспечьте название ярлыка, который Вы собираетесь создать, и команды заполните: fakepaste.Пресса OK.

Рядом с Вашим новым ярлыком Вы будете видеть disabled. Нажмите на тот текст и затем нажмите клавишу, Вы хотите быть присвоенными своей эмуляции клавиатуры.

Необходимо теперь смочь использовать ключ поиска для вставки!

3
ответ дан 2 October 2015 в 18:26

решение для xbindkeys с xdotool

Для этого решения Вам будет нужно xbindkeys и xdotool

Уничтожьте xbindkeys и выведите свою конфигурацию кнопки

killall xbindkeys

и

xbindkeys --defaults >> ~/.xbindkeysrc

Добавьте свою новую привязку

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

"<command>"
  <key combination>

таким образом, если Вы добавляете

"gedit"
  m:0x0 +b:4

Вы откроетесь gedit каждый раз Вы прокручиваете.

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

  1. прервите 225 от своей мыши:

    "xdotool click 2"
      m:0x0 +b:225
    
  2. прервите код клавиши 225 в целом:

    "xdotool click 2"
      c:225
    
  3. замените все XF86Search события (возвращаются Ваши настройки мыши к исходным настройкам сначала, так, чтобы Вы добрались XF86Search назад):

    "xdotool click 2"
      XF86Search
    

Запустите xbindkeys и тест

Выполненный

xbindkeys

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

2
ответ дан 2 October 2015 в 18:26

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

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