Turns the button on the Lamy Pen into an eraser on the reMarkable.

Overview

RemarkableLamyEraser

Standalone tool that turns the button on the Lamy Pen into an eraser on the reMarkable.

Also confirmed to work with these other styli:

  • Samsung S6 S Pen

Install Instructions

SSH into your reMarkable and make a directory to store our files:

cd
mkdir RemarkableLamyEraser

Download the binary from the release page, and the .service file from the project page:

cd ~/RemarkableLamyEraser
wget https://github.com/isaacwisdom/RemarkableLamyEraser/releases/latest/download/RemarkableLamyEraser
wget https://github.com/isaacwisdom/RemarkableLamyEraser/raw/main/RemarkableLamyEraser/LamyEraser.service

Make the binary exectuable, copy the .service file to systemd file, enable, and start it. This means the tool will automatically start on boot:

chmod +x RemarkableLamyEraser
cp LamyEraser.service /lib/systemd/system/
systemctl daemon-reload
systemctl enable LamyEraser.service
systemctl start LamyEraser.service

Uninstall Instrucions

systemctl stop LamyEraser.service
systemctl disable LamyEraser.service
rm -rf ~/RemarkableLamyEraser
rm /lib/systemd/system/LamyEraser.servicea
systemctl daemon-reload
systemctl reset-failed

Usage

When you press the button on the Lamy Pen, an input event with code BTN_TOOL_RUBBER is sent into dev/input/event1. Essentially, this tricks the reMarkable into thinking you are using the eraser side of the Marker Plus. Press and hold to erase, release to use as a normal pen.

Toggle Mode: I also created a mode that toggles between eraser mode and pen mode on the button press. However, due to the way the EMR technology works, the reMarkable can only catch when you've pressed the button on the Lamy pen when it is close to the screen. Personally, I found this made it difficult to use this mode, but if you'd like to switch modes, add --toggle argument in line 6 of the LamyEraser.service file (using nano or whatever). It should look like this:

ExecStart=/home/root/RemarkableLamyEraser/RemarkableLamyEraser --toggle

(Remove the argument to return to press and hold mode.) Then run these commands

cd ~/RemarkableLamyEraser
cp LamyEraser.service /lib/systemd/system/
systemctl stop LamyEraser.service
systemctl daemon-reload
systemctl start LamyEraser.service

TODO:

  • RM1 support (testers needed)
  • Nice install script
  • Some way of changing the toggle mode preference while the service is already running (Anyone have any ideas for this?)
  • Double press to undo
