Jak ponownie przypisać przycisk wyszukiwania do mojego Logitech MX400?


10

Mam sieć bezprzewodową Logitech MX400. Ma przycisk wyszukiwania, którego chciałbym użyć do wklejenia (zamiast bardzo wrażliwego, ale trudnego do naciśnięcia kółka przewijania). Zmapowałem już inne przyciski za pomocą xbindkeys i użyłem xev, aby znaleźć kod przycisku, ale to nie działa w przypadku przycisku wyszukiwania. za pomocą xev i klikając przycisk wyszukiwania otrzymuję następujące zdarzenia

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

Brak zdarzeń ButtonPress. Wygląda na to, że przycisk wyszukiwania jest przechwytywany na poziomie poniżej X zdarzeń. Jakieś pomysły? Mam Ubuntu 12.04. Ubuntu faktycznie widzi kliknięcie i odradza okno wyszukiwania, ale w xev nie ma śladu zdarzenia kliknięcia.

Edytować

Sprawdziłem metodę dostarczoną z xmodmap. Mój .Xmodmapteraz zawiera następujący wiersz

keycode 225 = XF86Paste NoSymbol XF86Paste``

bieganie xmodmap ~/.Xmodmapteraz całkowicie wyłącza przycisk (a przynajmniej nie otrzymuję żadnego wyniku po naciśnięciu). Próbowałem xmodmap -pkei drukuje:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

Dziwne. Wszystkie pozostałe wpisy są podobnie sformatowane. Jestem blisko rozwiązania, ale wciąż jest coś dziwnego.

Edytuj 2

