keyhacによるキーカスタマイズ

enthumbleというキーカスタマイズを使っていたが、これはShiftの位置を変えることができないので結局遠い所に手を伸ばさないといけないのでいやだった。keyhacというpythonで書かれたキーカスタマイズソフトがあったのでこれでShiftの位置を変えれた。ただ、enthumbleのEnterの入力方式になれたので少々違和感がある。書いたconfig.pyを掲載する。ここに書くとインデントが反映されないので 意味がないかも。 from keyhac import * ## Last update: 2013/05/12 def configure(keymap): # グローバルキーマップの定義開始 keymap_global = keymap.defineWindowKeymap() # SpaceをRShiftにわりあててSandSを実現 # keymap_global[“O-Shift”] = “Space” # keymap.replaceKey(“Space”, “Shift”) # keymap.defineModifier(“Space”, “User1”) # ワンショットモディファイアとしてShiftをSpaceに定義 # 無変換キーをSandSの代用にする # ワンショットモディファイアとしてShiftを無変換に定義 keymap_global[“O-Shift”] = “29” keymap.replaceKey(“29”, “Shift”) keymap.defineModifier(29, “User1”) # 変換キーを モディファイアキー(U0)に登録 # ワンショットモディファイアとして右CtrlをEnterに定義 keymap_global[“O-28”] = “Enter” keymap.defineModifier( 28, “User0”) #keymap_global[“U0-Space”] = “Eneter” keymap_global[“U0-LAlt”] = “Esc” ### ここからキーの割り当て # Vimのカーソル移動 keymap_global[“U0-H”] = “Left” keymap_global[“U0-J”] = “Down” keymap_global[“U0-K”] = “Up” keymap_global[“U0-L”] = “Right” keymap_global[“U0-U”] = “PageUp” keymap_global[“U0-Semicolon”] = “PageUp” keymap_global[“U0-D”] = “PageDown” keymap_global[“U0-Slash”] = “PageDown” # EmacsのC-a, C-e keymap_global[“U0-A”] = “Home” keymap_global[“U0-E”] = “End” # 範囲選択 keymap_global[“U0-U1-H”] = “S-Left” keymap_global[“U0-U1-J”] = “S-Down” keymap_global[“U0-U1-K”] = “S-Up” keymap_global[“U0-U1-L”] = “S-Right” #keymap_global[“U0-U1-U”] = “S-PageUp” #keymap_global[“U0-U1-Semicolon”] = “S-PageUp” #keymap_global[“U0-U1-D”] = “S-PageDown” #keymap_global[“U0-U1-Slash”] = “S-PageDown” #keymap_global[“U0-U1-A”] = “S-Home” #keymap_global[“U0-U1-E”] = “S-End” # Deleteとタブ keymap_global[“U0-N”] = “Back” keymap_global[“U0-M”] = “Shift-Tab” keymap_global[“U0-Comma”] = “Tab” keymap_global[“U0-Period”] = “Delete” # よく使うキー keymap_global[“U0-C”] = “Ctrl-C” # Copy keymap_global[“U0-S”] = “Ctrl-S” # Save keymap_global[“U0-V”] = “Ctrl-V” # Paste keymap_global[“U0-X”] = “Ctrl-X” # Cut keymap_global[“U0-W”] = “Ctrl-W” # Close Tab keymap_global[“U0-F”] = “Ctrl-F” # Find keymap_global[“U0-Z”] = “Ctrl-Z” # Undo keymap_global[“U0-Y”] = “Ctrl-Y” # Redo keymap_global[“242”] = “Apps” # 表計算ソフトのタブ切替 keymap_global[“U0-I”] = “Ctrl-PageUp” keymap_global[“U0-O”] = “Ctrl-PageDown” ## IMEを切り替える # # @param flag 切り替えフラグ(True:IME ON / False:IME OFF) # def switch_ime(flag): # バルーンヘルプを表示する時間(ミリ秒) BALLOON_TIMEOUT_MSEC = 500 # if not flag: if flag: ime_status = 1 message = u”[あ]” else: ime_status = 0 message = u”[_A]” # IMEのON/OFFをセット keymap.wnd.setImeStatus(ime_status) # IMEの状態をバルーンヘルプで表示 keymap.popBalloon(“ime_status”, message, BALLOON_TIMEOUT_MSEC) ## キーの1回/2回押しで引数の関数コールを切り替える # # @param func コールする関数 # # 引数の func は1回押しなら func(True)、2回連続押しなら func(False) # でコールされる # def double_key(func, cache_t={}): # 2回連続押し判断の許容間隔(ミリ秒) TIMEOUT_MSEC = 500 func_name = func.__name__ # 前回時刻 t0 = 0 if func_name in cache_t: t0 = cache_t[func_name] # 現在時刻を保存 import time cache_t[func_name] = time.clock() # 前回実行からの経過時間(ミリ秒) delta_t = (cache_t[func_name] – t0) * 1000 # 関数コール if delta_t > TIMEOUT_MSEC: func(False) # 1回押し else: func(True) # 2回連続押し keymap_global = keymap.defineWindowKeymap() if 0: # [半角/全角] keymap_global[“U-(243)”] = lambda: double_key(switch_ime) # 押す keymap_global[“D-(243)”] = lambda: None # 離す keymap_global[“U-(244)”] = lambda: double_key(switch_ime) # 押す keymap_global[“D-(244)”] = lambda: None # 離す if 0: # [変換] keymap_global[“S-(28)”] = “(28)” # Shift+[変換]で再変換 keymap_global[“(28)”] = lambda: double_key(switch_ime) if 0: # [無変換] keymap_global[“(29)”] = lambda: double_key(switch_ime) if 0: # [Apps] keymap_global[“(93)”] = lambda: double_key(switch_ime)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

前の記事

pptと画像形式