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 = "その他" ];

}

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

Comments

comments powered by Disqus