言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

キーマップをEmacs風にしようと考えてみる。

Squeak には Emacs key bindings というパッケージがあり、キーボードの挙動を Emacs 風に変える事が出来る。ただし、これがまた微妙に違うところがもどかしい。なぜだろうか??
コントロールキーの挙動は、ShiftCmdActions に文字番号と実行メソッドの辞書として納められているので、これを変更すれば良のだが、実はこの実行メソッドが問題で、このメソッド内でさらにキーボードの検査をしてしまっている。
例えば Ctrl - f は Emacs ではカーソルを一つ右に動かすだが、この Emasc key bindings では 1 ワード 右に寄ってしまう。これは、カーソルを右に動かす cursorRight: の中でコントロールキーを検知し、もしも押されている場合は 1 ワード右に動かす処理をしてしまっているせいだ。このような処理がどれくらいあるのか分からないが、 Emacs キーバインディングを実現するためには、実行メソッドの中でキーボードを検知しないようにエディタ全体を見直す必要がある。

  • キーコードは Sensor kbdTest で見つける事が出来る。(コマンド . で終わり)

http://www5.ocn.ne.jp/~minami/squeak/memo/tips/