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ははじめから書かれているので色々自分でいじってみるとよいでしょう。
正直筆者も全機能を把握しきれていない状態ですのでまずは自分で使ってみるのがよいでしょう
コメント