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
Comments
  • Install not working

    Install not working

    Hi, I wanted to install your tool because I bought the Lamy pen. So I first SSH into the device and then (without making a folder) run the command from Github. There is nothing else in the description. Therefore, I assume that I am done. The problem is unfortunately that the eraser does not work. I also restarted the device and the button does not work. I am on Version 2.14.1.866

    opened by Tripolt 31
  • Conflicting RM2 2.14.1.866

    Conflicting RM2 2.14.1.866

    I've just installed that on my RM2 and I love it however... it seems to be breaking my gestures.

    After restart it works for some time but after couple of clicks with Lamy pen gesture stops working in any document (PDF/Notebook) .

    This is the only hack I installed so there is no other 3rd party software on my RM2

    opened by dawidadach 8
  • 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
  • Support for other pens

    Support for other pens

    Is this project potentially compatible with other pens that have one button and use Wacom EMR? e.g. https://www.staedtler.com/intl/en/products/pencils-and-accessories/stylus/noris-digital-jumbo-180j-22-stylus-pencil-180j-22-1/

    opened by arturbecker 4
  • 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
  • Update README.md

    Update README.md

    removed superfluous "chmod +x"

    "chmod +x" is not really neccessary for this one-liner. The installer can be run just by using it as parameter to "sh"

    opened by allyourcodearebelongtous 3
  • 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 3
  • A request: lazo tool personalization

    A request: lazo tool personalization

    hello, this is a request not a proper issue. If it's possible it would be amazing if in the personalization options there was the possibility to choose (in toggle or in press) the possibility to use the lasso tool in order to select text without have to open the controls panel.

    Thank you for your work!

    opened by Colo219 2
  • cannot edit configuration during installation (v1)

    cannot edit configuration during installation (v1)

    During the installation, when running ./LamyInstall.sh, there is an option to edit the configuration:

    Would you like to edit your configuration now? [y/n]
    

    But this fails with the error message Error opening terminal: xterm-new.

    This is exactly the same error message I get when I try to run the command directly:

    reMarkable: cd /lib/systemd/system/
    reMarkable: nano LamyEraser.service
    Error opening terminal: xterm-new.
    

    Thought you should know. :-)

    opened by saliola 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 2
  • 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
  • TLS certificate validation not implemented

    TLS certificate validation not implemented

    Hello,

    thanks for your resource. But when I put in the install code on SSH command board, it says "wget: note: TLS certificate validation not implemented". I don't know how to solve this question

    opened by minguanyun 1
  • Switch to Highlighter

    Switch to Highlighter

    Hey Isaac,

    I know it's a bit out of scope for the project, but it seems like you just about have support for this. The new Kindle Scribe pen has both an eraser and an eraser button, it would be amazing if the eraser button could switch to the highlighter while held (or toggle on press). Do you think this would be possible?

    opened by brandonkboswell 12
  • 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 10
Releases(v.1.2.0)
  • v.1.2.0(Aug 2, 2022)

  • 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)

Owner
null
A soldering pen with quick charger.

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

null 307 Dec 28, 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 38 Oct 10, 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 Oct 23, 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. 26 Sep 29, 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 48 Nov 15, 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 3 Aug 17, 2022
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 35 Dec 30, 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 10 Jul 10, 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 33 Sep 2, 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 166 Jul 27, 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 36 Oct 28, 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 14 Dec 24, 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 6 Aug 25, 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 238 Dec 9, 2022