Issues
  • Undo action only works for right hand, portrait orientation

    Undo action only works for right hand, portrait orientation

    Good news, this can be fixed.

    First, find the open document: Finding the open document can be done by getting the PID of xochitl (ie. w/ ps | grep xochitl) and then finding a *.lock file in /proc//fd (ie. w/ ls -l /proc/<PID>/fd | grep .lock) This .lock will start with a UUID (or atleast I think its a UUID) that looks something like 3ea1680e-2003-4581-80f5-e2afab4850b5.

    Then, find the orientation of that document: The orientation of a document "3ea1680e-2003-4581-80f5-e2afab4850b5" can be found in here: ~/.local/share/remarkable/xochitl/3ea1680e-2003-4581-80f5-e2afab4850b5.content

    ie, running cat ~/.local/share/remarkable/xochitl/3ea1680e-2003-4581-80f5-e2afab4850b5.content | grep orientation returns "orientation": "portrait", or "orientation": "landscape",

    I just have to figure out how to implement these in C instead of as shell commands, and then make some functions like getOpenDoc() and getOrientation() that can be called every time the undo action is performed, to determine which specific undo sequence needs to be performed.

    I still need to work out how to tell what orientation the tablet is in. I'm sure there's a file somewhere that can be checked for whether the tablet is in right-hand or left-hand orientation.

    opened by isaacwisdom 6
  • Double Press to undo

    Double Press to undo

    How this will be implemented:

    1. Detect a double press of the button by watching the BTN_STYLUS events.
    2. On a double press, write events that do this: Tap the screen where the undo button is Tap the screen where the panel button is Tap the screen where the undo button is Tap the screen where the panel button is

    We do the commands in that specific order so that it doesn't matter if the tool panel is out, the undo button will be pressed exactly once and the panel will be returned to its starting state.

    Writing the tap events should be easy, but some testing will be needed to see if pen events should be used at /dev/input/event1 or touchscreen events at /dev/input/event2. In either case, I think something will have to be done to prevent any data being written while the above events are written. Otherwise, conflicting data about the location of the touch (most likely from your palm being on the screen) or the location of the pen (from the pen hovering over the screen) will get in the way of the above commands.

    Using ioctl and EVGIOC might help help that, but I think those are more for capturing the input generated by the kernel, and not for blocking the input events made by the kernel.

    There is also the question of how quickly the above events can be written. The limiting factor will probably be how quickly the tool panel can open and close.

    enhancement 
    opened by isaacwisdom 4
  • v2-dev doesn't work with RM2 on ver. 2.9.1.217

    v2-dev doesn't work with RM2 on ver. 2.9.1.217

    Thanks for your project! I like the way you implement customization in v2-dev branch. However, it doesn't work on my RM2 (2.9.1.217). Looking forward to the next update!

    opened by naiqixiao 2
  • Can I donate you money?

    Can I donate you money?

    Hey @isaacwisdom!

    Thanks for such a simple way to add this functionality. This is the sort of thing I would've paid for so I wonder if you have a donation link or perhaps a charity you'd like me to donate $10 to.

    opened by rnmp 1
  • v2-dev not working on rM2 Version 2.10.3.379

    v2-dev not working on rM2 Version 2.10.3.379

    I installed it and got it to run, and clicking and holding to erase works, but nothing else does. Selection eraser, undo, redo, selection, color-grey, and presumably all other options are not working. Running RemarkableLamyEraser from the terminal shows that the clicks are properly detected and the configuration file read. The correct effects are being written, but they aren't doing anyting.

    Note, the undo click in version 1 is working.

    opened by bsvh 1
  • v2 branch doesn't install to 2.9.1.217

    v2 branch doesn't install to 2.9.1.217

    Hi,

    Thank you for the great tool.

    I've tried to install v2 branch to 2.9.1.217 rm2, but it seems that something is wrong with the installation.

    Answering 'y' to "Would you like to edit your configuration now? [y/n]" hangs SSH (I use putty) and if I answer 'no' service still doesn't work.

    The stable version works fine without any issues.

    opened by fbalobanov 0
  • Finalize RM1 Support

    Finalize RM1 Support

    RM1 code is working, although somewhat buggy. To finish implementation, I need someone with an RM1 to grab the screen locations for the buttons on the RM1. I've written a program that will do this, and I have a pdf that will show you where to press. leave a comment if this is something you're interested in helping out with

    opened by isaacwisdom 5
  • Double press to undo sometimes doesn't work

    Double press to undo sometimes doesn't work

    Not really sure why, but in any case, I've noticed that lifting your hand off the screen and then placing it again will eventually make the double press to undo work. There might be a better way of writing the touch events in writeTapWithTouch to make the reMarkable handle the touch events better.

    opened by isaacwisdom 2
Releases(v2.0.0-pre-alpha)
  • v2.0.0-pre-alpha(Jul 18, 2021)

    Adds new features such as: RM1 support* (almost) Flexible triggers and flexible actions (which are being renamed to effects) The compatible triggers are: Click, Double Click, Triple Click, Quadruple Click, Quintuple Click, Press&Hold, Double-Press&Hold, etc. The effects that can be bound to these are: Tool - Eraser, Tool - Erase Selection, Tool - Selection, Action - Undo, Action - Redo, Action - Writing Utensil, Action - Toolbar.

    README still needs to be updated! This will happen when v2.0.0 is officially released.

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jul 3, 2021)

  • 1.0.0(Jun 19, 2021)

A soldering pen with quick charger.

T12-PD-SolderingPen 使用atmega328p作为主控芯片,128x64 OLED屏幕,内置陀螺仪和蜂鸣器。能够读取控制部分电路温度和输入电压,主控电压,主控温度。具备自动启停的功能。 可以保存多组不同的烙铁头信息。烙铁主控部分代码基于https://github.com/wagi

null 261 Jun 14, 2022
waved is aimed at becoming a userspace driver for the reMarkable 2 E-Ink controller.

waved waved is aimed at becoming a userspace driver for the reMarkable 2 E-Ink controller. Disclaimer: This is still a prototype. It might damage your

Mattéo Delabre 31 Jun 17, 2022
A plug which auto turns off when it's Shabbos or Yom Tov.

Melacha Plug A Melacha aware plug which turns off when it's Shabbos or Yom Tov. This project is using ESPHome. Looking to disable a smart doorbell for

