窓使いの憂鬱でデフォルトをEmacsバインドにする方法

default.mayuを使うより、1から書く方が早いかもしれん。「keymap Global : EmacsEdit」とかにもしたいし。

ま、これでとりあえず満足。

いちいちEmacsバインドにしたいウィンドウを指定するのが激しく面倒になってきたので、デフォルトをEmacsバインドにして、例外だけ除くようにしてみた。
これでいちいち「window FooBar /RegExpOfWindow/ : EmacsEdit」とか書かなくても良く、Emacsバインドにしたくないやつだけ「window FooBar /RegExpOfWindow/ : KeymapDefault」と書けば済むようになった。



※注意※
さっき書いたばっかなので、今後1ヶ月ぐらいの間チマチマと書き直され続けると思います。

# -*- coding: sjis-dos -*-
include "109.mayu"

keyseq $WindowClose = A-F4

keymap Global
 if ( HHK )
  mod alt -= LeftAlt
  mod alt += 半角/全角
  key *半角/全角 = *LeftAlt
  mod Windows -= LeftWindows
  mod Windows += LeftAlt
  key *LeftAlt = *LeftWindows
 else
  mod control -= LControl
  mod control += 英数
  key *英数 = *LControl
  key *Esc = *半角/全角
  key *半角/全角 = *Esc
 endif
 key *IC-C-Yen  = $ToggleIME            # IME ON/OFF をするキーの指定
 key C-A-T      = &WindowToggleTopMost  # 最前面トグル
 key C-A-H      = &WindowSetAlpha(70)   # ウィンドウの半透明化

keymap KeymapDefault = &Default
 if ( HHK )
  mod alt -= LeftAlt
  mod alt += 半角/全角
  key *半角/全角 = *LeftAlt
  mod Windows -= LeftWindows
  mod Windows += LeftAlt
  key *LeftAlt = *LeftWindows
 else
  mod control -= LControl
  mod control += 英数
  key *英数 = *LControl
  key *Esc       = *半角/全角
  key *半角/全角 = *Esc
 endif
 key *IC-C-Yen  = $ToggleIME            # IME ON/OFF をするキーの指定
 key C-A-T      = &WindowToggleTopMost  # 最前面トグル
 key C-A-H      = &WindowSetAlpha(70)   # ウィンドウの半透明化




include "emacsedit.mayu"

keymap2 EmacsGlobalC-X : EmacsC-X
 key C-S        = C-S           # 上書き保存(S)
 key C-W        = LAlt F A      # 名前を付けて保存(A)...
 key C-F        = C-O           # 開く(O)...
 key K          = C-N           # 新規作成(N)
 key C-C        = $WindowClose  # 終了(X)
#  key C-C        = A-Q           # 終了(X)
#  key C-C        = LAlt F X      # 終了(X)

window EmacsGlobal ( // || // ) : EmacsEdit
 key C-X = &Prefix(EmacsGlobalC-X)

window EmacsNative /:(MEADOW|ckWindowClass)$/ : KeymapDefault
  • とりあえずdefault.mayuを読み込むのをやめた。
  • どうやら既に定義されているキーマップの親キーマップの書き換え「keymap Global : EmacsEdit」はできないらしい。
  • そもそも「ネイティブにEmacsバインドに対応しているアプリケーションではEmacsEditを割り当てたくないけど、キー配置だけは入れ換えたかった」のだけど。(↓に続く)
  • 多重継承「keymap EmacsGlobal : KeymapDefault, EmacsEdit」みたいなことができなかったので、GlobalとKeymapDefaultの両方にキーの設定を入れた。(外部ファイルにしたら楽ジャン?と思ってやってみたけど、キーマップ毎に適用させることができなかった)
  • EmacsGlobalC-Xの設定をもうちょっと充実させたい