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 .Xmodmap
teraz zawiera następujący wiersz
keycode 225 = XF86Paste NoSymbol XF86Paste``
bieganie xmodmap ~/.Xmodmap
teraz całkowicie wyłącza przycisk (a przynajmniej nie otrzymuję żadnego wyniku po naciśnięciu). Próbowałem xmodmap -pke
i 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 = a
wydruków za a
każ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.
xbindkeys
ustawione na uruchamianie podczas uruchamiania prawda? Czy możesz to wyłączyć i spróbować ponownie?tail -f /var/log/dmesg
a następnie spróbuj nacisnąć przycisk. Czy otrzymujesz jakieś dane wyjściowe odnoszące się do klawiszy / przycisków?xinput list
następnie znajdź kod przycisku klucza wyszukiwania za pomocąxinput test <MOUSE ID>
. czy to działa?xev
pokazać 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ź).Odpowiedzi:
Aby symulować zdarzenia na klawiaturze, sugeruję świetne narzędzie xdotool .
1. Zainstaluj
xdotool
przez terminal ( CTRL+ ALT+ T):lub skorzystaj z Centrum oprogramowania .
2. Utwórz skrypt, który używa xdotool do emulowania zdarzeń wyłączenia klawiatury CTRLi v. W terminalu:
Skopiuj następującą treść do otwartego okna edytora. Po skopiowaniu kodu zapisz, a następnie zamknij go:
Teraz uczyń skrypt wykonalnym:
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ź doKeyboard
, a następnieShortcuts
.Naciśnij
+
przycisk na dole okna dialogowego. Podaj nazwę dla skrótu jesteś o stworzenie i dla wypełnienia polecenia w:fakepaste
. PrasaOK
.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!
źródło
Rozwiązanie xbindkeys z xdotool
Do tego rozwiązania będziesz potrzebować
xbindkeys
ixdotool
Zabij xbindkeys i zrzuć konfigurację przycisku
i
Dodaj swoje nowe powiązania
Teraz możesz zmodyfikować ten plik, aby dodać niestandardowe powiązania, które mają formę
więc jeśli dodasz
będziesz otwierać za
gedit
każ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 2
będzie emulowany, jest to środkowe naciśnięcie przycisku myszy, a to wklei zarówno terminale wewnętrzne, jak i zewnętrzne.przechwytuj 225 z myszy :
kod przechwytujący 225 ogólnie :
zamień wszystkie
XF86Search
zdarzenia (najpierw przywróć ustawienia myszy do pierwotnych ustawień, abyXF86Search
odzyskać):Uruchom xbindkeys i przetestuj
Biegać
i zobacz, czy to działa.
źródło