All Projects → vi → virtual_touchscreen

vi / virtual_touchscreen

Licence: other
Simple evdev linux device driver and GUI program to simulate multitouch touchscreen

Programming Languages

c
50402 projects - #5 most used programming language
clojure
4091 projects
perl
6916 projects
Makefile
30231 projects

Projects that are alternatives of or similar to virtual touchscreen

Jeelizglassesvtowidget
JavaScript/WebGL glasses virtual try on widget. Real time webcam experience, robust to all lighting conditions, high end 3D PBR rendering, easy to integrate, fallback to server-side rendering
Stars: ✭ 134 (+76.32%)
Mutual labels:  virtual
Emupedia.github.io
The purpose of Emupedia is to serve as a nonprofit meta-resource, hub and community for those interested mainly in video game preservation which aims to digitally collect, archive and preserve games and software to make them available online accessible by a user-friendly UI that simulates several retro operating systems for educational purposes.
Stars: ✭ 206 (+171.05%)
Mutual labels:  virtual
nrf24
nrf24l01 linux device driver
Stars: ✭ 20 (-73.68%)
Mutual labels:  linux-kernel-module
Qt Virt Manager
Qt Virtual machines manager
Stars: ✭ 146 (+92.11%)
Mutual labels:  virtual
Botany
command line virtual plant buddy
Stars: ✭ 192 (+152.63%)
Mutual labels:  virtual
virtblkiosim
Virtual Linux block device driver for simulating and performing I/O.
Stars: ✭ 30 (-60.53%)
Mutual labels:  virtual
Playground
A new kind of virtual event platform 🐧
Stars: ✭ 120 (+57.89%)
Mutual labels:  virtual
home-space
Startpage and WebXR home
Stars: ✭ 43 (-43.42%)
Mutual labels:  virtual
Sharpfilesystem
A virtual file system for .NET written in C#
Stars: ✭ 193 (+153.95%)
Mutual labels:  virtual
Embedded-Linux-Education-Kit
Embedded Linux Education Kit
Stars: ✭ 66 (-13.16%)
Mutual labels:  linux-kernel-module
Memflow
physical memory introspection framework
Stars: ✭ 149 (+96.05%)
Mutual labels:  virtual
Val
VirtualDOM abstraction layer - give yourself better integration and full control over the DOM with any virtual DOM library that uses a Hyperscript-like API such as React and Preact.
Stars: ✭ 181 (+138.16%)
Mutual labels:  virtual
Umbra
A LKM rootkit targeting 4.x and 5.x kernel versions which opens a backdoor that can spawn a reverse shell to a remote host, launch malware and more.
Stars: ✭ 98 (+28.95%)
Mutual labels:  linux-kernel-module
Dxr
DXR is a Unity package for rapid prototyping of immersive data visualizations in augmented, mixed, and virtual reality (AR, MR, VR) or XR for short.
Stars: ✭ 134 (+76.32%)
Mutual labels:  virtual
mok-project
Multilingual Onscreen Keyboard Project
Stars: ✭ 27 (-64.47%)
Mutual labels:  virtual
Iocipher
make non-root mountable encrypted disk shares
Stars: ✭ 124 (+63.16%)
Mutual labels:  virtual
Ros robotics projects
Example codes of new book ROS Robotics Projects
Stars: ✭ 240 (+215.79%)
Mutual labels:  virtual
VAOS
Virtual Aviation Operations System
Stars: ✭ 44 (-42.11%)
Mutual labels:  virtual
DGUS-reloaded
DWIN T5UID1 touchscreen firmware for 3D printers running Marlin.
Stars: ✭ 71 (-6.58%)
Mutual labels:  touchscreen
devheart
Listen to Tux's heartbeat with this awesome Linux Kernel Module ❤️
Stars: ✭ 58 (-23.68%)
Mutual labels:  linux-kernel-module

virtual_touchscreen

Simple virtual input device for testing things in Linux. Creates a character device and an input device.

screenshot.

Building

module

Building for current kernel:

make

Building for custom kernel (from a configured kernel directory):

make modules M=/path/to/virtual_touchscreen/

application

Use run virtual_touchscreen.clj or just use pre-built virtual_touchscreen.jar from Github releases

Using

Some testing

# insmod virtual_touchscreen.ko
# dmesg | grep virtual_touchscreen
virtual_touchscreen: Major=250
# cat /dev/virtual_touchscreen
Usage: write the following commands to /dev/virtual_touchscreen:
    x num  - move to (x, ...)
    y num  - move to (..., y)
    d 0    - touch down
    u 0    - touch up
    s slot - select multitouch slot (0 to 9)
    a flag - report if the selected slot is being touched
    e 0   - trigger input_mt_report_pointer_emulation
    X num - report x for the given slot
    Y num - report y for the given slot
    S 0   - sync (should be after every block of commands)
    M 0   - multitouch sync
    T num - tracking ID
    also 0123456789:; - arbitrary ABS_MT_ command (see linux/input.h)
  each command is char and int: sscanf("%c%d",...)
  <s>x and y are from 0 to 1023</s> Probe yourself range of x and y
  Each command is terminated with '\n'. Short writes == dropped commands.
  Read linux Documentation/input/multi-touch-protocol.txt to read about events

1# printf 'x 200\ny 300\nS 0\n' > /dev/virtual_touchscreen
1# printf 'd 0\nS 0\n' > /dev/virtual_touchscreen
1# printf 'u 0\nS 0\n' > /dev/virtual_touchscreen

2# hd /dev/input/event11 # or whatever udev assigns
# printf 'x 200\ny 300\nS 0\n' > /dev/virtual_touchscreen
# printf 'd 0\nS 0\n' > /dev/virtual_touchscreen
# printf 'u 0\nS 0\n' > /dev/virtual_touchscreen

And events should flow from the newly created input device:

# hd /dev/input/event11 # or whatever udev assigns
00000000  df 32 48 4f a6 10 02 00  03 00 00 00 c8 00 00 00  |.2HO............|
00000010  df 32 48 4f ab 10 02 00  03 00 01 00 2c 01 00 00  |.2HO........,...|
00000020  df 32 48 4f bf 10 02 00  00 00 00 00 00 00 00 00  |.2HO............|
00000030  e3 32 48 4f af af 09 00  01 00 4a 01 01 00 00 00  |.2HO......J.....|
00000040  e3 32 48 4f bc af 09 00  00 00 00 00 00 00 00 00  |.2HO............|
00000050  e7 32 48 4f 3d bb 05 00  01 00 4a 01 00 00 00 00  |.2HO=.....J.....|
00000060  e7 32 48 4f 50 bb 05 00  00 00 00 00 00 00 00 00  |.2HOP...........|

GUI

There is a GUI application that can also provide data for virtual touchscreen: virtual_touchscreen.clj. (pre-built bundled version; SHA256=917698e287e1b707e09c3040d6347f5f041d7a60fef0a6f5e51c2b93ccd39f3c, also available on Github Releases)

It listens port 9494 and provides virtual_touchscreen input for connected clients.

Example (checked with Clojure 1.3, may need updating):

hostA$  java -cp clojure.jar clojure.main virtual_touchscreen.clj

hostB#  nc hostA 9494 > /dev/virtual_touchscreen

Misc

There is also experimental script to read /dev/input/eventX of some real device and output data for virtual_touchscreen. It is long unmaintained although. Maybe see forks for alternative script.

Licence

Kernel module's licence is GPL. GUI app's license is MIT or Apache 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].