Client for playing 300 publicly available Sokoban puzzles on a computer or phone.

experimental approach to combining keyboard and mouse while drawing

Desired properties:

  • fluently draw lots of precise drawings
    • requires expressing lots of different kinds of constraints
  • always know what pressing a key is going to do
  • when typing, don't care where the mouse pointer is

Less important:

  • discoverability, learnability. Provide a hotkey for help.

Current plan:

  • chorded keys to modify drawings while mouse button is not pressed
  • unchorded keys to modify drawings only while mouse button is pressed
  • make changes while drawing a shape by pressing a key while mouse button is pressed
  • make changes to a drawing by hovering mouse pointer at a shape and pressing a key (unary operators)
  • add constraints after drawing by hovering mouse pointer at a shape, pressing a key and moving mouse pointer to a second shape (binary operators)
  • almost any change can be made to a shape after it's drawn (inspired by Sketchpad)
  • keys pressed while drawing a shape act as abbreviations to performing the action after drawing

First example in this PR:

  • you press mouse button, start drawing freehand
  • you realize you want a simple line, not a freehand stroke
  • without releasing the mouse button, you press 'l'
  • now you're drawing a straight line

You could also release the mouse button and finish the stroke, then press 'ctrl-l' while hovering the mouse pointer on the stroke to turn it into a line.

There's an asymmetry here. Strokes require a lot more information, so while you can turn a stroke into a line, you can't turn a line into a stroke.

Strokes are an exception where you can't switch to freehand mode after you start drawing. You have to press C-f before drawing.

Created by  Kartik K. Agaram  on May 14, 2022
H7OEU6WPOKOSKV5RNAM5W62V5SYOY7VEA5VOK6JD5UEBUBIMOKUQC
Change contents