SlideShare a Scribd company logo
1 of 21
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

More Related Content

Viewers also liked

System Software Integration, Witekio
System Software Integration, WitekioSystem Software Integration, Witekio
System Software Integration, WitekioWitekio
 
Witekio Corporate Presentation Q42016
Witekio Corporate Presentation Q42016Witekio Corporate Presentation Q42016
Witekio Corporate Presentation Q42016Witekio
 
Witekio IoT presentation
Witekio IoT presentation Witekio IoT presentation
Witekio IoT presentation Witekio
 
Witekio introducing-predictive-maintenance
Witekio introducing-predictive-maintenanceWitekio introducing-predictive-maintenance
Witekio introducing-predictive-maintenanceWitekio
 
Multi-Touch Interaction Overview
Multi-Touch Interaction OverviewMulti-Touch Interaction Overview
Multi-Touch Interaction OverviewTNO
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Viewers also liked (6)

System Software Integration, Witekio
System Software Integration, WitekioSystem Software Integration, Witekio
System Software Integration, Witekio
 
Witekio Corporate Presentation Q42016
Witekio Corporate Presentation Q42016Witekio Corporate Presentation Q42016
Witekio Corporate Presentation Q42016
 
Witekio IoT presentation
Witekio IoT presentation Witekio IoT presentation
Witekio IoT presentation
 
Witekio introducing-predictive-maintenance
Witekio introducing-predictive-maintenanceWitekio introducing-predictive-maintenance
Witekio introducing-predictive-maintenance
 
Multi-Touch Interaction Overview
Multi-Touch Interaction OverviewMulti-Touch Interaction Overview
Multi-Touch Interaction Overview
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Similar to Linux Multi-Touch intro

Павел Курочкин - STeameR
Павел Курочкин - STeameRПавел Курочкин - STeameR
Павел Курочкин - STeameROksana Kurysheva
 
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"Dmitry Savchenko
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)IT-Доминанта
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.Igor Shkulipa
 
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingIevgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingNoNameCon
 
Легко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареЛегко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареOpenVZ
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityDefconRussia
 
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...corehard_by
 
Сетевое оборудование ETegro Technologies
Сетевое оборудование ETegro TechnologiesСетевое оборудование ETegro Technologies
Сетевое оборудование ETegro TechnologiesETegro Technologies
 
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018GigaCloud
 
Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Vasil Remeniuk
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТСбертех | SberTech
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Mikhail Kurnosov
 
SE2016 Exotic Elena Morgun "GIL in different programming languages"
SE2016 Exotic Elena Morgun "GIL in different programming languages"SE2016 Exotic Elena Morgun "GIL in different programming languages"
SE2016 Exotic Elena Morgun "GIL in different programming languages"Inhacking
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructPositive Hack Days
 

Similar to Linux Multi-Touch intro (20)

Павел Курочкин - STeameR
Павел Курочкин - STeameRПавел Курочкин - STeameR
Павел Курочкин - STeameR
 
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.
 
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingIevgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
 
Легко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареЛегко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базаре
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 
Multithreading in go
Multithreading in goMultithreading in go
Multithreading in go
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source security
 
Lirc или домашний медиацентр
Lirc или домашний медиацентрLirc или домашний медиацентр
Lirc или домашний медиацентр
 
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
 
Сетевое оборудование ETegro Technologies
Сетевое оборудование ETegro TechnologiesСетевое оборудование ETegro Technologies
Сетевое оборудование ETegro Technologies
 
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
 
Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТ
 
5бугрин
5бугрин5бугрин
5бугрин
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
 
SE2016 Exotic Elena Morgun "GIL in different programming languages"
SE2016 Exotic Elena Morgun "GIL in different programming languages"SE2016 Exotic Elena Morgun "GIL in different programming languages"
SE2016 Exotic Elena Morgun "GIL in different programming languages"
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai Struct
 

Linux Multi-Touch intro

  • 1. Multi-touch ввод в ОС Linux Аляутдин Р.Т. ralyautdin@dev.rtsoft.ru 1
  • 2. План ● Multitouch / Gesture support ● Реализация multitouch ввода в Linux ● Развитие идей ввода 2
  • 3. Multitouch / Gesture support (1) Nokia N9 (MeeGo) 3
  • 4. Multitouch / Gesture support (2) a) Pan gesture b) Swipe gesture c) Pinch gesture 4
  • 5. Multitouch / Gesture support (3) Использование жестов в качестве пароля 5
  • 6. Multitouch / Gesture support (ВЫВОД) Человеко-машинное взаимодействие с помощью жестов стало де-факто стандартом 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. Пример. Gentoo + MTEV + QML 18
  • 20. Развитие идей ввода ● Жесты (высокая сложность распознаваия) ● Использование датчиков ● Использование камер 20