Inputs Initiative

Updated on (created ) — Filed under: Kudamono Docs Software Collaboration

The Inputs Initiative is a collaborative effort to ensure all Kudamono Editor interactions are:

  • tailored to each genre (the best input modes and aux marks were picked) and frictionless, via comprehensive auto-modes that minimise switching
  • intuitive via sensible defaults and consistent across genres (learn once, use everywhere)
  • accessible (fully functional under restricted controls, such as touchscreen-only, keyboard-only, mouse-only)
  • always correct, despite regular updates

Doing so requires cross-genre:

With these two pieces, all users are now empowered to:

Each genre can have at most two distinct auto configurations: one while solving and another while editing, following the structure:

automode:{     solve:{         ...     },     edit:{         ...     } }

Each auto configuration is an object mapping gesture-locations to submodes, for instance:

solve:{     "CL-E":["monoline-e"]     "CR-E":["markbol-x"]     "CT-E":["monoline-e","markbol-x"] }

Every genre is different, so only the specified gesture-locations produce effect.

A gesture-location joins a gesture with a location.

For example, CL-E means left mouse click (CL) on edge (E), DR-D drag with the right mouse button (DR) starting on the tile's diagonal quarter point (D). The tile centre is the default location, so a centre tile tap is simply CT.

The following gestures are used in the automode configuration:

Gesture Type Meaning
CLClickLeft mouse button
CRClickRight mouse button
CTClickTouchscreen (one finger-tap)
DLDragLeft mouse button
DRDragRight mouse button
DTDragTouchscreen (one finger-drag)

Further gestures are available for input unit testing.

All locations are relative to the current tile.

LetterPlacementEXAMPLE USE
CCentreshading
EEdge midpointedge aux marks
VVertex (corner)edge line dragging
AApothem midpoint (midpoint between center and edge midpoint)directional line arrows
DDiagonal quarter point (midpoint between center and vertex)diagonal line crosses
KKnight line quarter pointknight aux marks

Currently, diagonals can be distinguished as DN, DE, DS DW for top left, top right, bottom right, bottom left. This is on of the few geometry dependent-aspects, to be improved. More cell locations may be added in the future if needed.

Submodes are called in sequence based on the current cell content:

  • for an empty cell, the first submode is called;
  • for a non-empty cell, the "logical next" submode in the sequence will be called, based on cell content;
  • if cell content matches the last submode (so no logical next) then said cell content is erased ("blank")

Each submode has a type and a specifier. Specifiers are used to designate a particular symbol, mark, etc…

Type Submode
penboldrawing definitive lines (from segment endpoint)
symbolplacing definitive symbols
markbolplacing aux marks
sketboldrawing aux lines
monolineplacing a definitive line (from segment midpoint)
monosketplacing a sketch line (from segment midpoint)
monopolarsymbolplacing a definitive number (no dial)
polarsymbolplacing a definitive number, using the dial
dialsymbolplacing a definitive symbol, using the dial
polarmarkbolplacing a aux number, using the dial
dialmarkbolplacing a aux mark, using the dial

Type names are likely to be updated to become more uniform/memorable.

Most genres make use of a common system, thus they use common specifiers:

Specifier Example with type(s) Example meaning
zsymbol-zshaded tile
xsymbol-xabsent tile
xmarkbol-xcross aux mark
smarkbol-sempty cell aux mark
smarkbol-ocircular some-line aux mark
epenbol-e, monoline-eedge line
(none)penbol-, monoline-default tile-centered line
(none)sketbol-, monosketdefault tile-centered sketch line
integerpolarsymbol-integernumber
alphabetdialmarkbol-alphabetalphabetical letter aux marks

However, complex or special genres may use genre-specific specifiers, such as Akari RGB's automode.

Shading genres such like Isowatari 磯渡り, Shrooms, Hasu no Mura はすのむら, Nurisquare, and others all use the following automode configuration:

automode:{         solve:{             "CL-C":["symbol-z"],             "CR-C":["markbol-s"],             "CT-C":["symbol-z","markbol-s"],             "DL-C":["symbol-z"],             "DR-C":["markbol-s"],             "DT-C":["symbol-z","markbol-s"],         }     },

In words:

  • left click to shade
  • right click to unshade
  • tap to shade, unshade
  • left drag to shade
  • right drag click to unshade
  • touch drag to shade, unshade

Yajilin ヤジリン-like genres such as R・B ループ Loop,White Link,Implicit Directors use the following automode configuration:

