Zmapuj boczny przycisk dotykowy myszy Microsoft Sculpt Comfort Mouse

12

Niedawno kupiłem mysz Microsoft Sculpt Comfort Mouse. Używa połączenia Bluetooth z moim laptopem, a wszystkie zwykłe przyciski myszy działają idealnie zarówno pod Linuksem, jak i Windows 7. Co jednak różni się od tej myszy, to że ma specjalny przycisk Windows/ Superz boku, który uruchamia menu start / naciśnięcie. Ma także czujnik dotykowy, który wykrywa naciśnięcie bocznego przycisku w górę lub w dół i wibruje myszą, aby potwierdzić, że została aktywowana.

Oczywiście w systemie Windows jest program, który pozwala mi zmieniać to, co robią pociągnięcia, i wyłączać wibracje.

W systemie Linux xev wykrywa tylko normalne naciśnięcie klawisza po naciśnięciu lub przesunięciu bocznego przycisku. Xev nie zgłasza żadnych naciśnięć przycisków myszy.

Więc moje pytanie brzmi: czy mogę zmienić, jakie naciśnięcia klawiszy są wysyłane w systemie Linux?

Chciałbym zmienić powiązanie klawiszy z tabna down, backspacena up(co raportuje xev) na ctrl+ alt+ left/, rightaby przełączać się między obszarami roboczymi.

Dzięki za wszelką pomoc!

użytkownik223544
źródło
Czy sprawdziłeś howto dla myszy na help.ubuntu.com/community/ManyButtonsMouseHowto ?
ubfan1
1
Dzięki za wskazówkę ubfan1, xinput get-button-map daje mi 13 przycisków. xev i xinput test tylko przyciski 1-7. Próbowałem mapować przyciski 8-13 za pomocą xinput set-button-map i xbindkeys z linku, ale nic się nie zmieniło. Naciśnięcie klawisza bocznego klawisza raportów naciśnij 133 (super), przeciągnij klawisz raportów w górę naciśnij 22 (backspace), przeciągnij klawisz raportów w dół naciśnij 23 (tab).
user223544

Odpowiedzi:

5

Właśnie kupiłem jeden i przekonałem się, że poniższe są dla mnie idealne.

  1. Otwórz edytor dconf ( sudo apt-get install dconf-editorjeśli nie jest jeszcze zainstalowany).
  2. Przejdź do org -> gnome -> desktop -> wm -> skróty klawiszowe.
  3. Zmień wartość przełączenia do obszaru roboczego na

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    oraz wartość przełączenia do obszaru roboczego do

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']

Axel David Ingolfsson
źródło
To rozwiązanie działa bardziej niezawodnie niż rozwiązanie, które znalazłem w xbindkeys. Jedyną wadą w porównaniu z klawiszami xbindkeys jest to, że rozwiązanie xbindkeys przechwytuje tylko zdarzenia klawiszy myszy, podczas gdy to rozwiązanie będzie również działać, jeśli zostaną użyte klawisze klawiatury. Niezależnie od tego niezawodność tego rozwiązania czyni go lepszym rozwiązaniem.
user223544,
2

Ponieważ Microsoft Sculpt Comfort Mouse nie rejestruje naciśnięć przycisków myszy dla gestów super i machnięcia, ale zamiast tego rejestruje naciśnięcia klawiszy klawiatury, użyłem pakietów „xautomation” i „xbindkeys” do nasłuchiwania naciśnięć klawiszy i wysyłania Ctrl+ Alt+ Right/, Leftaby przełączać się między obszarami roboczymi. To nie jest idealne rozwiązanie, ale działa jak 8 na 10 razy.

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

To, co robi skrypt xbindkeys, polega na nasłuchiwaniu naciśnięć klawiszy, które przesuwają myszy w górę i przesuwają gesty w dół wysyłane do komputera. W przypadku wykrycia xautomation wysyła standardowe naciśnięcie klawisza przenoszenia pulpitu, control+ alt+ left/ right.

Gest przesunięcia w górę myszy powoduje naciśnięcie klawisza left control+ left super+ backspace. Przeciągnięcie myszą w dół powoduje naciśnięcie klawisza left control+ left super+ tab. m: 0x4 + mod4 + m: 0x0 + c22 to rzeczywista kombinacja kodu klucza wykrywana przez xbindkeys.

Zajmę się tym trochę więcej, aby sprawdzić, czy mogę poprawić wydajność, ale na razie to załatwia sprawę. Mam tylko nadzieję, że tabi backspacewyjścia myszy nie psują się przy żadnej pracy, którą wykonuję.

użytkownik223544
źródło
1
Czy możesz wyjaśnić, jak działa to rozwiązanie? Czy mysz wysyła Control_L+Super_L+Tab(skąd pochodzą Control_L + Super_L)? Czy dopasowujesz przyciski myszy m:0x4+mod4+m:0x0+c:23(Wydawało się, że w pytaniu nie ma żadnych zdarzeń myszy)?
Volker Siegel,
Zredagowałem moje rozwiązanie, aby wyjaśnić, skąd pochodzą Control_L + Super_L. Wyjaśniłem też cel m: 0x0 + mod4 + m: 0x0 + c: 23.
user223544,
0

Chciałem zmapować te same przyciski, aby poruszać się po kartach w przeglądarce Firefox w obu kierunkach. Używam xbindkeys i xmacro. Działa całkiem dobrze!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
użytkownik3229974
źródło