Multi-touch ввод в ОС Linux

                Аляутдин Р.Т.
            ralyautdin@dev.rtsoft.ru




1
План

     ●
       Multitouch / Gesture support
     ●
       Реализация multitouch ввода в Linux
     ●
       Развитие идей ввода




2
Multitouch / Gesture support (1)



                         Nokia N9 (MeeGo)




3
Multitouch / Gesture support (2)

                           a) Pan gesture

                           b) Swipe gesture

                           c) Pinch gesture




4
Multitouch / Gesture support (3)


                           Использование
                              жестов в
                          качестве пароля




5
Multitouch / Gesture support (ВЫВОД)


             Человеко-машинное
          взаимодействие с помощью
            жестов стало де-факто
                 стандартом




6
Реализация multitouch ввода в Linux
      ●
        Общий принцип работы
      ●
        Поддержка в ядре
          ●
            Протокол А/B
      ●
        Поддержка в userspace
          ●
            XORG
              ●
                MTEV
              ●
                XINPUT 2.2
          ●
            Поддержка в библиотеках
      ●
        Пример
7
Общий принцип работы

      ПРИКЛАДНАЯ БИБЛИОТЕКА




                  XORG ДРАЙВЕР
      USERLAND          ВВОДА

                                  “ЭКРАН”
                                  “ТАЧСКРИН”
                       драйвер
     ЯДРО             тачскрина



                 HW               КОНТРОЛЛЕР




8
Поддержка multi-touch в ядре
      ●
          Ядро 2.6.30 (июнь 2009)
          первый multitouch протокол в
          подсистеме ввода
      ●
          Современные ядра поддерживают
           два типа протокола
      ●
          Протоколы нужны для лучшего
           отражения              возможностей
           аппаратной части
      ●
          Linux/Documentation/input/multi-touch-protocol.txt

9
Протокол А
       ●
           Драйвер должен посылать весь набор координат
            всех контактов
       ●
           Нет отслеживания контактов
       ●
           Недостаток — большой избыточный поток данных
            в юзерленд
       ●
           Подходит для простых контроллеров тачскрина без
            трекинга




10
Протокол А (Пример)
      ABS_MT_POSITION_X x[0]
       ●
      ABS_MT_POSITION_Y y[0]
      SYN_MT_REPORT
      ABS_MT_POSITION_X x[1]    “ТАЧСКРИН”
      ABS_MT_POSITION_Y y[1]
      SYN_MT_REPORT
      SYN_REPORT




       ABS_MT_POSITION_X x[1]
       ABS_MT_POSITION_Y y[1]   “ТАЧСКРИН”
       SYN_MT_REPORT
       SYN_REPORT



11
Протокол B
       ●
           Вводятся понятие слотов и отслеживаемых
             контактов
       ●
           Драйвер отмылает только обновления по
             определенному контакту
       ●
           Уменьшается поток данных от ядра
       ●
           Контроллер должен поддерживать эту фичу




12
Протокол B (Пример)
       ABS_MT_SLOT 0
       ABS_MT_TRACKING_ID 45
       ABS_MT_POSITION_X x[0]
       ABS_MT_POSITION_Y y[0]   “ТАЧСКРИН”
       ABS_MT_SLOT 1
       ABS_MT_TRACKING_ID 46    45        46
       ABS_MT_POSITION_X x[1]
       ABS_MT_POSITION_Y y[1]
       SYN_REPORT




       ABS_MT_SLOT 0
       ABS_MT_POSITION_X x[0]
       SYN_REPORT               “ТАЧСКРИН”
                                     45   46




13
Поддержка в userland. XORG
       ●
           XORG — первый релиз 2004 год
           при этом X-сервер существует с 1984 года
       ●
           XORG отвечает не только за графику, но и за
           средсва ввода
       ●
           Не был готов к тач революции середины нулевых
       ●
           MPX — шаг навстречу мультитач
       ●
           Были созданы “workaround” до нативной поддержки
             XORG multi-touch
           – Релиз XServer 1.12 (июнь 2012) содержит
               XINPUT 2.2 и полную поддержку multi-touch


14
Поддержка в userland. MTEV
       ●
           NOKIA при создании MeeGo нужен был мультитач
             в Qt
       ●
           MeeGo — Linux c Qt в качестве верхнего слоя для
             разработки ПО
       ●
           Был написан драйвер MTEV для XServer
       ●
           Использует MPX
       ●
           Qt c патчем понимает протокол и преобразует в
             соответсвующие классы
       ●
           MTEV — это workaround, пока все ждали native
             support



15
Поддержка в userland. XINPUT2.2
       ●
           XServer 1.12 дает полную поддержку
       ●
           Не все фреймворки готовы:
              ●
                Qt сначала вообще отказывался в пользу
                 Wayland
              ●
                GTK+ 3.4 обещает подержку
       ●
           Fedora 17 должна стать первым дистрибутивом с
             полной поддержкой
              ●
                Name: Peter Hutterer
              ●
                Email: <peter.hutterer@redhat.com>

       ●
           Обещает самый прогрессивный мультитач

16
Поддержка в userland. Библиотеки

       ●
           Qt поддерживает мультитач и жесты
       ●
           Классы жестов плохо работают (4.7)
       ●
           Рекомендуется использовать QML