automode:{         solve:{             "CL-C"    :["symbol-z"],             "CR-C"    :["markbol-o"],             "CT-C"    :["symbol-z","markbol-o"],             "CL-E"    :["monoline-"],             "CR-E"    :["markbol-x"],             "CT-E"    :["monoline-","markbol-x"],             "DL-C"    :["penbol-"],             "DR-C"    :["sketbol-"],             "DT-C"    :["penbol-"],             "DR-E"    :["markbol-x"],             "DT-E"    :["penbol-"],         }     },

In words:

  • left click tile centre to shade
  • right click tile centre to place circular aux mark
  • when tapping tile centre, start by shading, then placing circular aux mark
  • left click edge midpoint to place line segment
  • right click edge midpoint to place cross mark
  • tap edge midpoint place line segment, then again cross mark
  • left mouse drag, starting on tile centre, to draw definitive line
  • right mouse drag, starting on tile centre, to draw sketch line
  • touch drag starting on tile edge, to draw definitive line
  • right mouse drag starting on tile edge, to add cross aux marks

This automode is used in Akari (RGB), and uses specifiers not relevant to any other genre.

automode:{         solve:{             "CL-C":["symbol-r","symbol-g","symbol-b"],             "CR-C":["markbol-x"],             "CT-C":["markbol-x","symbol-r","symbol-g","symbol-b"],             "CR-DE":["markbol-r"],             "CR-DW":["markbol-g"],             "CR-DS":["markbol-b"],             "CT-DE":["markbol-r"],             "CT-DW":["markbol-g"],             "CT-DS":["markbol-b"],             "DL-C":["markbol-x"],             "DR-C":["markbol-x"],             "DT-C":["markbol-x"],         }     },

In words:

  • left click tile centre to sequentially place red, green, blue light bulbs
  • right click tile centre to place cross mark
  • tap tile centre to sequentially cross mark, red, green, blue light bulbs
  • right click diagonal quarter point (top right) to place R mark
  • right click diagonal quarter point (bottom left) to place G mark
  • right click diagonal quarter point (bottom right) to place B mark
  • likewise for taps on diagonal quarter points
  • left mouse drag, right mouse drag, touch drag to place cross aux marks

Each input unit test has tree fields: from, to and via, placed like in this example:

    from:"W=1x1",     to:"W=1x1&LF=z0",     via:[{CL:[[0,0]]}]

Each field is explained now:

The initial state is represented in the from field. It is the current board before any interaction takes place, expressed as a reduced puzzle url (just the part after the question mark) between quotes.

The simplest possible from field represents an empty, a single-cell 1x1 board: from:”W=1x1”.

The starting board should be the smallest possible, i.e. test over 2x2 or 1x3 must be reduced. This is to increase testing speed when thousands of tests are run at once.

The final state is represented in the to field. It is the current board after all interactions took place, expressed as a reduced puzzle url.

Let's say we wish to place, on that same 1x1 board, a shaded cell. Thus we obtain: to:”W=1x1&LF=z0”.

for convenience, pressing C (shift+c) copies the current reduced board url

The via field stores the sequence of interactions that transform the initial into the final state.

In our example, we wish to perform a sequence of a single left-click (CL) action to place a shaded cell on the leftmost, bottom cell (coordinates 0,0). via:[{CL:[[0,0]]}].

In addition to those gestures supported in automodes, the following are available for input testing:

Via Type Button
CMClickMiddle mouse button
DMDragMiddle mouse button
KKeyKeyboard key sequence, e.g. ”A”, ”1”, ”spacebar”, ”ctrl shift del” (always between quotes).
WUWheelscroll wheel up
WDWheelscroll wheel down

More gestures may be added in the future, as needed.

In the square grid, standard cartesian coordinates are used, with origin at the centre of the bottom left cell.

cartesian coordinates example grid

Zooming in on the origin cell, we can see that with fractional coordinates can be used to specify any point, such as tile vertices and tile edge midpoints.

fractional coordinates illustration

Please use this table to find previous configurations, closer to the desired behaviour. For each genre, there are columns for the configuration while solving and while editing, if already specified. In certain cases, a combined configuration includes both. Clicking a configuration name will open the source. Sorting by column or searching by configuration name are two quick ways to see how many genres share the same configuration.

All implemented automodes, per genre
Genre Solving Editing Combined
mirror-puzzles

mirror-puzzle

line-diag-edge

--
dungeon-map

shading-s

--
calcudoku

number-placement

-

number-candidates

fences

line-edge

-

markbols-parity

heyawake

shading-s

dynasty

--
piece-place

shading-s

dynasty

--
endorain

line

sketch

polar-integer

markbol-tile-o

markbol-tile-s

yajikabe

shading-s

--
tetoron

