Efektywne korzystanie z dwóch myszek(w grze i na pulpicie)

W tym temacie postaram się umieścić przynajmniej wpisy o uzyskiwaniu dwóch kursorów myszki i dwóch klawiatur,  a także wpisy o przydzielaniu kursora lub klawiatury do aplikacji,  a w przyszłości o uruchamianiu dwóch serwerów X-ów na jednej karcie graficznej. Jak na razie opiszę tylko, jak rozdzielić dwie myszki i klawiatury,  a także, jak przypisać je do jakiejś aplikacji.

 

Przedwczoraj zakupiłem klawiaturę bezprzewodową z trakballem. Jako, że mam dwa monitory(posiadanie dwóch monitorów nie jest wymagane, by dokonać tego, co opiszę), to postanowiłem  wypróbować swoich sił jednocześnie grając i czytając. Wcześniej, dzięki smartfonowi z Androidem, wypróbowałem swoich sił jednocześnie programując i oglądając telewizję, ale to nie temat tego wpisu.

 

Serwer X od dawna obsługuje rozszerzenie XInput2, które pozwala na posiadanie dwóch kursorów myszki i rozdzielenie klawiatur. Kiedyś ktoś zapytał na tym forum, jak można jednocześnie mieć dwa kursory myszki. Odpowiedziałem, żę trzeba mieć wiedzę z zakresu programowania, gdyż obecnie żaden menadżer okien nie wspiera XInput2. No cóż, jeżeli konieczność wpisania kilku komend w terminalu uznać za umiejętność programowania, to miałem rację. Jednak do rzeczy.

 

By uzyskać listę urządzeń, należy wpisać:

xinput list

Spowoduje to wyświetlenie wszystkich urządzeń, nad którymi kontrolę sprawuje bieżący serwer X. Urządzenie mogą być wolne(i jednocześnie wyłączone) lub przypisane do wirtualnego urządzenia.Wirtualne urządzenie zbiera dane z przypisanych mu urządzeń, i przesyła je do aplikacji.

Oto przykład tego, co może pokazać xinput list:

⎡ Virtual core pointer                          id=2    [master pointer  (3)] 
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
   ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
   ↳ Power Button                              id=6    [slave  keyboard (3)]
   ↳ Video Bus                                 id=7    [slave  keyboard (3)]
   ↳ Power Button                              id=8    [slave  keyboard (3)]
   ↳ Sleep Button                              id=9    [slave  keyboard (3)]
   ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
⎡ 100 pointer                                   id=14   [master pointer  (15)]
⎜   ↳ HOLTEK Wireless USB Device                id=11   [slave  pointer  (14)]
⎜   ↳ 100 XTEST pointer                         id=16   [slave  pointer  (14)]
⎣ 100 keyboard                                  id=15   [master keyboard (14)]
   ↳ HOLTEK Wireless USB Device                id=10   [slave  keyboard (15)]
   ↳ 100 XTEST keyboard                        id=17   [slave  keyboard (15)]

Domtyślnie wszystkie urządzenie, nad którymi aktywny serwer X sprawuje kontrolę, są przypisane do Virtual core. Ja utworzyłem dodatkowe urządzenie wirtualne o nazwie 100, do którego przypisałem swoją klawiaturę i trackbala USB.

 

Najpierw musimy utworzyć nowe urządzenie wirtualne, o w ten sposób:

xinput create-mater nazwa_pana

W moim wypadku nazwa_pana, to 100. Następnie wybieramy urządzenia do przypisania do pana, i zapamiętujemy numer  przyporządkowany naszemu urządzeniu, po ciągu id=. Teraz zapamiętujemy numer w nawiasie dla klawiatury i myszki wirtualnej(po ciągu master keyboard, master pointer). Teraz wcześniej zapamiętane numery dla klawiatury fizycznej i myszki fizycznej wykorzystujemy, by zdezaktywować urządzenia:

xinput float id_myszki
xinput float id_klawiatury

Teraz należy je przypisać do władcy(pana), o tak:

xinput reattach id_myszki id_po_master_pointer
xinput reattach id_klawiatury id_po_master_keyboard

Efekt? Mamy dwa kursory myszki!