digraph finite_state_machine { rankdir=LR; node [shape = doublecircle, fixedsize = true, width = 1.2, height = 1.2]; standard; node [shape = circle]; standard -> standard [ label = "any key" ]; standard -> "command\nmode" [ label = "hotkey" ]; "command\nmode" -> standard [ label = "single key command" ]; "command\nmode" -> standard [ label = "invalid key" ]; "command\nmode" -> "macro\ncommand" [ label = "m" ]; "macro\ncommand" -> "macro\ndefinition" [ label = "macro key" ]; "macro\ndefinition" -> "macro\ndefinition" [ label = "any key" ]; "macro\ndefinition" -> standard [ label = "hotkey" ]; "command\nmode" -> "macro\ndelete" [ label = "M" ]; "macro\ndelete" -> standard [ label = "macro key" ]; "command\nmode" -> "complex\ncommand" [ label = "multi key command" ]; "complex\ncommand" -> "complex\ncommand" [ label = "any key" ]; "complex\ncommand" -> standard [ label = "hotkey" ]; "complex\ncommand" -> standard [ label = "invalid key" ]; }