キーボードショートカットキーの拡張¶
MacOSの⌘キーを使ったショートカットシステムに、擬似モードの概念を取り入れる事でショートカットキーの機能を拡張する方法を考えてみる。
擬似モードとは、モディファイアキー(⌘とか)を押している時と離している時をそれぞれ別の動作として考えるUIの手法です。詳細はジェフラスキンのswyftyの記事を参考にしてください。
MacOSに以下の条件で擬似モードを追加する方法を考えました。
追加のハードウエアが不要
既存のUIの動作を妨害しない
GUIとして学習が容易。
で、実装として以下のような機能にしました。
⌘キー+英字キーの組み合わせて、擬似モードに入る。
⌘キーを離したら、擬似モードを抜ける。
擬似モード中に、英数キーを押すことで、firstResponderへキーに結び付けられたアクションを発行する。
擬似モードに入ると、Panelを表示する。Panelには使用可能なアクションの一覧が表示される。
リッチテキストの編集機能を試しに実装してみました。
⌘Tを押すと、以下のようなPanelが表示される。

⌘キーを押したまま、L,R,C,Jのアルファベットキーを押すと、選択された行のアライメントが変更される。
⌘を離すと、擬似モードを抜けるのでPanelの表示は消える。

ムービーで動作確認したほうが早いかも( cmdkeymode.mov
)
で、これを実装すると以下のような利点と欠点がある。
ショートカットが多段階になるので使えるキーが事実上増える
emacsスタイルのショートカットと比べてGUIの表示がある事と⌘を使うことで学習コストが低い
Panelの陰にアクションを投げる対象物が隠れてしまう。
擬似モード中だけに使えるショートカットキーというのは理解しづらいかもしれない
今の所、こんな感じかな。プロジェクトファイルはここに置いてきます。( commandKeyMode.zip
)
じゃあね。
Comments
comments powered by Disqus