ModifierFlag::NONE コンビネーションキーのカスタマイズ for Orzレイアウト

親指シフトのOrzレイアウトにした時にコンビネーションキーの組み合わせも変更する設定を作った時に丸1日悩んでしまいました。原因は「ModifierFlag::NONE」を分かっていなかった事でした。

まあ丸一日といっても煮詰まったので、つぷやいたり、ブログの違う記事書いたり、キートップを切ったりしていた訳で、現実逃避が得意です。すいません。

かなり泥臭いコードになってきた気もしますが、きれいなコードを求めるより、使えることを優先します。これが大切なはず。

やりたいこと

Orzレイアウト上での Control+M 入力をリターンキーにします。キートップの刻印では 「Control+ , 」になります。 左Controlキーのみをターゲットに、Macは右controlキーがありませんし。HHKBもそんな感じ。他の場合でも右のcontrolキー押すならリターンキーの方が近いからです。

Control+M to Return

KeyRemap4Macbookに同梱されている emacs_mode.xmlの設定にControl+Mはあります。

<item>
<name>Control+M to Return</name>
<identifier>option.emacsmode_controlM</identifier>
<not>{{EMACS_MODE_IGNORE_APPS}}</not>
<autogen>KeyToKey KeyCode::M, VK_CONTROL, KeyCode::RETURN</autogen>
</item>

これのキーを書き直せばいいと気楽に構えていました。

動作ソフトを制限している <not>{{EMACS_MODE_IGNORE_APPS}}</not> を消してKeyToKey KeyCode::M を KeyToKey KeyCode::COMMA にしたら出来上がり!のはずでした。しかし動きません。あれ ?

トラブル原因

orzレイアウトは右手側のキーを一つ一つ丁寧にリマップ定義しています。

<autogen>–KeyToKey– KeyCode:: COMMA, KeyCode::M</autogen>

これで「, 」を「m」に変更しています。 ModifierFlag::NONE を使っていなかったのがトラブルを呼びました。上のままだと、「, 」単体でも「, 」+ control などの組み合わせも一切合切に「m」に変更してしまいます。

参考 ・ ModifierFlag::マニュアル

ModifierFlag::NONE

なので、キー入力の定義にModifierFlag::NONE を追加します。これを上のコードに追加すると、「, 」を「m」にリマップするけど、「, 」+ control はリマップしない設定になります。

これです、コレがわからずに 以下略。

<autogen>–KeyToKey– KeyCode:: COMMA,  | ModifierFlag::NONE, KeyCode::M</autogen>

コレに変えたら、見事に動きました。control + m で リターン! 素晴らしい。英字入力でも日本語入力でも大丈夫です。

Shift

できたーと思いながら、テストしていたときに再びあれ?です。英字入力で「M」が入力できないのです。 m(キートップでは , ) + Shiftキーで「< 」になってしまいます。上の ModifierFlag::NONE  設定の副作用でShiftキーの組み合わせも必要でした。

<autogen>–KeyToKey– KeyCode:: COMMA,  ModifierFlag::SHIFT_L | ModifierFlag::NONE, KeyCode::M,  ModifierFlag::SHIFT_L </autogen>

これを追加したら、英字大文字「M」が入力できました。日本語入力モードでもきちんと動くことを確認しました。すごく力業のような気もしますが。。これで良いはず。

まとめ

Orzレイアウト上での Control+M(キートップの刻印はControl+ , )の入力をリターンキーに設定しました。

  • ModifierFlag::NONEを使わないと、controlキーコンビネーションを区別できない
  • コンビネーションを区別すると、Shiftの英字大文字も定義する
  • 日本語入力時でもControl+M >> リターンキーとして動作OK

今回、学んだことです。基本設定を変更するので、orzレイアウト設定ファイルの次回バージョンでは全ファイルの上書きが必要になります。大切な事なので予告しておきます。

ある程度の設定定義は春分の日には準備できると思いますので、お待ちいただけるとうれしいです。

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告