Skip to main content



Fires when a task is in focus at the time of using key navigation


"keypress-on-todo": ({
code: string,
event: KeyboardEvent
}) => void;


The callback of the keypress-on-todo event can take an object with the following parameters:

  • code - (required) the code of the pressed key or a combination of the pressed keys in the lower case. The full lists of keyboard shortcuts and their codes are given below
  • event - (required) a native event object

To handle the inner events, you can use the Event Bus methods


const { ToDo, Toolbar } = todo;
const {tasks, projects, users} = getData();

const list = new ToDo("#root", {

const toolbar = new Toolbar("#toolbar", {
api: list.api,

// subscribe to the "keypress-on-todo" event
list.api.on("keypress-on-todo", ({code, event}) => {
console.log("The", code, "key is pressed");

Keyboard shortcuts

There are two groups of keyboard shortcuts:

1. Keyboard shortcuts in the default mode, i.e. when the editing mode of a task is not activated

Keyboard shortcutKey codeDescription
EscapeescapeCloses the menu if it is opened for the task when the key is pressed. Pressing again will close the editor, reset filtering, and collapse search results in the Toolbar

The key codes described below are not available if focus is set on the Search bar of the Toolbar.

Keyboard shortcutKey codeDescription
EnterenterCreates a new task on the same level as the selected one, moves selection to the created task and opens the editor
ArrowUparrowupMoves the selection up to the previous task
ArrowDownarrowdownMoves the selection down to the next task
Ctrl(Cmd)+Enterctrl+enterOpens the editor of the selected task
Ctrl(Cmd)+Click /
added in v1.1
ctrl /
Selects multiple tasks with all their children.
If the task is currently selected - unselects it, moreover:
- If the task has parents which are also selected - unselects the task together with its parents.
- If the task has children which are also selected - unselects only the task itself.
added in v1.1
shiftSelects a range of tasks
added in v1.1
shift+arrowupSelects a task above the current one.
If the task above is currently selected - unselects it
added in v1.1
shift+arrowdownSelects a task (and all its children) below the current one.
If the task below is currently selected - unselects it
Ctrl+ArrowUpctrl+arrowupMoves the selected task up within the same level
Ctrl+ArrowDownctrl+arrowdownMoves the selected task down within the same level
SpacespaceMarks a task as complete or incomplete depending on its initial state
Removes the selected task by the following logic:
- after removing a child task, moves the selection down/up until it reaches the parent task
- after removing a parent task, moves the selection down to the next parent task if it's exist; otherwise, moves the selection up to the previous parent task
ArrowRightarrowrightExpands the collapsed parent task
ArrowLeftarrowleftCollapses the expanded parent task. If the task is already collapsed or does not have child tasks, moves selection to the parent task
TabtabDemotes the nesting level of the task to one lower level
Shift+Tabshift+tabPromotes the nesting level of the task to one higher level
Ctrl(Cmd)+Dctrl+dDuplicates the selected task at the same level
Ctrl(Cmd)+Cctrl+cCopies the selected task into the clipboard, including all child tasks
Ctrl(Cmd)+Vctrl+vPastes the copied task to the same level as the currently selected task. It is possible to paste a copied task to any level, the structure of the copied task is saved

2. Keyboard shortcuts in the editing mode

Keyboard shortcutKey codeDescription
EscapeescapeCloses the editor without saving any changes you've made
EnterenterCloses the editor and saves the changes
Shift+Entershift+enterCreates a new paragraph