tl; dr
Właśnie kupiłem Logitech T630 . Jest to mysz Bluetooth, która obsługuje kilka zdarzeń klawiatury za pomocą gestów (PDF). Te gesty są w porządku i eleganckie, ale nie mam dla nich pożytku. Mam okropny czas, żeby się ich pozbyć.
Chcę wykonać następujące czynności, w kolejności malejącego priorytetu:
- wyłącz te gesty
- odwzoruj gesty (myślę, że bez włamania się do oprogramowania układowego lub inżynierii wstecznej sterowników urządzeń Windows / OS X nie jest to możliwe)
Nie chcę:
- użyj systemu Windows
- wyłącz wszystkie gesty
Aby uzyskać więcej informacji, przeczytaj…
przyciski i gesty
Trzynaście możliwych zdarzeń myszy:
- lewy przycisk myszy
- środkowe kliknięcie
- kliknij prawym przyciskiem myszy
- przewiń do góry
- przewiń w dół
- przewiń w lewo
- przewiń w prawo
- przeciągnij krawędź w lewo
- przeciągnij krawędź w prawo
- przeciągnij dwoma palcami w lewo
- przeciągnij dwoma palcami w prawo
- podwójne wciśnięcie
- stuknięcie dwoma palcami
Pierwsze siedem jest uporządkowane według sposobu mapowania ich przez system operacyjny.
Tylko pierwsze trzy są mechaniczne - wszystkie pozostałe wykorzystują powierzchnię dotykową:
Opcje GUI
Konfiguracja w Kubuntu Trusty była bardzo prosta, ale oferuje niewiele wsparcia w konfigurowaniu tych innych gestów.
Gesty te nie są związane z:
- touchpad (
synaptics
nie działa) - dostępność
- gorące rogi
- standardowe gesty myszy
Wszystkie ustawienia związane z tymi zostały sprawdzone i wszystkie są wyłączone.
ustawienia wiersza poleceń
lomoco
lomoco
Narzędzie, aby pomóc configure specjalnych funkcji myszy USB Logitech nie ma zastosowania.
xinput
Pomyślałem, że xinput
może zaoferować pomoc:
$ xinput --list | grep pointer
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Ultrathin Touch Mouse id=13 [slave pointer (2)]
$ xinput --list-props 13
Device 'Ultrathin Touch Mouse':
Device Enabled (144): 1
Coordinate Transformation Matrix (146): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (266): 0
Device Accel Constant Deceleration (267): 1.000000
Device Accel Adaptive Deceleration (268): 1.000000
Device Accel Velocity Scaling (269): 10.000000
Device Product ID (261): 1133, 45069
Device Node (262): "/dev/input/event11"
Evdev Axis Inversion (270): 0, 0
Evdev Axes Swap (272): 0
Axis Labels (273): "Rel X" (154), "Rel Y" (155), "Rel Horiz Wheel" (746), "Rel Vert Wheel" (265)
Button Labels (274): "Button Left" (147), "Button Middle" (148), "Button Right" (149), "Button Wheel Up" (150), "Button Wheel Down" (151), "Button Horiz Wheel Left" (152), "Button Horiz Wheel Right" (153), "Button Side" (1032), "Button Extra" (1033), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
Evdev Middle Button Emulation (275): 0
Evdev Middle Button Timeout (276): 50
Evdev Third Button Emulation (277): 0
Evdev Third Button Emulation Timeout (278): 1000
Evdev Third Button Emulation Button (279): 3
Evdev Third Button Emulation Threshold (280): 20
Evdev Wheel Emulation (281): 0
Evdev Wheel Emulation Axes (282): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (283): 10
Evdev Wheel Emulation Timeout (284): 200
Evdev Wheel Emulation Button (285): 4
Evdev Drag Lock Buttons (286): 0
Zwróć uwagę na 13 etykiet przycisków:
$ xinput --get-button-map "Ultrathin Touch Mouse"
1 2 3 4 5 6 7 8 9 10 11 12 13
Wyłączenie ich nie pomogło:
$ xinput --set-button-map "Ultrathin Touch Mouse" 1 2 3 4 5 6 7 0 0 0 0 0 0
Nawet jeśli np. Może zmienić środkowy przycisk myszy w lewy przycisk myszy:
$ xinput --set-button-map "Ultrathin Touch Mouse" 1 1 3 4 5 6 7 0 0 0 0 0 0
xmodmap
Podobne do tych xinput
samych wyników:
$ xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0"
inputkbd
Sugerowany przez elmicha poniżej , działa on na poziomie jądra, próbując sprawić, by gesty powodowały zdarzenia pustej klawiatury. Powinien działać, ale tutaj też nie powodzenia, z następującym procesem:
$ sudo input-kbd 4 > keymap # note the 4 is from /dev/input/event4
# edit the keymap to map any combination of keys to either 0 or 240 (KEY_UNKNOWN)
# e.g. change this:
# 0x700e0 = 29 # KEY_LEFTCTRL
# to this:
# 0x700e0 = 0 # KEY_LEFTCTRL
# or this:
# 0x700e0 = 240 # KEY_LEFTCTRL
$ sudo input-kbd -f keymap 4
$ sudo input-kbd 4 # should return the updated keymap
Po wykonaniu tego mapa klawiszy nie pokazuje żadnych zmian.
xkbcomp
Zasugerował to X
haker wejściowy Peter Hutterer , z pewnością człowiek, który powinien wiedzieć, co robi. Nadal nie ma szczęścia:
$ xkbcomp -xkb $DISPLAY t630.xkb
# edit the keyboard description and replace the definition of any key to NoSymbol or VoidSymbol
# e.g. change this:
# key <LCTL> { [ Control_L ] };
# to this:
# key <LCTL> { [ NoSymbol ] };
# or this:
# key <LCTL> { [ VoidSymbol ] };
$ sudo xkbcomp -i 8 t630.xkb $DISPLAY # here the 8 is the id in xinput, names don't work
$ xkbcomp -xkb -i 8 $DISPLAY - # should return the updated keyboard description
Po wykonaniu tej czynności opis klawiatury nie pokazuje żadnych zmian.
Peter uznał, że było to prawdopodobnie spowodowane tym, że X
jest mylony co do natury urządzenia jako klawiatury lub myszy, podobnie jak ten błąd, który ma odwrotny problem. To może wyjaśniać, dlaczego wszystkie inne oczekiwane elementy nie działają. Powiedział jednak również, że używanie evdev
nie powinno działać z tego samego powodu.
evdev
Początkowo wydawało się, że działa, ale też nie. Próbuje to wykorzystać ogólny sterownik wejściowy X
do ustawienia mapowania przycisków poprzez dołączenie następujących elementów do /usr/share/X11/xorg.conf.d/10-evdev.conf
lub /etc/X11/xorg.conf.d/10-evdev.conf
:
# custom for Logitech Ultrathin Touch mouse
Section "InputDevice"
Identifier "Logitech bluetooth Touch Mouse"
Driver "evdev"
Option "Name" "Ultrathin Touch Mouse"
Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection
Section "InputClass"
Identifier "Ultrathin Touch Mouse"
Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection
Wydaje się, że działa bezbłędnie w /var/log/Xorg.0.log
(użyciu grep EE
) i xinput
potwierdza mapowanie przycisków, ale nie powoduje efektu pożądania.
To jest znany do pracy dla T631, jednak.
zdarzenia na klawiaturze
Problem polega na tym, że te gesty generują zdarzenia klawiatury:
$ sudo evemu-record /dev/input/event4 | grep "E: "
# swipe edge right
E: 0.000000 0004 0004 458976 # EV_MSC / MSC_SCAN 458976
E: 0.000000 0001 001d 0001 # EV_KEY / KEY_LEFTCTRL 1
E: 0.000000 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 0.000000 0001 007d 0001 # EV_KEY / KEY_LEFTMETA 1
E: 0.000000 0004 0004 458795 # EV_MSC / MSC_SCAN 458795
E: 0.000000 0001 000f 0001 # EV_KEY / KEY_TAB 1
E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 0.002980 0004 0004 458976 # EV_MSC / MSC_SCAN 458976
E: 0.002980 0001 001d 0000 # EV_KEY / KEY_LEFTCTRL 0
E: 0.002980 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 0.002980 0001 007d 0000 # EV_KEY / KEY_LEFTMETA 0
E: 0.002980 0004 0004 458795 # EV_MSC / MSC_SCAN 458795
E: 0.002980 0001 000f 0000 # EV_KEY / KEY_TAB 0
E: 0.002980 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# swipe edge left
E: 3.306977 0004 0004 458978 # EV_MSC / MSC_SCAN 458978
E: 3.306977 0001 0038 0001 # EV_KEY / KEY_LEFTALT 1
E: 3.306977 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 3.306977 0001 007d 0001 # EV_KEY / KEY_LEFTMETA 1
E: 3.306977 0004 0004 458866 # EV_MSC / MSC_SCAN 458866
E: 3.306977 0001 00c1 0001 # EV_KEY / KEY_F23 1
E: 3.306977 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 3.310979 0004 0004 458978 # EV_MSC / MSC_SCAN 458978
E: 3.310979 0001 0038 0000 # EV_KEY / KEY_LEFTALT 0
E: 3.310979 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 3.310979 0001 007d 0000 # EV_KEY / KEY_LEFTMETA 0
E: 3.310979 0004 0004 458866 # EV_MSC / MSC_SCAN 458866
E: 3.310979 0001 00c1 0000 # EV_KEY / KEY_F23 0
E: 3.310979 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger double tap
E: 10.225976 0004 0004 458983 # EV_MSC / MSC_SCAN 458983
E: 10.225976 0001 007e 0001 # EV_KEY / KEY_RIGHTMETA 1
E: 10.225976 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 10.229986 0004 0004 458983 # EV_MSC / MSC_SCAN 458983
E: 10.229986 0001 007e 0000 # EV_KEY / KEY_RIGHTMETA 0
E: 10.229986 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger swipe left
E: 27.934977 0004 0004 589828 # EV_MSC / MSC_SCAN 589828
E: 27.934977 0001 0113 0001 # EV_KEY / BTN_SIDE 1
E: 27.934977 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 27.937983 0004 0004 589828 # EV_MSC / MSC_SCAN 589828
E: 27.937983 0001 0113 0000 # EV_KEY / BTN_SIDE 0
E: 27.937983 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger swipe right
E: 32.513990 0004 0004 589829 # EV_MSC / MSC_SCAN 589829
E: 32.513990 0001 0114 0001 # EV_KEY / BTN_EXTRA 1
E: 32.513990 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 32.516994 0004 0004 589829 # EV_MSC / MSC_SCAN 589829
E: 32.516994 0001 0114 0000 # EV_KEY / BTN_EXTRA 0
E: 32.516994 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
Jeśli chodzi o mapę klawiszy , odnoszą się one do:
$ sudo input-kbd 4 | grep -e KEY_LEFTCTL -e KEY_LEFTMETA -e KEY_TAB -e KEY_LEFTALT -e KEY_F23 -e KEY_RIGHTMETA -e BTN_SIDE -e BTN_EXTRA
0x700e2 = 56 # KEY_LEFTALT
0x700e3 = 125 # KEY_LEFTMETA
0x700e7 = 126 # KEY_RIGHTMETA
0x7002b = 15 # KEY_TAB
0x70072 = 193 # KEY_F23
0x700e2 = 56 # KEY_LEFTALT
0x700e3 = 125 # KEY_LEFTMETA
0x700e7 = 126 # KEY_RIGHTMETA
0x90004 = 275 # BTN_SIDE
0x90005 = 276 # BTN_EXTRA
Wydaje się, że podwójne dotknięcie nic nie robi.
Inne referencje
Może również pomóc wskazać odniesienie do podobnych problemów w błędzie, gdy wspomniana mysz nie znajduje się w gnome-bluetooth
bazie danych kodów PIN. Nie trzeba dodawać, że dalsze komentarze na ten temat są oficjalnie nie na temat tego raportu o błędach, ale odniesienia mogą pomóc w dodaniu pewnej perspektywy na temat natury tego problemu.
Oto dane wyjściowe evemu-describe /dev/input/event4
FWIW.
Adaptery Bluetooth
FWIW Użyłem dwóch różnych adapterów USB Bluetooth:
$ lsusb | grep Bluetooth
Bus 007 Device 010: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ lsusb | grep Bluetooth
Bus 007 Device 011: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0
vmmouse_detect
narzędzia.xmodmap
ixinput
nawetxorg.conf
będą użyteczne pod Kubuntu, ale nie pod Windows VM. Tak więc w WinVM powinieneś być w stanie skonfigurować mysz za pomocą standardowych narzędzi Logitech dla systemu Windows.Odpowiedzi:
Po dużym bólu udało mi się stworzyć mapę kluczową, która robi coś pożytecznego.
Najpierw kilka notatek (jeszcze nie mogę komentować) do poprzedniej odpowiedzi:
skrypt fixMouse dostarczony przez kopię zapasową Mr nie działa, ponieważ czasami wpis na klawiaturze myszy pojawia się w xinput pod niewłaściwą nazwą, tj. w moim przypadku pokazuje:
z drugiej strony możesz użyć lsinput z input-utils, aby znaleźć poprawny identyfikator:
z jakiegoś powodu, gdy zrzucasz mapę myszy, niektóre kody są duplikowane (te pomiędzy 0x700e0 a 0x700e7), bądź ostrożny, aby je znaleźć i wyeliminować, inaczej oszalejesz.
zastąpienie wszystkich kodów klawiszem KEY_UNKNOWN zapobiega serii losowych znaków, ale sprawia, że specjalne akcje dotykowe są bezużyteczne. W zamian odkryłem, że niektóre gesty można przekształcić w przydatne kombinacje. W szczególności „przeciągnięcie od lewej” wysyła kody 0x700e0 + 0x700e3 + 0x7002b, podczas gdy „przesunięcie od prawej” wysyła 0x700e3 + 0x700e3 + 0x70072. Odwzorowałem 0x700e3, który jest wspólny dla obu gestów, na KEY_UNKNOW, aby usunąć go z drogi. Następnie użyłem pozostałych kodów klawiszy, aby zrobić CTRL + F8 (siatka pulpitu) i ALT-F2 (biegacz), ale oczywiście możesz wygenerować dowolną kombinację dowolnych dwóch kluczy. Oto moja mapa, zachowaj ostrożność podczas kopiowania / wklejania, aby nie pozostawiać pustych linii i początkowych pustych spacji (łamią one wejście-kbd):
Nie byłem w stanie uzyskać odpowiednich kodów dla przeciągnięć dwoma palcami, ale znowu mnie to nie obchodzi, ponieważ te gesty są niemożliwe do wykonania.
PS Jeśli chcesz spróbować dostosować inne gesty, oto jak postępowałem:
Posortowałem wpisy na mapie, wyczyściłem duplikaty i zauważyłem, że zawiera 252 symbole (plus 5 przycisków).
Ustawiłem pierwsze dziesięć symboli na KEY_A, następne dziesięć na KEY_B i tak dalej, aż do ostatnich 2, które stały się KEY_Z; potem załadowałem tę mapę.
Gesty wykonuję w oknach tekstowych (lub możesz użyć „xbindkeys -mk”) i odnotowuję utworzone litery.
Na mapie zmieniam wszystkie litery NIE wyprodukowane na KEY_UNKNOWN, trzy pozostałe na KEY_A, KEY_B, KEY_C .. KEY_Z, KEY_1, .., KEY_4, a następnie ładuję nową mapę.
Wykonuję gest ponownie, zwracam uwagę na wytworzone litery / cyfry: są to kody, które można zdefiniować do wszystkiego, czego potrzebujesz, aby utworzyć określoną kombinację klawiszy.
źródło
Możesz spróbować użyć
input-kbd
zinput-utils
pakietu:Korzystając z indeksu urządzenia wejściowego (np. 4 dla
/dev/input/event4
, który można znaleźć, za pomocąlsinput
którego jest koniecznie inny niż identyfikator użyty wxinput
), możesz ponownie skonfigurować mapę klawiatury, przesyłając jej plik za pomocą-f
przełącznika, np.gdzie
some-file
przyjmuje postaćscancode = keycode|keyname
, gdzie następujące są równoważne:Możesz znaleźć bieżącą mapę za pomocą
sudo input-kbd 4
. Ponieważ musisz otworzyć plik/dev
, musisz użyć superużytkownika, aby zdarzenie to przeczytało.Zauważ też, że pomimo jego pozornie mylącej nazwy, działa również z myszami.
źródło
awk '/KEY_/ { $3 = 240 } { print }'
.KEY_UNKNOWN
lub jeśli chodzi o toBTN_EXTRA
?sudo input-events 4
aby zobaczyć, który przycisk myszy jest który. KEY_UNKNOWN (mam nadzieję) nie drukuje ani nie wyzwala żadnej akcji.name.sh
tam do odwrócenia nazwy klucza -> mapowania kodu, aby umożliwić input_kbd wydrukować nazwy kodów kluczy.Aby wyłączyć gesty, możesz zmienić mapowanie przycisków za pomocą
evdev
sterownika, tak aby wszystkie ostatnie 6 „przycisków” były wyłączone w następujący sposób:dołączając następujące elementy
/usr/share/X11/xorg.conf.d/10-evdev.conf
lub w/etc/X11/xorg.conf.d/10-evdev.conf
zależności od tego, co masz:zrestartowanie
X
serwera za pomocąsudo service lightdm restart
xinput --get-button-map "Ultrathin Touch Mouse"
Można zmienić wartość opcji
InputDevice Identifier
, jeśli chcesz, ale ważne jest, aby zachować wartośćInputDevice Name
iInputClass Identifier
jako „ultracienkich Touch Mouse”, ponieważ jest to w jaki sposóbxinput
rozpoznaje go.Testowany z wersją dla komputerów Mac, T631.
Jeśli potrzebujesz trochę więcej informacji
evdev
, ten post na blogu autorstwa Joe Shawa jest szczególnie wnikliwy na temat tego, jak pasuje do całego stosu wejściowego.źródło
X
plików konfiguracyjnych, zwłaszcza globalnie zdefiniowanych. Niektóre ścieżki aktualizacji zastąpią je, co nie jest idealne. Ponadto nie jest to idealne, ponieważ nie jest jasne, jak ponownie przypisać klucze. Nie twierdzę, że nie jest to prawidłowe rozwiązanie, ale jeśli chodzi o nagrodę, druga odpowiedź może wygrać. ☺ Wreszcie, nie można tego zaimplementować bez ponownego uruchomienia. Może gdybyś mógł wymyślić jakiś sposóbevdev
bezpośredniego rozwiązania problemu, może to być miłe, ale nie znalazłem czegoś takiego.evemu-record
. nie działa :(Udało mi się skonfigurować gesty „przeciągnięcie lewej krawędzi” i „przesunięcie prawej krawędzi” za pomocą xbindkeys; może to dotyczyć również przeciągnięć dwoma palcami, ale nie zawracałem sobie głowy tymi, ponieważ trudno mi je wykonać.
To jest mój .xbindkeysrc
Odwzorowałem je na przydatne skróty KDE, oczywiście możesz zrobić cokolwiek innego. Musisz uruchomić xbindkeys przy logowaniu, utworzyłem plik .desktop, jak wyjaśniono w tutorialach xbindkeys:
HTH
źródło
Byłem sfrustrowany tym, ponieważ nigdy nie mogłem go uruchomić, pomimo wszystkich dostarczonych rozwiązań, w tym dostarczonych przez kogoś, kto faktycznie pisze
X
kod wejściowy. To powiedziawszy, odeszłam od niego i po prostu użyłam normalnej myszy przewodowej.Wczoraj znalazłem Ultrathin i zdecydowałem się wypróbować go ponownie, a to po prostu działa. Jest to prawdą przynajmniej w tym sensie, że powodem tego pytania jest to, że te gesty były interpretowane w dziwny sposób i zakłócały mój przepływ pracy. Teraz wydają się nie mieć żadnego rzeczywistego efektu, z wyjątkiem tego, że przeciągnięcie lewej krawędzi pozwala mi przełączać się między ostatnio używanymi kartami w przeglądarce Firefox.
Dziwne jest to, że w żaden sposób gesty nie są wyłączone. Wszystkie 13 „przycisków” jest zwracanych przez
xinput --get-button-map "Ultrathin Touch Mouse"
.grep Ultrathin /usr/share/X11/xorg.conf.d
Nic też nie zwraca. Nie znaleziono żadnych istotnychNoSymbol
(iVoidSymbol
w ogóle żadnych) zxkbcomp
ani żadnych istotnychKEY_UNKNOWN
zinput-kbd
.Z drugiej strony wszystko wygląda tak samo, z
evemu-record
wyjątkiem faktu, że gesty podwójnego stuknięcia są po prostu traktowane jako prosteBTN_LEFT
zdarzenia.To powiedziawszy, coś się zmieniło w stosunku do tego, ale nie jestem pewien co.
Ponadto nie testowałem mapowania rzeczy, ale tak naprawdę nie wchodziło to w zakres pierwotnego pytania.
źródło
Przeczytałem wszystkie odpowiedzi i napisałem skrypt wokół input-kbd (część input-utils), aby automatycznie naprawić ten problem.
Powinieneś uruchomić fixMouse z tego repozytorium raz na każde logowanie. To będzie:
Standardowe funkcje myszy (lewy przycisk; przewijanie itp.) Nadal działają poprawnie. Zatrzymywane są tylko dziwne klawisze klawiatury.
Przetrwa zawieszenie, tryb uśpienia Bluetooth, włączenie / wyłączenie myszy itp.
Mi to pasuje.
źródło