Back to Plugins
No Backspace
Toggle the Backspace key off to stop editing and keep moving forward.
No Backspace
Toggle the Backspace key off to stop editing and keep moving forward.
What it does
- On: pressing Backspace (and, optionally, Ctrl/Cmd+Backspace word-delete and the forward Delete key) does nothing — nothing is deleted.
- Off: the keyboard works normally.
- Toggle from four places, all kept in sync via
app.storage:- the document/sheet toolbar lock button — lives right in the working
window, next to the other toolbar buttons (
registerHeaderAction,fileTypes: ['document', 'sheet']) - the app-header lock button (Timer-button area, project-level)
- the command palette ("No Backspace: Toggle", bindable to a shortcut)
- the plugin's settings tab
- the document/sheet toolbar lock button — lives right in the working
window, next to the other toolbar buttons (
- Settings → Compatibility → "Play nicely with other plugins" controls
whether this plugin coexists with other plugins that also touch
Backspace (default: on — other plugins get first chance at the key) or
takes exclusive priority so it always wins (off). This uses TipTap's
per-extension
priority, so it's read once at load; flip it and re-enable the plugin for it to take effect.
How it works
manifest.jsondeclares theeditor.interceptpermission — the gate for any plugin that wants to swallow keystrokes.src/extension.tsis a small TipTapExtensionregistered viathis.registerEditorExtension(...). ItsaddKeyboardShortcuts()handlers readapp.storagelive on every keypress and returntrue(swallow the key) when blocking is on, orfalse(let it through) otherwise — so the header button / palette command / settings toggle all take effect instantly, no reload needed.src/main.tswires the command, the document/sheet toolbar button (registerHeaderAction), the app-header button (registerAppHeaderAction; both use the built-inisActivepressed-state — no customrenderneeded), the settings tab, and the extension itself.src/settings.ts/src/i18n.tsfollow the SDK's declarative-schema andL/tr/STRlocalization conventions (English, Korean, Japanese).
Build
npm install
npm run build
Produces dist/main.js, which the pensiv app packages into a
.pnsv-plugin and installs alongside manifest.json.
Note:
@pensiv/plugin-sdk/@pensiv/build-configare provided by the pensiv monorepo/host at build & runtime and aren't on the public npm registry, sonpm installonly resolves here once this folder is dropped into (or referenced from) thepensiv-pluginsmonorepo workspace — same as any other plugin cloned fromplugins/sample-plugin.