• Stars
    star
    153
  • Rank 243,368 (Top 5 %)
  • Language
    C++
  • License
    MIT License
  • Created about 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pen event interception for line smoothing on the reMarkable 2 tablet

ReCept: Remarkable Intercept

A small library to intercept and smooth pen events on the reMarkable 2 tablet. This fixes the infamous "jagged lines" issue some users of the reMarkable 2 experience.

before vs after

Disclaimer

This is not an official reMarkable product, and I am in no way affiliated with reMarkable. I release this library in the hope that it is helpful to others. I can make no guarantee that it works as intended. There might be bugs leading to device crashes.

Installation

You need access to a Linux machine to install the fix. On that machine:

  1. Connect your reMarkable 2 with the USB-C cable.
  2. Clone this repository, i.e., run git clone https://github.com/funkey/recept in a terminal.
  3. Change into the repository with cd recept.
  4. Run ./install.sh.

The install script will make several ssh connections to your device. For that, it needs to know the IP address or hostname of your device. If you haven't set up public key authentication before, it will also ask for a password. You can find both the IP address and password in "Settings" -> "Help" -> "Copyrights and licenses", at the bottom.

If you want to uninstall the fix, simply enter 0 when asked for the smoothing value in the install script.

Will it increase the latency?

In short, yes. The pen events themselves are not delayed (the filter itself consists only of a handful of integer operations, which are likely negligible). However, since we forward the average position of the past N events instead of the actual event, the reported position is somewhere close to the N/2-last event received. How much that actually increases latency depends on how fast events come in. As an example, if the pen sends 1000 events per second and the filter size N is 8, the mean will trail the actual pen position by around 4 milliseconds. This calculation assumes isochronous events, which might not be the case.

How does it work?

ReCept uses the LD_PRELOAD trick, which in this case intercepts calls to open and read. Whenever /dev/input/event1 is opened by xochitl (the GUI running on the tablet), librecept remembers the file handle. Subsequent reads from this handle are transparently filtered with a moving average of size 16 by default.

More Repositories

1

conv4d

4D Convolution Operator for TensorFlow
Python
48
star
2

nyroglancer

jupyter notebook extension to visualize numpy arrays with the neuroglancer
Python
27
star
3

waterz

Simple watershed and agglomeration library for affinity graphs.
C++
18
star
4

mala

Training and evaluation scripts for MALA (https://arxiv.org/abs/1709.02974).
Python
12
star
5

sopnet

neuron reconstruction pipeline
C++
9
star
6

unproof

Script to unscramble proofpoint's urldefense URLs
Python
7
star
7

pipeline

a simple to use C++ pipeline architecture
C++
7
star
8

pylp

Unified python wrappers for popular ILP solvers
Cython
6
star
9

bmrm

Fork of the bmrm project (http://users.cecs.anu.edu.au/~chteo/BMRM.html) for structured learning on linearly constraint linear models.
C++
6
star
10

skeletopyze

Simple python module for volume skeletonization.
C++
4
star
11

util

handy things in here, needed by other modules
C++
4
star
12

augment

Simple elastic augmentation for ND arrays
Python
4
star
13

imageprocessing

general pipeline components used for image processing
C++
3
star
14

solvers

Wrapper classes for Gurobi, CPLEX, and SCIP ILP and IQP solvers
C++
3
star
15

cmake

module-based cmake build system
CMake
3
star
16

pymfast

Python solver for the minimal feedback arc set problem
Python
2
star
17

ted

C++
2
star
18

cohear

A simple and fast signalling library with automatic slot-callback association.
C++
2
star
19

gui

general pipeline components for guis
C++
2
star
20

signals

signalling backend for the pipeline module
C++
2
star
21

aff_watershed

3D Watershed on Affinity Graph
C++
1
star
22

resync

A FUSE client for the reMarkable tablet
Python
1
star
23

flywing

Scripts to train and evaluate tracking of developing flywing cells
Jupyter Notebook
1
star
24

microtubules

Python
1
star
25

caffe_luigi

luigi scripts to train and evaluate
Python
1
star
26

pymatch

A simple python module to compute the Hungarian matching using an LP.
Python
1
star
27

bad_ass

BAD Anisotropic Section Sanitizer
Python
1
star
28

quemono

Learn to write a computer game in 88 days
1
star
29

candidate_mc

C++
1
star
30

host

Higher Order Spanning Trees
C++
1
star
31

tools

A volume viewer, an image viewer, and a skeleton viewer.
C++
1
star
32

brembow_experiments

Python
1
star
33

jAER

Java tools for Address-Event Representation (AER) neuromorphic processing.
Java
1
star