Skip to content

Keyboard & markdown ​

Ezynota is keyboard-complete. All shortcuts are IME-safe (composition events and keyCode 229 are handled), so typing in CJK languages never triggers false conversions.

Keyboard shortcuts ​

ShortcutAction
EnterSplit block at caret
Shift+EnterSoft line break
Backspace (at block start)Merge with previous block
Delete (at block end)Merge with next block
Tab / Shift+TabTable cell navigation (creates rows/cols at the edges)
EscapeExit browser fullscreen; otherwise close menus
/Open slash menu
[[Note-link suggestions (workspace mode)

Modifier shortcuts ​

ShortcutAction
Ctrl/Cmd+BBold
Ctrl/Cmd+IItalic
Ctrl/Cmd+UUnderline
Ctrl/Cmd+KInsert/edit link
Ctrl/Cmd+DDuplicate block
Ctrl/Cmd+ZUndo
Ctrl/Cmd+Shift+ZRedo
Ctrl/Cmd+Shift+LToggle list
Ctrl/Cmd+Shift+CToggle code block
Alt+↑ / Alt+↓Move block up / down

Find and replace ​

Open Find in document from the workspace topbar (or More in a narrow container). Within the Find field, Enter goes to the next match and Shift+Enter to the previous match. Escape closes search and returns focus. Search never replaces text; use Replace or Replace all explicitly, or press Enter in the Replace with field.

Markdown typing shortcuts ​

Conversions trigger as you type and each is a single undoable transaction.

Block shortcuts (on Space) ​

TypeResult
# … ######Heading 1–6 (levels configurable, default 1–3)
>Quote
- or *Bulleted list
1. or 1)Ordered list
[] or [x]Task list item (unchecked / checked)

Inline shortcuts ​

TypeResult
**bold** or __bold__Bold
*italic*Italic
~~strike~~Strikethrough
`code`Inline code
==mark==Highlighted text

On Enter ​

TypeResult
---, ***, ___Delimiter block
```Code block

Markdown interchange ​

Typing shortcuts are just one direction of Markdown support. Ezynota converts documents to and from Markdown losslessly:

ts
import { blocksToMarkdown, markdownToBlocks } from "@bookklik/ezynota";

const md = blocksToMarkdown(doc.blocks);
const blocks = markdownToBlocks(md);

See Interchange for the full story (HTML, plain text, print).

Clipboard ​

Copy/cut emit text/plain, text/html, and application/x-ezynota+json (a sanitized document fragment). Pasting follows this priority:

  1. Ezynota JSON (copying between Ezynota editors is lossless)
  2. Files (routed to image tools — paste screenshots directly)
  3. Sanitized HTML (converted to blocks, scripts/styles stripped)
  4. Plain text

Dragging text or files onto the editor uses the same pipeline.

Released under the MIT License. Zero runtime dependencies.