Swyftのユーザーインターフェイス その2

コードを書く前に、LEAPキーの状態遷移を書き出してみる。

まずはイベントの種類

イベントの種類
イベント名 説明
LF下 LEAP Forward keyDown event
LF上 LEAP Forward keyUp event
LB下 LEAP Back keyDown event
LB上 LEAP Back keyUp event
Tab下 Tab keyDown event
Tab上 Tab keyUp event
その他 その他のキーイベント

SwyftではLeapキーを押している間だけ検索する。そのため、keyDownとKeyUpを区別する必要があり、keyDownイベントとkeyUpの2つのイベントを分けている。 TabキーはLeapキーとの組み合わせで再検索を行うためにイベントを追加した。

次に状態の種類

状態の種類
状態名 説明
normal 通常状態。各種キー入力はそのままTextViewへ渡される
findF 前方検索状態。各種キー入力された文字列が検索文字列として前方逐次検索される
findB 後方検索状態。各種キー入力された文字列が検索文字列として後方逐次検索される
select 選択状態。現在のカーソル位置とマークされた位置を選択状態にする。

状態遷移図を書くとこんな感じ。

digraph foo {

{rank = same; normal}
{rank = same; findF; findB}
{rank = same; select}

"normal" -> "findF" [ label = "LF下" ];
"normal" -> "findB" [ label = "LB下" ];
"normal" -> "normal" [ label = "その他" ];


"findF" -> "select" [ label = "LB下" ];
"findF" -> "normal" [ label = "LF上" ];
"findF" -> "findF" [ label = "その他" ];



"findB" -> "select" [ label = "LF下" ];
"findB" -> "normal" [ label = "LB上" ];
"findB" -> "findB" [ label = "その他" ];


"select" -> "findF" [ label = "LB上" ];
"select" -> "findB" [ label = "LF上" ];
"select" -> "select" [ label = "その他" ];

}

眠いから、状態遷移表はまた次に書く。