Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 0 additions & 47 deletions docs/src/evdev/api/ecodes.md

This file was deleted.

8 changes: 4 additions & 4 deletions docs/src/evdev/api/uinput.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,10 @@ ui:sync()
[`create(spec?)`]: #create
[`emit(type, code, value)`]: #emit
[`evdev.UInput`]: /evdev/api/uinput
[`evdev.ecodes.btn`]: /evdev/api/ecodes
[`evdev.ecodes.ev`]: /evdev/api/ecodes
[`evdev.ecodes.key`]: /evdev/api/ecodes
[`evdev.ecodes.rel`]: /evdev/api/ecodes
[`evdev.ecodes.btn`]: /evdev/types#evdev-ecodes-btn
[`evdev.ecodes.ev`]: /evdev/types#evdev-ecodes-ev
[`evdev.ecodes.key`]: /evdev/types#evdev-ecodes-key
[`evdev.ecodes.rel`]: /evdev/types#evdev-ecodes-rel
[`evdev.eventValue`]: /evdev/types#evdev-eventvalue
[`evdev.fd`]: /evdev/types#evdev-fd
[`evdev.uinputSpec`]: /evdev/types#evdev-uinputspec
Expand Down
48 changes: 11 additions & 37 deletions docs/src/evdev/index.md
Original file line number Diff line number Diff line change
@@ -1,71 +1,45 @@
# evdev

[![Test](https://img.shields.io/github/actions/workflow/status/BlueLua/evdev/test.yml?branch=main&label=test&style=flat-square)](https://github.com/BlueLua/evdev/actions/workflows/test.yml)
[![LuaRocks](https://img.shields.io/luarocks/v/BlueLua/bluelua-evdev?color=blue&style=flat-square)](https://luarocks.org/modules/BlueLua/bluelua-evdev)
![Lua Versions](https://img.shields.io/badge/lua-5.1%20%7C%205.2%20%7C%205.3%20%7C%205.4%20%7C%205.5%20%7C%20LuaJIT-blue?style=flat-square)
![Platform](https://img.shields.io/badge/platform-linux-blue?style=flat-square)
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/BlueLua/evdev/blob/main/LICENSE)

Lua bindings for Linux `evdev` input devices and `/dev/uinput` virtual devices
(keyboards, mice, and relative pointers).
Lua bindings for Linux evdev input devices and /dev/uinput virtual devices.

Check out the [documentation] for guides and examples.

## ✨ Features

- **Device Discovery**: List and search for connected input devices by name,
path, or physical location.
- **Event Stream**: Easily read kernel input events with high-resolution
timestamps.
- **Virtual Devices (uinput)**: Emulate any hardware input device (mouse,
keyboard, gamepad) programmatically.
- **Event Selector**: Poll multiple input devices concurrently in a single
- **Event Stream**: Read kernel input events with high-resolution timestamps.
- **Virtual Devices**: Emulate any hardware input device (mouse, keyboard,
gamepad) programmatically via uinput.
- **Event Selector**: Poll multiple devices concurrently in a single
non-blocking event loop.
- **Multiple Lua Versions**: Compatible with LuaJIT, Lua 5.1, 5.2, 5.3, 5.4, and
5.5.

## 📦 Installation

Install the library via LuaRocks:

```bash
```sh
luarocks install bluelua-evdev
```

## 🚀 Usage

### Listening to Key Presses

```lua
local evdev = require "evdev"

-- Find and open the primary keyboard
local dev = assert(evdev.device.open("/dev/input/event0"))
print("Opened device: " .. dev.name)

-- Process events in a loop
for event in dev:events() do
if evdev.events.is_press(event) then
print("Key Pressed! Code: " .. event.code)
print("Key pressed: " .. event. code)
end
end
```

### Creating a Virtual Keyboard

```lua
local evdev = require "evdev"
local ecodes = evdev.ecodes

-- Create the virtual keyboard
local ui = assert(evdev.uinput.create())

-- Press Shift + A
ui:emit(ecodes.EV_KEY, ecodes.KEY_LEFTSHIFT, 1)
ui:emit(ecodes.EV_KEY, ecodes.KEY_A, 1)
ui:sync()

-- Release Shift + A
ui:emit(ecodes.EV_KEY, ecodes.KEY_A, 0)
ui:emit(ecodes.EV_KEY, ecodes.KEY_LEFTSHIFT, 0)
ui:sync()

ui:close()
```
[documentation]: https://bluelua.github.io/evdev
Loading