OSレベルでのキーバインドをカスタマイズできるツールにkeyhacというものがあります。今回これをつかってみたので書いていきたいと思います。
keyhacの入手先とhowtoサイト
keyhacの入手先は以下になります。
craftware
keyhacのhowtoサイトは以下になります。
https://crftwr.github.io/keyhac/doc/ja/index.html
Keyhacの概要
keyhacはスクリプト言語 Python を使って、キーボード操作をカスタマイズするアプリケーションになります。アプリケーション自体は地味なのですが、めちゃくちゃ高機能なので詳しくは公式サイトをみていただいたほうがよいとは思います。keyhacを使うと〇〇キーをおしたら〇〇キーをおしたことにする。ということができます。キーボードをカスタマイズするときにはいろいろやり方があるとは思いますが、keyhacはソフトウェアでkeyを制御しているようです。
たまにレジストリをいじるようなソフトウェアもありますが、keyhacの場合はソフトが立ち上がっている時だけ設定したキーバインドが使えるようになっています。keyhacはキーバインドを変えるだけじゃなくて、クリップボードの履歴を表示したり、キーボードでマウスカーソルを動かすこともできます。
このようにめちゃくちゃ高機能なので既存のソフトや設定がいらなくなる可能性もあります。その他のキーボードカスタマイズツールを使っていたり。IMEの設定を変えたりしているのであればkeyhacを試してみてもよいでしょう。
keyhacの使いかた
keyhac.exeを起動するとタスクトレイに常駐化した状態になります。keyhacのアイコンを右クリックするとメニューがあらわれるので、設定を変えたい場合は「設定の編集」をクリックしてコードを編集していきます。
keyhacはデフォルトでさまざまなkeybindが書かれているので、メモ帳などでコピーや貼り付けを普通に行おうとすると通常のキーバインドではなくなっているので困る可能性があります。そのためkeyhacが気に入らなかったら、keyhacアイコンを右クリックし『keyhacの終了』を選んでkeyhacを停止させます。keyhacの設定に関してはpythonのコードを読めなくても設定の編集は行うことはできますが、設定内容をみて理解するまでに少し時間を要するでしょう。でもこのソフトは使いこなせるようになるとものすごく便利なソフトであることには間違いありません。(個人的には使わなくもよいとは思いますが)
keyhacのキーバインド紹介
keyhacの設定の編集をクリックするとwindowsの場合はメモ帳が立ち上がります。気に入らないキーバインドはコメントアウトしたり、自分でキーバインドを追加することもできます。設定ファイルの中身をみればわかるのですが、メモ帳(notepad)でのみEmacsのキーバインドで動作するようにコードが書かれています。
# Customize Notepad as Emacs-ish
# Because the keymap condition of keymap_edit overlaps with keymap_notepad,
# both these two keymaps are applied in mixed manner.
if 1:
keymap_notepad = keymap.defineWindowKeymap( exe_name="notepad.exe", class_name="Edit" )
# Define Ctrl-X as the first key of multi-stroke keys
keymap_notepad[ "C-X" ] = keymap.defineMultiStrokeKeymap("C-X")
keymap_notepad[ "C-P" ] = "Up" # Move cursor up
keymap_notepad[ "C-N" ] = "Down" # Move cursor down
keymap_notepad[ "C-F" ] = "Right" # Move cursor right
keymap_notepad[ "C-B" ] = "Left" # Move cursor left
#keymap_notepad[ "C-A" ] = "Home" # Move to beginning of line
#keymap_notepad[ "C-E" ] = "End" # Move to end of line
keymap_global[ "C-A" ] = "Home" # Move to beginning of line
keymap_global[ "C-E" ] = "End" # Move to end of line
keymap_global[ "C-Q" ] = "Delete" # Delete
keymap_global[ "C-Y" ] = "C-V" # Paste
keymap_notepad[ "A-F" ] = "C-Right" # Word right
keymap_notepad[ "A-B" ] = "C-Left" # Word left
keymap_notepad[ "C-V" ] = "PageDown" # Page down
keymap_notepad[ "A-V" ] = "PageUp" # page up
keymap_notepad[ "A-Comma" ] = "C-Home" # Beginning of the document
keymap_notepad[ "A-Period" ] = "C-End" # End of the document
keymap_notepad[ "C-X" ][ "C-F" ] = "C-O" # Open file
keymap_notepad[ "C-X" ][ "C-S" ] = "C-S" # Save
keymap_notepad[ "C-X" ][ "C-W" ] = "A-F","A-A" # Save as
keymap_notepad[ "C-X" ][ "U" ] = "C-Z" # Undo
keymap_notepad[ "C-S" ] = "C-F" # Search
keymap_notepad[ "A-X" ] = "C-G" # Jump to specified line number
keymap_notepad[ "C-X" ][ "H" ] = "C-A" # Select all
keymap_notepad[ "C-W" ] = "C-X" # Cut
keymap_notepad[ "A-W" ] = "C-C" # Copy
keymap_notepad[ "C-Y" ] = "C-V" # Paste
keymap_notepad[ "C-X" ][ "C-C" ] = "A-F4" # Exit
Emacsのキーバインドに一度なれてしまうとC-AとC-Eが非常に便利であること気づきます。なのでkeymap_global[“C-A”] = “Home”としてWindowsでの操作すべてにこのキーバインドをわりあてました。global以外のkeymapははじめから書かれているので色々自分でいじってみるとよいでしょう。
正直筆者も全機能を把握しきれていない状態ですのでまずは自分で使ってみるのがよいでしょう

コメント