Linux :: два, три, пять… указателей мыши

в 19:42, , рубрики: linux, xorg, метки: ,

Не знаю зачем мне это пригодится, но очень вдруг захотелось иметь два указателя мыши в Linux, ведь две «мыши» у меня есть — собственно беспроводная мышь и тач-пад. Идея пришла в тот момент, когда я подключил вторую мышь, т.е. третье устройство управления указателем.

Сколько мышей, столько и курсоров, но как?

Давайте посмотрим — что скажет нам xinput:

max 23:20:19   ~  $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=11   [slave  pointer  (2)]
⎜   ↳ Genius 2.4G Wireless Mouse                id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Villem                                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=15   [slave  keyboard (3)]

Я честно не знаю — почему USB-свисток от Logitech — выводится дважды. Буду благодарен, если кто-то подскажет — почему.

Но я отвлекся! Из выхлопа видно, что у нас всего 4 мыши:

  • Виртуальная
  • Logitech
  • Genius
  • Touchpad

Для того, чтобы увидеть второй курсор создадим группу:

xinput create-master logitech

Теперь на экране ДВА указателя мыши, но второй пока неподвижен, а управляют все три устройства одним и тем же указателем. Давайте скажем X-серверу, что Logitech будет управлять тем самым неподвижным до сих пор курсором. Для этого еще раз посмотрим на

max 23:23:40   ~  $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=11   [slave  pointer  (2)]
⎜   ↳ Genius 2.4G Wireless Mouse                id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Villem                                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=15   [slave  keyboard (3)]
⎡ logitech pointer                              id=16   [master pointer  (17)]
⎜   ↳ logitech XTEST pointer                    id=18   [slave  pointer  (16)]
⎣ logitech keyboard                             id=17   [master keyboard (16)]
    ↳ logitech XTEST keyboard                   id=19   [slave  keyboard (17)]      

Теперь можно различить две группы устройств ввода. «Virtual core» и «logitech», однако мы видим что устройство logitech до сих пор входит в группу Virtual core. Исправим ситуацию — присоединим устройстов с ID=10 (Logitech) к группе с ID=16 (logitech)

xinput reattach 10 16

Теперь мышь от Logitech управляет ранее неподвижным курсором.

Создадим еще одну группу и присоединим к ней наш тачпад:

                                                              
max 23:30:30   ~  $ xinput create-master touchpad
max 23:32:35   ~  $ xinput list                                                                                                                                                                           
⎡ Virtual core pointer                          id=2    [master pointer  (3)]                                                                                                                             
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=11   [slave  pointer  (2)]
⎜   ↳ Genius 2.4G Wireless Mouse                id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Villem                                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=15   [slave  keyboard (3)]
⎡ logitech pointer                              id=16   [master pointer  (17)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (16)]
⎜   ↳ logitech XTEST pointer                    id=18   [slave  pointer  (16)]
⎣ logitech keyboard                             id=17   [master keyboard (16)]
    ↳ logitech XTEST keyboard                   id=19   [slave  keyboard (17)]
⎡ touchpad pointer                              id=20   [master pointer  (21)]
⎜   ↳ touchpad XTEST pointer                    id=22   [slave  pointer  (20)]
⎣ touchpad keyboard                             id=21   [master keyboard (20)]
    ↳ touchpad XTEST keyboard                   id=23   [slave  keyboard (21)]
max 23:32:39   ~  $ xinput reattach 14 20
max 23:32:53   ~  $ 

После этого мы видим три указателя мыши и управляем каждым с отдельного устройства!

Чем это может быть полезно — пока не придумал. Just for fun — посмотреть в изумленные глаза Windows-пользователя и с гордостью сказать:

Смотри, как я могу!

Автор: maxidler

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js