tree: 323e1bb17f4fe37b24583fb253ef7a292d321015 [path history] [tgz]
  1. seccomp/
  2. statemachine/
  3. evdevsource.cc
  4. evdevsource.h
  5. evdevsource_test.cc
  6. faketouchpad.cc
  7. faketouchpad.h
  8. main.cc
  9. README.md
  10. syscallhandler.h
  11. syscallhandler_mock.h
  12. touch_keyboard.conf
  13. touch_keyboard.gyp
  14. uinputdevice.cc
  15. uinputdevice.h
  16. uinputdevice_test.cc
touch_keyboard/README.md

Touch Keyboard

Overview

This package includes the software required for enabling a low-level touch-based keyboard and touchpad. It includes utilities for reading touch events from a specified multitouch input device and selecting a certain region to act as a normal touchpad, then laying out where various “keys” are for a keyboard.

To generate the actual events, this package uses the uinput kernel module to create fake input devices at the kernel level. This allows the touch keyboard and touchpad to look identical to real, physical devices and keeps the upper layers consistent.

When you build this package it will generate an executable called /usr/bin/touch_keyboard_handler that gets started automatically on boot by an upstart script.

Class descriptions

FakeTouchpad

This class is a high-level abstraction that handles everything required to create a “fake” touchpad from a subregion of a larger touch device by using the other helper classes defined here.

FakeKeyboard

This class is a high-level abstraction that handles everything required to create a “fake” keyboard from a subregion of a larger touch device. It knows where each key is on the pad and generates input events accordingly for the system as if it were a real keyboard.

EvdevSource

This is a class that can be derived from (as FakeTouchpad does) to easily allow an object to collect and process Evdev events from an input device.

UinputDevice

This is a class that can be derived from (as FakeTouchpad does) to easily allow an object to create a brand new input device for the OS by using the uinput module, and then generate input event programmatically.

MtStateMachine

This class processes Evdev events into a more manageable format by mimicking the kernel's state machine, and allows us to make sense of the events captured from the source touch sensor.