Meefik's Blog

Freedom and Open Source

Поворот экрана в режиме кадрового буфера

Ниже приводится решение для правильного поворота экрана в режиме фрейм-буфера. Т.е. чтобы была повернута картинка на 90 градусов (ландшафтная ориентация) и драйвер сенсорного экрана обрабатывал это поворот корректно. Решение опробовано на Samsung Galaxy S2 (i9100), тачскрин MXT224 (узнать модель тачскрина можно командой: cat /sys/devices/virtual/sec/sec_touchscreen/tsp_touchtype), Ubuntu 13.04 Raring Ringtail и Debian 7.0/wheezy.

Что работает:

  • позиционирование курсора к месту нажатия;
  • обработка удерживания (эмуляция удерживания левой кнопки мыши);
  • обработка двойного нажатия одним пальцем (эмуляция левой кнопки мыши);
  • обработка нажатия двумя пальцами (эмуляция правой кнопки мыши);
  • поворот координат сенсорного экрана.

Для этого нужно выполнить следующие шаги:

  • Установить дистрибутив через Linux Deploy (Debian или Ubuntu) и подключиться к консоли под пользователем root (например, по SSH).

  • Доставить необходимые пакеты:

apt-get install build-essential wget unzip xorg-dev libmtdev-dev
wget https://github.com/meefik/xorg-input-mtev/archive/master.zip --no-check-certificate
unzip master.zip
  • Запустить сборку драйвера:
cd ./xorg-input-mtev-master/
make
  • Скопировать драйвер в каталог модулей Xorg:
cp obj/mtev.so /usr/lib/xorg/modules/input/mtev_drv.so
  • Отредактировать файл /etc/X11/xorg.conf:
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
InputDevice "touchscreen" "CorePointer"
EndSection
Section "InputDevice"
Identifier "touchscreen"
Option "Device" "/dev/input/event2" #linuxdeploy
Driver "mtev"
Option "Rotation" "1"
EndSection
Section "Device"
Identifier "Card0"
Driver "fbdev"
Option "fbdev" "/dev/graphics/fb0" #linuxdeploy
Option "Rotate" "CW"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
  • Запустить GNU/Linux через Linux Deploy в режиме фрейм-буфера (Параметры -> Графическая подсистема -> Framebuffer). Для набора текста можно использовать виртуальную клавиатуру florence.