Keyboard shortcuts

Issue #1 new
tomzx created an issue

I'm a keyboard kind of guy.

I think it would be awesome if we could quickly use the keyboard to navigate through the interface.

Common shortcuts:

  • Add item under currently selected item
  • Delete current item
  • Edit current item
  • Navigate the tree/graph

My favorite/suggested keyboard shortcut library is https://craig.is/killing/mice.

Comments (8)

  1. Steve Hazel repo owner

    I'd also want shortcuts for:

    • Switch between view and edit modes
    • Cycle the node size between compact, expanded, and exclusive
    • Increase/decrease the filter level
    • Modify the node

    Any thoughts on how navigating to a child (outward-linked) node should work? There may be many child nodes and these nodes will change along with the filter level and also due to the passage of time.

    I'd like a navigation scheme that avoids having to cursor around as much as possible. Maybe something like assigning a number between 1 and 9 to the nodes in a consistent (say clock-wise) sequence. Any thoughts?

  2. tomzx reporter

    Any thoughts on how navigating to a child (outward-linked) node should work? There may be many child nodes and these nodes will change along with the filter level and also due to the passage of time. I'd like a navigation scheme that avoids having to cursor around as much as possible. Maybe something like assigning a number between 1 and 9 to the nodes in a consistent (say clock-wise) sequence. Any thoughts?

    I'd put the parent node over the current node, with the up key as the shortcut. Then, clockwise, items would be numbered 0-9. If there are more than 10 items, the 11th item has a + (or something else) displayed, which upon being clicked, will restart the 0-9 count from this node, clockwise again.

    An other solution would be to split the children of the current node into 3 groups, such that the user would navigate to one of these using the left, down and right keys. Thus, for groups of more than 3 items, one would have to do something like left - right, or left - left - left - left - ... - left if there's a lot of items (this is basically a binary-search, or if you prefer a ternary-search).

    I don't think either are extremely intuitive, but both should work!

  3. Steve Hazel repo owner

    Yeah, it doesn't have to be perfect right away. Can try both of these methods and more later on.

    I'm partial to keeping my hands on home-row rather than shifting over to the arrow keys, but arrows are nice as dedicated keys. Thankfully software is flexible!

  4. Steve Hazel repo owner

    I've added rough keypad-based navigation to the cluster here for testing: https://benome.ca/decisions/

    Numlock needs to be on for the keypad to work. 5 goes "up" a level while the other numbers navigate in their general direction.

    Right now it won't work well if there's more than 8 child nodes and/or the nodes are at ambiguous angles. And obviously the remaining numpad keys can be mapped to other functionality.

    I also added home-row navigation centered on "k" which is the same 5 on the numpad.

  5. Steve Hazel repo owner

    New keys:

    • Alt + Numpad 5: Shortcut to root
    • Numpad 0: Add a new child node and navigate to it
    • Alt + Numpad 0: Add a new sibling node and navigate to it
    • Numpad Decimal: Delete the focused node and navigate to parent
    • Numpad Enter: Add a new point/event for the current focus
    • Numpad Plus: Narrow the filter (zoom in)
    • Numpad Minus: Widen the filter (zoom out)
    • Numpad Asterix: Edit current focus (esc to cancel, main enter to save)
    • Numpad Slash: Toggle size of focus

    Thoughts so far:

    • 90% of the way to a simple mind-mapper or outliner
    • When the filter is on, compressed nodes should be skipped
    • Would be nice to navigate to next/previous sibling
    • Shortcut to maximum/minimum filter level (max/min zoom) would be nice
    • Cursor/selection capability would be nice (modifier + numpad number)
    • Now need keyboard support for everything else!
  6. Log in to comment