division

--
tapa-regional

shading-s

dynasty

--
megane

line

sketch

-

markbol-tile-o

markbol-tile-x-click

jisoku

line

sketch

polar-integer

markbol-tile-o

markbol-tile-s

markbol-tile-x-click

shiro-ten

shading-s

dynasty

--
spur-loop

line

sketch

--
loop-and-bounds

line

sketch

--
floor-plan

division

--
Regional Snake

line

-

markbol-tile-s

markbol-tile-s-drag

markbol-tile-o

elastic-loop

line

sketch

--
Kurodoko Loop

yajilin

dynasty

--
Straight Cross ストレートクロス

number-placement

-

number-candidates

Speckled Bands

division

--
Tumbleweed Loop

line-edge

sketch

-

markbol-edge-x-click

Golem Grad

line

-

markbol-tile-s

markbol-tile-s-drag

markbol-tile-o

Slide & Seek

line

sketch

--
Greener Grasses

division

--
Regional Star Battle

star

-

markbol-tile-b

Regional LITS

shading-x

--
Sample Paint サンプルペイント

paint

--
Uso-nori うそのり

shading-s

dynasty

--
Show Ten

shading-s

dynasty

--
Nuri Ten ぬりてん

shading-s

dynasty

--
Geradeweg

line

sketch

--
Tetroid テトロイド

division

polyominous

-
Math Path

numberline

--
Kakeeru カケエル

line

sketch

--
Water fun

shading-s

absent

division

-
Aquarium アクアプレース

shading-s

absent

division

-
Eisbahn

direline

--
Ice Walk

line

sketch

--
Regional Walk

line

sketch

--
Polyomino packing

division

--
Letter Weights

line-free

-

number-candidates

Accord

shading-s

absent

division

-
Loop Ranker

line

sketch

--
Interlaced Triplets

number-placement

-

number-candidates

Kropki Pairs

number-placement

-

number-candidates

Seiza 星座になれたら

line

star

-

markbol-tile-b

Bar Graph

shading-s

absent

division

-
Landvermessung

shading-s

--
Gokigen Naname

line-diag-edge

--
Regilin ヘヤジリン

yajilin

dynasty

--
Double or nothing ダブルブロック

line

sketch

-

markbol-tile-x-click

U-bahn

line

sketch

-

markbol-tile-o

markbol-tile-s

markbol-tile-x-click

Haunted Mirror Mazes

haunted-mirror-maze

markbol-tile-x-diagonal

--
Vista

division

--
Aquapelago

shading-w

--
Corridors

division

--
Diagonal Dissection

line

sketch

-

markbol-diagonal

Regional akari 美术馆(区域)--

akari

Milk Tea ミルクティー

line

sketch

-

markbol-tile-o

Polyominous

division

polyominous

-
Internal Patrol

division

--
Nikakoku ニカコク---
Border Patrol

division

--
Tentaisho 天体ショ

division

--
Putteria

number-placement

-

markbol-tile-x

Aqre

shading-s

--
Nuritwin ぬりツイン

shading-x

shading-x

absent

division

-
Binary Runs

number-placement

-

markbol-tile-x

markbol-tile-o

Stained Glass ステンドグラス

paint

--
Sunglasses

shading-s

--
Norinori のりのり

shading-s

--
Disconnection ディスコネクション

shading-x

shading-x

absent

division

-
Point Plate 点プレート

division

--
Inbox/Outbox インボックス・アウトボックス

division

--
Creek クリーク

shading-s

--
Spokes

line-octo

--
Loop 12号ループ

line-edge

--
Parking パーキング

mino

--
Shrooms

shading-s

--
Grandstands

line

sketch

--
Barns バーンズ

line

sketch

--
Light and Shadow

shading-s

--
Tetroscope

shading-s

--
Retoponogo

line-octo-edge

--
Sniping Arrow スナイピングアロー

line

sketch

--
Yosumi 四隅に切れ

division

--
ABC's--

abcs

Cross Math

number-placement

-

number-candidates

Tamago Town

division

--
Yakisoba

line

sketch

--
Turn Sums

line

sketch

--
Pipelink

line

sketch

--
Forceloop

line

sketch

--
Tally Loop

line

sketch

--
Crossroads

line

sketch

--
Koburin コブリン

yajilin

dynasty

--
Number Crosslink

line

sketch

--
Kazuburo カズブロ

division

number-placement

-

number-candidates

Linesweeper 八方リンク

line

sketch

--
Honey Dozen

number-placement

-

number-candidates

NIKOJI

division

--
Squares and Rectangles

division

--
White Link

yajilin

