Co dwa kursory to nie jeden
02.03.2011 | aktual.: 31.12.2011 15:09
Rozważaliście kiedyś możliwość obsługi komputera za pomocą kilku myszy? Okazuje się, że w GNU/Linuksie jest to całkiem realna opcja. Zastosowania niech sobie każdy wymyśli sam, ja tylko podam metodę włączenia tej funkcji.
Najpierw proponuję odczytać numery identyfikacyjne urządzeń wejściowych. Służy do tego komenda xinput list. Gdy już zrozumiemy format, w jakim program nam to wypluwa, tworzymy nowy kursor* - xinput create-master JAKAŚ_NAZWA. Teraz jeszcze raz wypisujemy urządzenia poprzednią komendą (wtedy tak naprawdę jej nie potrzebowaliśmy, ale dobrze się najpierw z nią zapoznać) i przypisujemy jedną z myszy do nowo utworzonego kursora - xinput reattach ID_MYSZY ID_KURSORA. Na dobrą sprawę to już wszystko.
*) Wiem, że to pewne uproszczenie, ale większa wiedza nie jest nam potrzebna.
Aby przywrócić mysz do normalności, przydzielamy ją do domyślnego kursora, a potem kasujemy ten nasz (xinput remove-master ID_KURSORA).
Napisałem sobie skrypt do włączania i wyłączania dwóch kursorów. Jest bardzo prosty, więc raczej nie wymaga komentarza. Trzeba go oczywiście nieco zmodyfikować, ale nie jest to trudne.
#!/bin/zsh getid() { xinput list | grep -m 1 "$1" | sed 's/.*=\([^\t]*\).*/\1/' } MOUSEID1=$(getid "Mouse0") MOUSEID2=$(getid "DualPoint Stick") #if [ -z "$MOUSEID" ]; then # echo "The mouse is not connected" # exit 1 #fi if [ -z "$(xinput list | grep '2ndMouse')" ]; then xinput create-master 2ndMouse SECOND=$(getid 2ndMouse) xinput reattach $MOUSEID1 $SECOND xinput reattach $MOUSEID2 $SECOND echo "Dual Wielding Mode activated" else FIRST=$(getid "Virtual core pointer") SECOND=$(getid 2ndMouse) xinput reattach $MOUSEID1 $FIRST xinput reattach $MOUSEID2 $FIRST xinput remove-master $SECOND echo "Dual Wielding Mode deactivated" fi
PS: Pamiętam, że był jakiś program-proteza na Windowsa, który robił coś podobnego, ale nie pamiętam nazwy. Poza tym, miewał różne dziwne problemy (chociaż przedstawione przeze mnie rozwiązanie też nie jest bez wad).