LauncherEX をモード内のみで有効なキーバインドを設定できるようにする
LauncherEX 0.0.11 以降は、コンストラクタの書き換えは不要になりました。
以下の環境で動作確認しました。
- Windows XP Home Edition SP2
- Python 2.5.1
- CraftLaunchEx 0.991
- LauncherEX 0.0.10
LauncherEX は CraftLaunchEx の LauncherMode を拡張するスクリプトです。
これをモード内のみで有効なキーバインドを設定できるようにします。
LauncherEX のコンストラクタを置き換えます。
lex_hook_on_init のフック関数で、引数 event の属性 keys にアクセスして、キーバインドとハンドラを設定します。
keys は『{ (仮想キーコード, モディファイアキー) : ハンドラ }』という辞書です。
コード
config.py などに記述します。
## LauncherEX import clmode_lex # `from clconst import *' より前に記述する from clapi import * from clconst import * # コンストラクタ def _LauncherModeEXInit(self): import clmode_launcher clmode_launcher.LauncherMode.__init__(self) self.cmd = '' self.sel = None import clevent event = clevent.Event() # 0xBE: VK_OEM_PERIOD # { (仮想キーコード, モディファイアキー) : ハンドラ } event.keys = { (0xBE, MODKEY_CTRL) : self.Shortcut_ChangeSubMode } err = clmode_lex.RunHook(clmode_lex.lex_hook_on_init, event) if err: raise err for (k, v) in event.keys.iteritems(): self.SetKeyDownHandler(k[0], k[1], v) clmode_lex.clLauncherEX.LauncherModeEX.__init__ = _LauncherModeEXInit def _Hoge(): print 'hoge' # 初期化時 def _LEXHookOnInit(event): event.keys.update({ # Alt-h に _Hoge() をバインド (ord('H'), MODKEY_ALT) : _Hoge }) clmode_lex.AddHook(clmode_lex.lex_hook_on_init, _LEXHookOnInit) # lex_hook_on_init を発火させるには PopMode() して PushMode() PopMode() PushMode(clmode_lex.clLauncherEX.LauncherModeEX())