Keyboard Driven Workflow and Commands

Basically I want to be able to use RemNote without touching the mouse.

In the following I collect what is missing for that and and a few thoughts on how it might be implemented (optimally and maybe unrealisticly).

I invite you to watch how you use RemNote and if you discover something you need to use the mouse for to report it below, if it is not already listed.

Related to:

Keyboard driven workflow - Are we mouse-free yet?

Rationale

For me (and maybe other “techy” people) “power-user” features like mouse-free editing is very important. A fast, friction-free editing experience allows users to stay in the flow and output information “at the speed of thought”.

Vision - How could RemNote be improved?

  1. Modal editing: Distinguish between Editing Mode and Command Mode. RemNote already has a state in which you can not edit because no rem is focused. Here we could have simple keystrokes for navigating around and structuring notes.
    • Jupyter Notebook/Hub is a does pretty well. Jupyter notebooks are actually quite similar to bullet points in RemNote: It is a cell-based editor on the web platform. The cells can just not be indented. In command mode you can for example
      • A to insert above
      • b to insert below
      • d, d to delete cell
      • j move down
      • k move up
      • (Shift +) Enter start editing
    • This could be a setting for power-users (e.g. “Vim mode”) and enable a second set of shortcuts for most commands.
  2. Commands: Many text editors have a Ctrl + Shift + P menu listing all commands – even trivial ones like move character left. RemNote has commands internally (AddAllSlots … ZoomOutOfRemInOtherPane). But:
    • Not everything has a command yet (see below).
    • Commands should be exposed such that they can be composed to new commands via plugins or user scripts.
    • The user should be able to assign a shortcut to all commands. Not all commands need a default shortcut.
    • /commands are then just be a subset (the ones that make sense when writing) of all available commands, i.e. no navigation commands.

Missing Commands and Shortcuts

Some actions can not be done with keyboard yet. Some have no easy action and require multiple keystrokes or too much thinking.

A view things require multiple keystrokes (like deleting a Rem = select → del). These things don’t require a shortcut immediately, but would be useful as unbound commands to help customizing a workflow.

Here is a list of things which can’t be done with keyboard yet.

Application Navigation

  • Focus (left, right, other) pane for editing
    • And have the last edit point saved.
    • When you focus an open pane again it should jump to this position. If you open a document again, it could give you the option to jump to the last edit position (commands like openRem, gotoLastEdit or openRemAtLastEdit come to mind)
  • Close other/second pane
  • Focus title/Focus Editor
  • Focus sidebar
    • Move up/down
    • Toggle folders
    • Open selected
  • Goto next/previous day

Editor Navigation

  • Move to Rem in Document
    • We have Ctrl + F which find the rem. Pressing Enter focuses the rem for editing, but not reveals the other Rem again nor close the search dialog. Closing the search with the mouse resets the focus.
    • Option 1: The bullet points turn into little labels temporary or permanently (for power users) which you can jump to. Think Vim easymotion or Vimium extension for Chrome/Firefox).
    • Option 2: Use the search limited to current page and not open the Rem but focus it.
  • Scroll View
    • There are also some glitches that the scroll position does not follow the cursor perfectly.
  • Follow Reference under cursor
  • Show Reference preview window
    • Focus and Scroll Reference preview window?

Editing

  • :white_check_mark: Delete rem without selecting first:: Ctrl + Shift + Alt + Backspace
  • Tags
    • Focus/show tags
    • Remove tag
    • Toggle #Extra Card Detail
  • Indenting in place (breaking hierarchy), e.g. dedenting the second of three siblings makes it the parent of the third sibling.
  • /plain and some other slash commands have no shortcut yet
  • Insert Rem Below (Useful when in a code block, exists in meatballs menu)
  • Insert Rem Above (exists in meatballs menu)
  • Insert Child (the exisiting Enter command actually inserts a sibling if the current rem has not children and a child if it does, and Enter is overwritten in Code blocks where it adds an extra line)

Misc Actions

  • Delete currently openend Document/Rem
    • You can almost move it to a custom trash if it has a parent you can zoom out to and focus the previously opened document.

Other

  • Show Keyboard Shortcuts should focus the Search box

Bugs, Glitches

There are a few things that make the editor stuck somehow and require a mouse click to work

Shortcut Collisions

  • Shift + Up/Down to select lines in code blocks selects the rem instead.
    • I’d like a more powerful code editor like Codemirror or Monaco anyways, but I don’t know how well this integrates with SlateJS.

Issues with non-US layouts

  • RemNote is not optimized for non-US layouts yet. It feels like it is using event.key under the hood. But maybe not always. IDK, it’s glitchy. For example: To clear a heading there is Ctrl + Alt + ` which is supposed to be the key next to 1. And pressing it works on Chrome, but not on Firefox. On my QWERTZ this key is labeled with ^/°. If I reassign it and press the exact same shortcut which worked previously in Chrome it reads now Ctrl + Alt + ^ and it does not work anymore.
  • And there is also event.which (deprecated) mixed in somehow. On Chrome ^ and ö have both event.which == 192 for some reason (browsers, plz!). You can check that e.g. with keycode.info.
  • Update: It used which and it is fixed: Do not use event.which for keyboard shortcuts · Issue #284 · remnoteio/remnote-issues · GitHub. It still remains how how to handle non-US layouts. Eg. On German QWERTY I can not press Ctrl + [. All those keyboard shortcut have to be remapped manually.

Possible Solutions:

I like VSCode’s approach to have the shortcut trigger on the same physical buttons on all layouts (e.g. Ctrl + Alt + button left of 1) and display the actual required characters to type based on the keyboard layout (Ctrl + Alt + ^ on QWERTZ and Ctrl + Alt + ` on QWERTY). This is not trivial.

  • VSCode uses a lot of lookup tables.
  • Another solution might be to use event.code only which is the same on all layouts and solve the display problem by using the Keyboard API (only implemented on Chrome, but this would work for electron=desktop app? at least): navigator.keyboard.getLayoutMap().get(event.code).

