キーボードショートカットキーの拡張

MacOSの⌘キーを使ったショートカットシステムに、擬似モードの概念を取り入れる事でショートカットキーの機能を拡張する方法を考えてみる。

擬似モードとは、モディファイアキー(⌘とか)を押している時と離している時をそれぞれ別の動作として考えるUIの手法です。詳細はジェフラスキンのswyftyの記事を参考にしてください。

MacOSに以下の条件で擬似モードを追加する方法を考えました。

  1. 追加のハードウエアが不要
  2. 既存のUIの動作を妨害しない
  3. GUIとして学習が容易。

で、実装として以下のような機能にしました。

  1. ⌘キー+英字キーの組み合わせて、擬似モードに入る。
  2. ⌘キーを離したら、擬似モードを抜ける。
  3. 擬似モード中に、英数キーを押すことで、firstResponderへキーに結び付けられたアクションを発行する。
  4. 擬似モードに入ると、Panelを表示する。Panelには使用可能なアクションの一覧が表示される。

リッチテキストの編集機能を試しに実装してみました。

⌘Tを押すと、以下のようなPanelが表示される。

../../../_images/cmdKeyMode.png

⌘キーを押したまま、L,R,C,Jのアルファベットキーを押すと、選択された行のアライメントが変更される。

⌘を離すと、擬似モードを抜けるのでPanelの表示は消える。

../../../_images/cmdKeyMode_2.png

ムービーで動作確認したほうが早いかも( cmdkeymode.mov )

で、これを実装すると以下のような利点と欠点がある。

  1. ショートカットが多段階になるので使えるキーが事実上増える
  2. emacsスタイルのショートカットと比べてGUIの表示がある事と⌘を使うことで学習コストが低い
  3. Panelの陰にアクションを投げる対象物が隠れてしまう。
  4. 擬似モード中だけに使えるショートカットキーというのは理解しづらいかもしれない

今の所、こんな感じかな。プロジェクトファイルはここに置いてきます。( commandKeyMode.zip )

じゃあね。