Chabad Source 7 Apr 13, 2022
Hide skip button in cutscenes in Max Payne 3

MaxPayne3.FusionFix This is a small project intended to add ability to hide button in Max Payne 3. Additionally, added an option to increase the size

Sergey P. 24 May 30, 2022
A push-button control panel for Zoom

Zoom Control Panel A push-button control panel for Zoom This repo contains files for building a push-button control panel for Zoom.

Elena Long 49 May 7, 2022
If the button pressed esp will reset and App mode will on. App mode will on then led will on, network is connected led will off.

DHT22-to-Google-sheet-Reset-Using-ESP8266-LED-Switch If button pressed esp will reset and App mode will on. App mode will on then led will on, network

Md. Harun-Or-Rashid 4 Oct 5, 2021
TinyRemoteXL - 12-Button IR Remote Control based on ATtiny13A

TinyRemoteXL is a 12-button IR remote control based on an ATtiny13A powered by a CR2032 or LIR2032 coin cell battery.

Stefan Wagner 32 Jun 11, 2022
MFD Button Switches for Flight Simulators. Arduino *.ino and PCB Gerber files and a picture. Now with FalconBMS specific firmwares.

MFD-Switches Use at your own risk. I am not accepting responsiblity for anything. Copyright Ron Lyttle 2021. I have to copyright because of some of th

Ron Lyttle 9 Apr 18, 2022
Turing-ring is a simple Turing Machine using just a Nano, a NeoPixel ring and a rotary encoder+push-button The ring is the tape and the UI.

Turing-ring Turing-ring is a simple Turing Machine using just a Nano, a NeoPixel ring and a rotary encoder+push-button The ring is the tape and the UI

Mark Wilson 2 Dec 26, 2021
L'iconico Button di YouTube rivisitato e reso Smart con un contatore di iscritti in tempo reale!

Smart Youtube Button with Subscribers Counter ESP32 L'iconico Button di Youtube rivisitato e "smartizzato" con un contatore di iscritti in tempo reale

Luca Barsanti 2 Dec 28, 2021
Digispark attiny85 code to smack the big button!

dave-o-rec The big button what records the trucks! Requires the DigiKeyboard.h library, which is included in the Arduino IDE's DigiStump package. Setu

Dave Regan 1 Dec 25, 2021
MDE is a model extraction tool that converts Destiny 2 dynamic models into fbx files supporting textures, skeletons, and all provided vertex data.

MDE is a model extraction tool that converts Destiny 2 dynamic models into fbx files. A dynamic model is one that is animated or is spawned in during the game.

Montague 31 Jun 20, 2022
Automatically inject a DLL into the selected process with VAC3 bypass.

FTP LOADER Automatically inject a DLL into the selected process with VAC3 bypass. This will only, most likely, work only with source engine games in s

null 18 Aug 26, 2021
Programming language that compiles into a x86 ELF executable.

ocean Programming language that compiles into a x86 ELF executable. The main goal at the moment is to create a C compiler, which can atleast compile i

Richard 165 Jun 21, 2022
Integrate the ZENO node system into Blender for creating robust physics animations!

ZenoBlend Integrate the ZENO node system into Blender for creating robust physics animations! End-user Installation Goto Release page, and click Asset

Zenus Technology 31 Jun 10, 2022
C++ POC to write addintional credentials into LSASS process

LSASS_Injection_CreateProcessWithLogonW C++ POC to write addintional credentials into LSASS process Usage: LSASS_Injection_CreateProcessWithLogonW USE

null 3 Feb 9, 2022
Automatically load dlls into any executables without replacing any files!

Automatically loaded dll using xinput9_1_0 proxy. Please put the modified xinput9_1_0.dll in the executable's directory.

null 11 Apr 17, 2022
A package to use Material side sheet into your Flutter project. Learn more about side sheet at Material.io

Side Sheet A package to use Material side sheet into your Flutter project. Learn more about side sheet at Material.io Platform Support Android iOS Mac

Lalit Jarwal 5 May 2, 2022
CobaltStrike BOF - Inject ETW Bypass into Remote Process via Syscalls (HellsGate|HalosGate)

Cobalt Strike BOF - Inject ETW Bypass Inject ETW Bypass into Remote Process via Syscalls (HellsGate|HalosGate) Running InjectEtwBypass BOF from Cobalt

Bobby Cooke 221 Jun 14, 2022