17
Пример. Gentoo + MTEV + QML




18
Развитие идей ввода




19
Развитие идей ввода

       ●
           Жесты      (высокая      сложность
            распознаваия)
       ●
           Использование датчиков
       ●
           Использование камер




20
ВОПРОСЫ?




21

Linux Multi-Touch intro

  • 1.
    Multi-touch ввод вОС Linux Аляутдин Р.Т. ralyautdin@dev.rtsoft.ru 1
  • 2.
    План ● Multitouch / Gesture support ● Реализация multitouch ввода в Linux ● Развитие идей ввода 2
  • 3.
    Multitouch / Gesturesupport (1) Nokia N9 (MeeGo) 3
  • 4.
    Multitouch / Gesturesupport (2) a) Pan gesture b) Swipe gesture c) Pinch gesture 4
  • 5.
    Multitouch / Gesturesupport (3) Использование жестов в качестве пароля 5
  • 6.
    Multitouch / Gesturesupport (ВЫВОД) Человеко-машинное взаимодействие с помощью жестов стало де-факто стандартом 6
  • 7.
    Реализация multitouch вводав Linux ● Общий принцип работы ● Поддержка в ядре ● Протокол А/B ● Поддержка в userspace ● XORG ● MTEV ● XINPUT 2.2 ● Поддержка в библиотеках ● Пример 7
  • 8.
    Общий принцип работы ПРИКЛАДНАЯ БИБЛИОТЕКА XORG ДРАЙВЕР USERLAND ВВОДА “ЭКРАН” “ТАЧСКРИН” драйвер ЯДРО тачскрина HW КОНТРОЛЛЕР 8
  • 9.
    Поддержка multi-touch вядре ● Ядро 2.6.30 (июнь 2009) первый multitouch протокол в подсистеме ввода ● Современные ядра поддерживают два типа протокола ● Протоколы нужны для лучшего отражения возможностей аппаратной части ● Linux/Documentation/input/multi-touch-protocol.txt 9
  • 10.
    Протокол А ● Драйвер должен посылать весь набор координат всех контактов ● Нет отслеживания контактов ● Недостаток — большой избыточный поток данных в юзерленд ● Подходит для простых контроллеров тачскрина без трекинга 10
  • 11.
    Протокол А (Пример) ABS_MT_POSITION_X x[0] ● ABS_MT_POSITION_Y y[0] SYN_MT_REPORT ABS_MT_POSITION_X x[1] “ТАЧСКРИН” ABS_MT_POSITION_Y y[1] SYN_MT_REPORT SYN_REPORT ABS_MT_POSITION_X x[1] ABS_MT_POSITION_Y y[1] “ТАЧСКРИН” SYN_MT_REPORT SYN_REPORT 11
  • 12.
    Протокол B ● Вводятся понятие слотов и отслеживаемых контактов ● Драйвер отмылает только обновления по определенному контакту ● Уменьшается поток данных от ядра ● Контроллер должен поддерживать эту фичу 12
  • 13.
    Протокол B (Пример) ABS_MT_SLOT 0 ABS_MT_TRACKING_ID 45 ABS_MT_POSITION_X x[0] ABS_MT_POSITION_Y y[0] “ТАЧСКРИН” ABS_MT_SLOT 1 ABS_MT_TRACKING_ID 46 45 46 ABS_MT_POSITION_X x[1] ABS_MT_POSITION_Y y[1] SYN_REPORT ABS_MT_SLOT 0 ABS_MT_POSITION_X x[0] SYN_REPORT “ТАЧСКРИН” 45 46 13
  • 14.
    Поддержка в userland.XORG ● XORG — первый релиз 2004 год при этом X-сервер существует с 1984 года ● XORG отвечает не только за графику, но и за средсва ввода ● Не был готов к тач революции середины нулевых ● MPX — шаг навстречу мультитач ● Были созданы “workaround” до нативной поддержки XORG multi-touch – Релиз XServer 1.12 (июнь 2012) содержит XINPUT 2.2 и полную поддержку multi-touch 14
  • 15.
    Поддержка в userland.MTEV ● NOKIA при создании MeeGo нужен был мультитач в Qt ● MeeGo — Linux c Qt в качестве верхнего слоя для разработки ПО ● Был написан драйвер MTEV для XServer ● Использует MPX ● Qt c патчем понимает протокол и преобразует в соответсвующие классы ● MTEV — это workaround, пока все ждали native support 15
  • 16.
    Поддержка в userland.XINPUT2.2 ● XServer 1.12 дает полную поддержку ● Не все фреймворки готовы: ● Qt сначала вообще отказывался в пользу Wayland ● GTK+ 3.4 обещает подержку ● Fedora 17 должна стать первым дистрибутивом с полной поддержкой ● Name: Peter Hutterer ● Email: <peter.hutterer@redhat.com> ● Обещает самый прогрессивный мультитач 16
  • 17.
    Поддержка в userland.Библиотеки ● Qt поддерживает мультитач и жесты ● Классы жестов плохо работают (4.7) ● Рекомендуется использовать QML 17
  • 18.
  • 19.
  • 20.
    Развитие идей ввода ● Жесты (высокая сложность распознаваия) ● Использование датчиков ● Использование камер 20
  • 21.