dynasty

--
Jadium

numberline

--
Firewall

shading-s

--
Multiplication Link 掛け算リンク

line

sketch

--
Naname Loop ななめでご輪す

line-diag-edge

--
Gemini Loop

line

sketch

--
Nombre ノンブル

number-placement

-

number-candidates

Gemini Block

division

--
Kindomino カインドミノ

division

--
Kurohappo クロハッポー

shading-s

dynasty

--
Cave バッグ

shading-s

--
Kurohori クロホリ

shading-s

--
Tasquare たすくえあ

shading-s

--
Norino-LITS

shading-x

--
LOTS

shading-x

--
Heterocut

division

--
Kurodoko 黒どこ

shading-s

dynasty

--
Kurotto クロット

shading-s

--
Pointing at the Crowd

shading-s

--
Choco Banana チョコバナナ

shading-s

--
Rectyard

division

--
LITS

shading-x

--
Akari 美術館--

akari

Hitori ひとり

shading-s

dynasty

--
Slitherlink スリザーリンク

line-edge

-

markbols-parity

Bramble

shading-s

--
Fillomino フィルオミノ

division

number-placement

-

number-candidates

Yin-Yang しろまるくろまる

shading-s

--
Inturnal

line

sketch

-

markbols-oq

Implicit Directors

yajilin

dynasty

--
Araf 相ダ部屋

division

--
Nurikabe ぬりかべ

shading-s

--
One-Two Zone ワンツーゾーン

shading-s

--
Lighthouses--

lighthouses

Parimony

division

--
Touching Tails

line

sketch

aux-ox

--
Yajilin ヤジリン

yajilin

dynasty

--
The Convoy

mino

--
the Longest 短辺消失

division

markbol-alphabet

absent

division

-
SLICY

shading-x

--
Anymino

shading-s

--
Sudoku 数独

number-placement

-

number-candidates

LUZ Loop

line

sketch

--
Estate Lawns

shading-s

dynasty

--
Isowatari 磯渡り

shading-s

--
Ripple Loop

line

sketch

--
Suguru ナンバーブロック

number-placement

-

number-candidates

Hidoku

numberline

--
Foreshadow

direline

--
Nurisquare

shading-s

--
Knight Loop

line-knight

division

absent

-
Cross Border Parity Loop

line

sketch

pearl

north-south-numbers

-
Vertigo

line

sketch

arrowhead

--
Tring-tring

line

sketch

--
Corner Loop コーナーループ

line-edge

-

markbols-oq

Ore-dango おれだんご

shading

-

markbol-tile-o

oredango

Hasu no Mura はすのむら

shading-s

--
Akari (RGB)--

akari-rgb

Alcazar

line

sketch

--
Redemption

line-edge

--
Flexible Counters

line

sketch

--
Dance and Dance ダンス.アンド.ダンス

line-octo

--
Nurikabe Loop 面積リンク

line

sketch

--
Reachability

line

sketch

--
Curve Sums

line

sketch

--
Ornamented Tree

line

sketch

--
Achtelwenden

line-octo

--
Zero One Lines ゼロイチライン

line

sketch

--
Trizone サントイッチ

shading-s

division

dynasty

--
Masyu ましゅ

line

sketch

--
Tetritory テトリトリー

division-old

-

tetritory

Starry Knights

line-knight

-

markbols-knight

markbol-tile-s

markbol-tile-o

Knight's Tour (closed) ナイトリンク

line-knight

--
Turtle Shell Loop 亀甲の輪

line-edge

-

markbol-diagonal

Loom

line-edge

-

markbols-parity

Crosswall クロスウォール

line-edge

north-south-numbers

markbols-parity

RGB ループ Loop

yajilin

--
Hit Points ヒットポイント

number-placement

-

number-candidates

X-Sums

number-placement

-

number-candidates

Bouba & Kiki Loop

line

sketch

--
R・B ループ Loop

yajilin

--
Gravel

shading

division

polar-integer

pearl

absent

markbol-tile-s

Chess Loop--

chess-5

Numericlone

division

--
Chess Avoidance--

chess-5

Zukei Puzzles

line-edge-free

--
Shikaku Cut

division

--
Magic Shape

mino

--
Nuri Nearest Number

shading-s

--
Simple Loop

line

sketch

--
Soulmates--

soulmates

Tricklayer

division

--
Bricklayer

division

--
Parrot Loop

line

sketch

--
Brownies--

movement

markbol-tile-x

Clones コローン

division

--
Shirokuro Pipe シロクロパイ

line

sketch

--
Decoration Tree

line-edge

--
Tiger in the Woods

