キーボードショートカットキーの拡張
MacOSの⌘キーを使ったショートカットシステムに、擬似モードの概念を取り入れる事でショートカットキーの機能を拡張する方法を考えてみる。
擬似モードとは、モディファイアキー(⌘とか)を押している時と離している時をそれぞれ別の動作として考えるUIの手法です。詳細はジェフラスキンのswyftyの記事を参考にしてください。
MacOSに以下の条件で擬似モードを追加する方法を考えました。
- 追加のハードウエアが不要
- 既存のUIの動作を妨害しない
- GUIとして学習が容易。
で、実装として以下のような機能にしました。
- ⌘キー+英字キーの組み合わせて、擬似モードに入る。
- ⌘キーを離したら、擬似モードを抜ける。
- 擬似モード中に、英数キーを押すことで、firstResponderへキーに結び付けられたアクションを発行する。
- 擬似モードに入ると、Panelを表示する。Panelには使用可能なアクションの一覧が表示される。
リッチテキストの編集機能を試しに実装してみました。
⌘Tを押すと、以下のようなPanelが表示される。
⌘キーを押したまま、L,R,C,Jのアルファベットキーを押すと、選択された行のアライメントが変更される。
⌘を離すと、擬似モードを抜けるのでPanelの表示は消える。
ムービーで動作確認したほうが早いかも( cmdkeymode.mov )
で、これを実装すると以下のような利点と欠点がある。
- ショートカットが多段階になるので使えるキーが事実上増える
- emacsスタイルのショートカットと比べてGUIの表示がある事と⌘を使うことで学習コストが低い
- Panelの陰にアクションを投げる対象物が隠れてしまう。
- 擬似モード中だけに使えるショートカットキーというのは理解しづらいかもしれない
今の所、こんな感じかな。プロジェクトファイルはここに置いてきます。( commandKeyMode.zip )
じゃあね。