Próbowałem uruchomić xinput (nigdy nie słyszałem o tym poleceniu. Niesamowite rzeczy). Istnieją dwa wpisy dotyczące Logitech. Oto wynik wyszczególnienia każdego z nich (id 9 i 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

Urządzenie testujące 9 nic nie robi z przyciskiem. Zamiast tego działa urządzenie testujące 10, które jest generowane po kliknięciu

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

Wygląda więc na to, że pod tym względem mysz działa jak klawiatura, ale z jakiegoś powodu xmodmap nic nie robi po otrzymaniu klucza 225.

** Edytować **

Potwierdzam, że dodawanie keycode 225 = awydruków za akażdym razem, gdy klikam przycisk. Problem wydaje się więc związany z tym, jak faktycznie obsługiwana jest XF86Paste. Wysyłam to, ale to nie wkleja.


Zostały xbindkeysustawione na uruchamianie podczas uruchamiania prawda? Czy możesz to wyłączyć i spróbować ponownie?
Seth

@iSeth: zabił xbindkeys. Próbowałem jeszcze raz, ten sam wynik.
Stefano Borini,

Otwórz terminal i uruchom, tail -f /var/log/dmesga następnie spróbuj nacisnąć przycisk. Czy otrzymujesz jakieś dane wyjściowe odnoszące się do klawiszy / przycisków?
Seth

1
Przed opublikowaniem kolejnej bzdurnej odpowiedzi ... znajdź identyfikator wejściowy myszy, a xinput listnastępnie znajdź kod przycisku klucza wyszukiwania za pomocą xinput test <MOUSE ID>. czy to działa?
mrcktz

1
Wydaje się, że istnieje potwierdzony błąd, który pozwala xevpokazać zdarzenia XF86Paste / XF86Copy, ale nic się nie dzieje. Oznacza to, że do wklejenia musisz użyć kombinacji klawiszy CTRL + v. Xmodmap mapuje przyciski 1: 1, ale możesz użyć ustawień skrótów klawiaturowych, aby wywołać wykonanie polecenia po naciśnięciu klawisza (patrz moja odpowiedź).
mrcktz

Odpowiedzi:


3

Aby symulować zdarzenia na klawiaturze, sugeruję świetne narzędzie xdotoolZainstaluj xdotool .

1. Zainstalujxdotool przez terminal ( CTRL+ ALT+ T):

sudo apt-get install xdotool

lub skorzystaj z Centrum oprogramowaniaZainstaluj xdotool .

2. Utwórz skrypt, który używa xdotool do emulowania zdarzeń wyłączenia klawiatury CTRLi v. W terminalu:

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

Skopiuj następującą treść do otwartego okna edytora. Po skopiowaniu kodu zapisz, a następnie zamknij go:

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

Teraz uczyń skrypt wykonalnym:

chmod +x ~/bin/fakepaste

3. Wyloguj się i zaloguj, aby ponownie załadować ŚCIEŻKĘ .

4. Utwórz niestandardowy skrót

Idź do System Settings, a następnie przejdź do Keyboard, a następnie Shortcuts.

Naciśnij +przycisk na dole okna dialogowego. Podaj nazwę dla skrótu jesteś o stworzenie i dla wypełnienia polecenia w: fakepaste. Prasa OK.

Obok nowego skrótu zobaczysz disabled. Kliknij ten tekst, a następnie naciśnij klawisz, który chcesz przypisać do emulacji klawiatury.

Teraz powinieneś być w stanie użyć swojego klucza wyszukiwania do wklejania!


1
Nie wiem, jak to pomoże na przycisku myszy, zmienia skróty klawiaturowe .
Seth

2
@iSeth: Chodzi o to, że okazało się, że mysz logitech to zarówno klawiatura, jak i mysz. Jest to mysz do wszystkiego oprócz przycisku wyszukiwania, gdzie działa jak klawiatura
Stefano Borini

2

Rozwiązanie xbindkeys z xdotool

Do tego rozwiązania będziesz potrzebować xbindkeysixdotool

Zabij xbindkeys i zrzuć konfigurację przycisku

killall xbindkeys

i

xbindkeys --defaults >> ~/.xbindkeysrc

Dodaj swoje nowe powiązania

Teraz możesz zmodyfikować ten plik, aby dodać niestandardowe powiązania, które mają formę

"<command>"
  <key combination>

więc jeśli dodasz

"gedit"
  m:0x0 +b:4

będziesz otwierać za geditkażdym razem, gdy przewijasz w górę.

Teraz możesz wypróbować jedną z następujących opcji: wybierz tę, która najlepiej Ci odpowiada. We wszystkich przypadkach xdotool click 2będzie emulowany, jest to środkowe naciśnięcie przycisku myszy, a to wklei zarówno terminale wewnętrzne, jak i zewnętrzne.

  1. przechwytuj 225 z myszy :

    "xdotool click 2"
      m:0x0 +b:225
    
  2. kod przechwytujący 225 ogólnie :

    "xdotool click 2"
      c:225
    
  3. zamień wszystkie XF86Searchzdarzenia (najpierw przywróć ustawienia myszy do pierwotnych ustawień, aby XF86Searchodzyskać):

    "xdotool click 2"
      XF86Search
    

Uruchom xbindkeys i przetestuj

Biegać

xbindkeys

i zobacz, czy to działa.


Chcę poinformować, że myślę, że oboje zasługujecie na nagrodę, ponieważ bardzo mi pomogliście. Nadal nie wiem, czy twoje rozwiązania działają, przetestuję je jutro, ale nagroda wygasa i nie chcę, żeby zmarnowała się. Jak tylko zdobędę wystarczającą liczbę punktów, przyznam ci tę samą nagrodę. Dzięki
Stefano Borini,

Ok, dzięki (chociaż nie wiem, czy to możliwe). Cieszę się, że mogłem pomóc;)
Gerhard Burger

uhm ... masz rację. Mogę przyznać tylko jeden tutaj. Nie martw się, jak tylko będę mieć wystarczającą liczbę przedstawicieli, udzielę jednej z twoich pozostałych odpowiedzi.
Stefano Borini,

Nie, nie przejmuj się. Nic mi nie jest;)
Gerhard Burger
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.