direline

--
Pearl Necklace パールネックレス

line

sketch

--
Path Puzzles

line

sketch

--
Ivy

line

sketch

--
Crossing Flashlights--

flashlights

Flashlights--

flashlights

Sneaky Snakes

shading-s

--
Limbs

line

sketch

--
Nura-knight 塗らナイト

shading-s

--
Ice Dance Pair アイスダンス・ペア

line-octo

--
Honey Circuit

line

sketch

--
Black holes ブラックホール--

black-holes

Myopia

line-edge

myopia

markbols-parity

Contacts & Guestbook

domino

--
Chess Num--

chess-5

Tectonic Squares

line-free

--
Chess Position--

chess-5

Ionic Squares

line

sketch

--
Ant Mill

domino

--
Xerophile

line

sketch

--
Half Suits--

half-suits

Skating

yajilin

dynasty

--
Dream Sequence

dream-sequence

dynasty

--
Shapeshifting--

shapeshifting

Chess Battle--

chess-5

Catch 22--

catch-22

Tic Tac Toe Puzzles--

marupeke

Chess Pack--

chess-5

Barbed Wire

line-octo-edge

-

markbol-shaka

Arrow Loop

line

sketch

--
Hex Loop

line

sketch

line

sketch

--
Hex Turn

line

sketch

--
Pentomino Puzzles

mino

--
Tetro Stack

mino

--
Venn ベンズループ

line-edge

--
Rosewary

line

sketch

--
Rook End Mazes

direline

--
Cross Roads

direline

line

sketch

--
Perplexing Path

line-octo

--
Full House

direline

--
Untangram

line-edge-free

--
Unrectangles

line-edge-free

--
Square Jam

division

--
Hiking Track

line

sketch

north-south-numbers

-
Plot Twist

division

north-south-numbers

-
Diamond Puzzles

division

--
Divide and Conquer

division

--
Shape Grid

line-octo-edge

--
Different Rectangles

division

--
Room Puzzles

division

--
Tet & Pent Color Puzzles

division

--
Corner Meeting

division

--
Gerrymandering

division

--
Five and Dime

line

sketch

--
Corner Packing

line

sketch

--
Vegetable Garden

division

--
Scattered Lohkous

division

--
Boomerangs

line

sketch

--
The Great Divide

division

--
Crowded Intersections

division

--
Chainlink

line

sketch

-

markbols-parity-click

Hamiltonian Mazes

line

sketch

--
Rectangle Puzzles

line-edge

--
Connect the Dots Puzzles

line-free

--
Timber!

domino

--
Dot Triangle Puzzles

line-free

--
Try Angles

line-free

--
House Puzzles

line-free

--
Non-crossing Puzzles

line-edge-free

--
Zig Zag

line-edge-free

--
Mountain Climber

line-octo

--
Unparalleled

line-free

--
Tricky Tour

line-free

--
Hamiltonian Plumbers

line

sketch

--
OX ループ Loop

line

sketch

--
Chess Path

line

sketch

--
Legalese

line-octo

--
Oddstitch

line-edge-drag

-

markbols-oq

markbols-knight

Pathfinder

line

sketch

--
Unequaloop

line

sketch

--
Straight Mazes

line

sketch

--
Corner Mazes

line

sketch

--
Loop Count

line

sketch

--
Field Trespass

line-octo-edge

--
Knight Tour

line-knight

--
One Good Turn Deserves Another

line-octo

--
Color Mazes

line

sketch

--
Unequal Length Mazes

line

sketch

--
Palindrome Path

line-octo

--
One of Each

line

sketch

--
Following Suit

line

sketch

--
Jump Rope

line

sketch

--
2-3 Mazes

line-simple

sketch

-

markbol-edge-x-click

markbol-tile-x-click

markbol-diagonal-click

Line Segment

line-octo

--
That's Not Right

line-octo

--
Slow Turn

line-octo

--
Roost

line-octo-edge

--
Subwhirl

line-octo-edge

--
Tumbleweed

line-octo-edge

--
Subway

line-octo-edge

--
Bonsai Gardening

line

sketch

--
Kudamono

line-edge

--
2024-04-12 Preliminary draft page for the Inputs Initiative. 2024-08-15 Replaced old drafts with the definitive automode configuration format. 2024-09-01 Reorganised the page, added automode configuration examples. Thanks to Eli Doris (TwoHoleStraw), Noahmay and Rook for ideas and feedback! 2024-09-08 Added the master table of auto modes, which can be searched by name or genre, linking to the respective configuration file. 2024-10-21 Centre location should now be specified as "C" instead of leaving it blank.