In the same spirit, there should be some improvements made so that you can navigate the queue mouse free. I already made one suggestion Add keyboard shortcut to exit/enter the "type your answer" box and thought of another one: if you click on the show metadata shortcut and then press it again, it should remove the pop up.

The reason why I decided not to write a separate request is because it’s essentially the same goal of mainly using the keyboard for everything but if you don’t want me to do that, you can delete this of course and I will write a separate request.

(and while we are on the topic of not having to use your mouse Annoyed when I have to scroll down to see what I'm typing)

2 Likes

Amazing post ! The idea of adapting Vim Easymotion to Remnote is an absolute game-changer.
Some shortcuts i’m thinking of :
Go to Queue
Done Editing in Queue like ctrl+enter in Anki

4 Likes

Possibly related?

1 Like

Good idea! I support that.
Would make work much easier, or even possible, not only on the PC, but also on a tablet.


also I’d like to be able to scroll using keyboard(arrow keys or PgUp/PgDn) while in queue; which doesn’t seem possible at the moment. I feel this need in cases where answers revealed need scrolling

I don’t think it was listed but a shortcut for

  • Open the Rem that a cursor is on either in current pane or new pane.

Something like

  • cmd+enter to open the Rem in current pane
  • cmd+shift+enter to open Rem in new pane

Right now I think my only option is to double click.

It seems that theses ones already exists. Capture

any update? I really need some shortcuts! thx!

  1. collapse/expand on different level
  2. turn into multiline card and Question rem
  3. delete current document
  4. delete current rem(without selecting it)

Does this help at all, @jackiexiao?

  1. Those may be the ones you already know about:
    image

  2. Change to Question (must already have :: or it just adds a ? at the end of the rem): image

  3. No idea, would be handy.

  4. You mean without a click and drag selection or any selection? (Or at all?)
    Ctrl + A selects different aspects inside the desired Rem…group, depending on the number of presses:

  • press 1 time: selects the rem your cursor is in (same as double clicking inside of it does).
  • press 2 times: adds the nested rems of that rem (and their nested ones - doesn’t differentiate beyond the first nest, so it counts everything in that…block) to the first selection, if there are any nested Rems.
  • press 3 times: selects all rems in the document.
    You press Delete at the selection level desired and all selected go away cleanly.

^Those already work. I agree that more shortcuts (and smartly done) will be needed tho.

1 Like

thx for your reply!

  1. would be better if remnote have something like: ctrl + alt + 0/1/2/3/4 for different level collapse/exapand
  2. change existing rems into multi line card , for example, I know there is ?::: syntax, but it’s not convenient for change existing rems to multi-line card item
    image
  3. Thx!

Here’s something that would be useful for me: ability to define shortcuts to specific documents/Rems. (like ALT+D is to Today’s document)

I have a “home Rem” where I go to very often, with tasks and links to projects I’m currently working on. Every time I want it, I need to use the trackpad to click on it on the sidebar (annoyingly, it’s still slightly quicker than doing CTRL+P, typing first letters of its name, then hitting enter).

Would be good to be able to define a custom shortcut to that.

Even better if I could do this for multiple shortcut/Rem combinations (for other Rems I use often).

1 Like

Another suggestion: have CTRL+\ (navigate to Parent) also work for the Rem currently open (considering, of course, it has a parent).

Example below: if I am in the Apps Rem, and want to navigate to its parent (Time-tracking), I need to use the trackpad and click on it.

You can zoom out with Ctrl+;

2 Likes

True! Good to know there is this shortcut. Thanks

Still, shouldn’t CTRL+\ do the same if the title is in focus? Seems intuitive.

One more suggestion: to be able to use ESC to dismiss UI in more contexts.

See this post and my comment there:

1 Like

I agree! I do the same thing (I call it my START page for my “home” view), where I collect references to various projects I’m currently working on, as well as random todos that I want to carry forward until done.

I use autohotkey for various things, so I made a little autohotkey to pull up my START document and daily docs in facing panes. It would be nice to be able to do it easily just with RemNote, however, by defining a shortcut key to a specific document/rem as @ognsya suggests.

;====== Open Today’s Date and START panes in RemNote, ALT+S =======
!s::
Send, !d ; open Daily Document for today
Sleep 500 ; when scripts don’t work I arbitrarily insert Sleep commands (prob. compensates for slow internet)
Send, ^+p ; Search for Document in the other pane
Sleep 500
Send, {U+2B55} ; I’m using a unique unicode here to make sure it finds only the correct document
Send START ; the unicode plus START designates my start or “home” page
Sleep 250
Send, {Enter}
return

Which gives me this.

In general, I have mixed feeling about all the RemNote hotkeys. There are just so many of them I can’t remember them all. I’m glad there is the / menu, and I wouldn’t be opposed to an old school top menu driven by ALT and the first letter of each menu term as you step into it. I hate “ribbon bar” menus, so I’m glad RemNote doesn’t use those. I’m also glad that autohotkey seems to override the RemNote hotkeys, since several of my autohotkeys are also used by RemNote.

2 Likes

You could just use escape or cmd+. to close the popup. Didn’t know this as an iPad user because we don’t have a dedicated escape button

“Vim is not a text editor its a way of life” :grin:

But on a serious note, since I started using Vim I find typing in any other editor excruciatingly tedious. This feature would be a godsend.

6 Likes

sometime I accidentally create a document(ctrl + enter), I would like a shortcut to delete current document, also a search for shortcut would be better