Project Description

This project aims to implement evdev protocol support in FreeBSD kernel, thus allowing to use xorg unmodified evdev input driver (xf86-input-evdev) and adding generic support for touchscreen devices.

For now, there's a couple of incompatible touchscreen drivers in FreeBSD - for example, uep(4), which has it's own character device node and custom xorg driver talking with it. Having evdev support in kernel will allow to use one, already existing driver on xorg side: xf86-input-evdev.

The plan is to also modify uhid(4) driver to report events using evdev interface. That will allow to use FreeBSD on QEMU with -usbdevice tablet switch and will therefore fix issue with misplaced cursor in FreeBSD running on QEMU and VNC.

Why evdev?

Assumptions

Features present in Linux, but out of scope of this project

Project timeline

  1. Create evdev protocol headers and interface specification - week 0
  2. Design and implement generic evdev kernel interface for input devices. It should be simple as possible and will be probably somewhat inspired by the Linux interface. - weeks 1-2

  3. Write evdev character device interface, which includes:
    1. EVIOC* ioctls
    2. event processing from driver to userspace
    3. event processing from userspace to driver (injecting events by software)
    4. reporting of buffer overruns using SYN_DROPPED event - weeks 3-4
  4. Write wrapper for keyboards to report events to evdev layer - week 5
  5. Modify existing mice drivers (psm, mse, ums) to report events to evdev layer - week 6
  6. Create unit tests using python-evdev - week 7
  7. Compile and run xf86-input-evdev under FreeBSD - week 8
  8. Rewrite uep(4) driver for evdev support - week 9
  9. Rewrite uhid(4) driver - weeks 10-11
  10. Final cleanups - week 12

Deliverables

Code

SummerOfCode2014/evdev_Touchscreens (last edited 2014-05-09 14:50:17 by JakubKlama)