logoFloweo
All posts

The keybinds, and why they're chords

6 min read

The first thing people get wrong about Floweo's shortcuts is that they hold the modifier down. That works, but it isn't how they're designed, and if you keep holding Ctrl you'll eventually collide with something your browser wants.

The bindings are chords, in the tmux sense: press the modifier, let go, then press the key. The modifier arms the next keystroke rather than combining with it.

Ctrl, release, k. Not Ctrl+k.

That takes about ten minutes to stop feeling strange, and then it's better, for a reason worth explaining before the reference table.

Why not just Ctrl+key

The workspace has three things that want your keyboard at once: a video, a note editor, and a chat. The editor is CodeMirror, which has its own keymap and can run in Vim mode. Every plain Ctrl+letter combination is already claimed by one of: the editor, the browser, or your OS. Ctrl+l is Chrome's address bar. Ctrl+j is downloads. Ctrl+k is a search box in roughly every app built since 2020.

Chords sidestep the whole fight. The keystroke that carries the letter has no modifier on it, so nothing else recognises it as a shortcut. Floweo sees a bare k shortly after a bare Ctrl and knows what you meant.

The practical upshot is that the letters can stay short and mnemonic. The video keys are j k l, which anyone who has used YouTube or Vim already has in their fingers, and they work while your cursor is inside a note.

Three details that matter in use:

  • The window is 500 ms. Modifier, then the key, within about half a second. Miss it and the chord disarms, quietly — nothing happens rather than something wrong happening.
  • Any of Ctrl, Alt, or Cmd arms it. Use whichever your hand is nearest. On a Mac, Cmd is usually the comfortable one.
  • Holding the modifier still works for most bindings, so old habits don't break. The exception is chat focus, below, where held and released do deliberately different things.

If you type Ctrl+c to copy and then type a j a moment later, the chord doesn't fire. A modifier used for a real combination is spent on that combination.

The bindings

Defaults. Everything except the timestamp key is rebindable.

ChordDoes
Ctrl kPlay / pause
Ctrl jJump back
Ctrl lJump forward
Ctrl ,Focus the note editor
Ctrl .Focus the chat input
Ctrl+. (held)Toggle the chat panel open or shut
Ctrl+x (held)Close the chat panel
Ctrl+t (held, in the editor)Insert a timestamp link

The jump distance depends on the source: 10 seconds for YouTube, 15 seconds for a file you uploaded. That's not a design decision so much as the two players having different natural step sizes; it's on the list to unify.

All of these are registered on the window in the capture phase, which is the boring implementation detail that makes them work while the editor has focus. The event reaches Floweo before CodeMirror or Vim mode sees it.

The two chords that carry the day

Everything above is useful. Two of them are the reason the rest exists.

Ctrl j while typing. You're mid-sentence in a note, you didn't catch the last thing that was said, and you don't want to leave the sentence. Chord, chord, chord — three taps rewinds thirty seconds — and your cursor never moved. This is the one that changes how it feels to take notes from video, because the alternative (mouse to the scrubber, aim, click, mouse back, find your place in the sentence) costs enough attention that most people just... don't. They let the sentence be slightly wrong.

Ctrl+t in the editor. Drops the current playback position into the note as a link. Click it later and the video seeks there.

The second one is worth doing more than feels necessary. A note like "the retry logic bit is worth rewatching" is nearly worthless three weeks later in a two-hour video; the same note with a timestamp is a click. And because returning becomes cheap, you become willing to skip — mark the confusing five minutes, keep the thread, come back with a specific question instead of grinding in place.

Note that Ctrl+t is a genuine held combination, not a chord, because it's registered inside the editor's own keymap rather than globally. It only fires when the editor has focus, which is where you'd be anyway.

Chat: held and released differ

Ctrl+. held toggles the panel. Ctrl, release, . focuses the input in an already-open panel.

Two behaviours on one key looks like an accident, but it's the distinction you actually want. Opening and closing a panel is a layout action; you do it a few times a session and you're probably not typing when you do. Jumping to the input is something you do constantly, from inside a note, mid-thought, and it needs to be a chord for the same reason the video keys do.

Ctrl+x held closes the panel outright, for when you want it gone and don't want to think about which state the toggle is in.

Rebinding

Settings → Hotkeys. Five of them — pause, seek forward, seek backward, focus chat, focus editor — take a single character each. Changes save to your browser and apply to the workspace immediately; no reload.

Two caveats worth knowing before you go looking:

  • Customising shortcuts is a Pro / Flow feature. On the free plan the panel is visible but read-only, showing the defaults.
  • The timestamp key isn't in that list yet. It's Ctrl+t and currently that's that.

If you're coming from Vim, the sensible remap is nothing at all: j k l already mean what you expect. If you're coming from a video editor, j / l as shuttle keys will also feel familiar. The one people do change is , and . for editor and chat focus, usually to bracket keys.

When a chord doesn't fire

Almost always one of three things.

You held the modifier for a binding that wants it released. Only chat focus is picky here, and it's the most common cause of "why did the panel just toggle."

You were too slow. Half a second is shorter than it sounds when you're also reading. Tap the modifier and the key as one gesture rather than deciding in between.

Focus is somewhere unexpected — a dialog, or an iframe that swallowed the keystroke. Click once on the note editor and try again.

There's also the pop-out player. When the video is in a separate window, the keystroke lands in whichever window has focus, and the chord is forwarded across to the player. It should be invisible in use; if a chord seems to do nothing right after popping out, click the window you're typing in once.

The point of all this

You can use Floweo entirely with a mouse and it works fine. But the thing that makes video notes worse than book notes is that every interruption costs you the sentence you were writing, and a mouse interruption costs the whole sentence. The bindings exist to get that cost down to three keystrokes without moving your hands.

Learn two of them and ignore the rest: Ctrl j to rewind, Ctrl+t to mark. The others you'll pick up when you want them.