Як перезавантажити кнопку пошуку на моїй Logitech MX400?


10

У мене є бездротовий модуль 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. Я надсилаю його, але це не вставляти.


Ви xbindkeysзапустили запуск при запуску, правильно? Чи можете вимкнути його і спробувати ще раз?
Сет

@iSeth: убив xbindkeys. Спробував ще раз, той же результат.
Стефано Борині

Відкрийте термінал і запустіть, tail -f /var/log/dmesgа потім спробуйте натиснути кнопку. Чи отримуєте ви якийсь вихід, що стосується клавіш / кнопок?
Сет

1
Перш ніж надсилати ще одну дурницьку відповідь ... дізнайтеся вхідний xinput listкод вашої миші, а потім з’ясуйте код кнопки вашої кнопки пошуку xinput test <MOUSE ID>. Це працює?
mrcktz

1
Здається, підтверджена помилка, яка дозволяє xevпоказувати події XF86Paste / XF86Copy, але нічого не відбувається. Це означає, що вам потрібно використовувати комбінацію клавіш CTRL + v для вставки. Xmodmap відображає кнопки 1: 1, але ви можете використовувати налаштування комбінацій клавіш, щоб запустити виконання команди при натисканні клавіші (див. Мою відповідь).
mrcktz

Відповіді:


3

Для імітації подій на клавіатурі я пропоную вам чудовий інструмент xdotoolВстановіть xdotool .

1. Встановітьxdotool через термінал ( CTRL+ ALT+ T):

sudo apt-get install xdotool

або використовувати Центр програмного забезпеченняВстановіть xdotool .

2. Створіть сценарій, який використовує xdotool для емуляції ключових подій вниз CTRLта v. У терміналі:

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

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

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

Тепер зробіть сценарій виконуваним:

chmod +x ~/bin/fakepaste

3. Вийдіть та увійдіть, щоб перезавантажити свій PATH .

4. Створіть спеціальний ярлик

Іти System Settings, потім перейти Keyboard, потім Shortcuts.

Натисніть +кнопку внизу діалогового вікна. Введіть ім'я для ярлика , яку Ви збираєтеся створити і для заливки команди в: fakepaste. Натисніть OK.

Поруч із вашим новим ярликом ви побачите disabled. Клацніть на цьому тексті, а потім натисніть клавішу, яку потрібно призначити емуляції клавіатури.

Тепер ви маєте можливість використовувати ключ пошуку для вставки!


1
Я не бачу, як це допоможе на кнопці миші, вона змінює комбінації клавіш.
Сет

2
@iSeth: Справа в тому, що виявилося, що миша logitech є і клавіатурою, і мишею. Це миша для всього, крім кнопки пошуку, де вона діє як клавіатура
Стефано Борині

2

розчин 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

і подивіться, чи працює він.


Я хочу повідомити вам, що я думаю, що ви обидва заслуговуєте на винагороду, оскільки ви мені дуже допомогли. Я досі не знаю, чи спрацьовують ваші рішення, я завтра перевіряю їх, але щедрість закінчується, і я не хочу, щоб вона втрачала трату. Як тільки у мене вистачить балів, я надаю вам таку ж суму. Спасибі
Стефано Борині

Оке, дякую (хоча я не знаю, чи можливо це). Рада допомогти;)
Герхард Бургер

гмм ... ви праві. Я можу тут нагородити лише одного. Не хвилюйся, як тільки у мене буде достатня кількість представників, я надаю ще одну з ваших відповідей.
Стефано Борині

Ні, ні, не турбуй. Я цілком гаразд;)
Герхард Бургер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.