Both reMarkable devices have 3 distinct devices:
|Name||Path on rM 1||Path on rM 2|
|Wacom Digitizer (Pen input)||/dev/input/event0||/dev/input/event1|
|Multitouch (Finger input)||/dev/input/event1||/dev/input/event2|
Toltec includes an evtest tool which might come handy during debugging. It gives you human readable output out of the evdev files. Here is also a simple python example that reads out the data of the Wacom pen without any libraries on the rM 1 (but every major programming language has a evdev library to make it easier).
Note that many launchers may grab, inject/overflow or intercept these input events to make switching between multiple running programs possible.
Here is an example of debugging the GPIO (Buttons) device and pressing the middle button on once (on a reMarkable 1):
reMarkable: /home/root/ evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: Wacom I2C Digitizer /dev/input/event1: cyttsp5_mt /dev/input/event2: gpio-keys Select the device event number [0-2]: 2 Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 Input device name: "gpio-keys" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 102 (KEY_HOME) Event code 105 (KEY_LEFT) Event code 106 (KEY_RIGHT) Event code 116 (KEY_POWER) Event code 143 (KEY_WAKEUP) Properties: Testing ... (interrupt to exit) Event: time 1611410679.061331, type 1 (EV_KEY), code 102 (KEY_HOME), value 1 Event: time 1611410679.061331, -------------- EV_SYN ------------ Event: time 1611410679.191312, type 1 (EV_KEY), code 102 (KEY_HOME), value 0 Event: time 1611410679.191312, -------------- EV_SYN ------------
libremarkable is a library for the reMarkable in Rust that contains logic to read the inputs of both the reMarkable 1 and 2.
QT applications also support most types of input by default with the provided libraries. Though you might also want to look into Oxide's APIs for improved multitasking support / launcher integration.
Oxide handles informing you of buttons being held in the API, but not normal button presses. Oxide never lets power button presses through (code, so only useful for rM1).
You have triggers in the Oxide API for when your device wakes from sleep (deviceResuming, but make sure your app is a background(able) app).
A bug to be aware of when using Oxide: Launching remarkable-hacks patched xochitl with Oxide breaks L+R shortcut for Zen Mode
You can have a look at button-capture-reMarkable (don't know whether this still works).