Fakeymacs は、Windows の操作を Emacs のキーバインドで行えるようにするための Keyhac の設定です。
Keyhac for Windows ver 1.82 以上のバージョンでご利用ください。
manual は次のリンクを参照してください。
次のページにも関連の情報があります。
本設定のキーバインドでは、下記の機能をサポートしています。
- Emacs標準キーバインド
- Emacs日本語入力モード [1]
- other_window(一番最近までフォーカスがあったウィンドウに移動する機能)
- shell_command(コマンドコンソールを起動する機能)
- ウィンドウの最小化、リストア
- アクティブウィンドウの切り替え [2]
- アクティブウィンドウのディスプレイ間移動
- 仮想デスクトップの切り替え
- クリップボードリスト
- ランチャーリスト
- 拡張機能(Extensions)で実現している機能
[1] IME が ON の時に文字(英数字か、スペースを除く特殊文字)を入力すると起動するモードです。 (モードに入ると、▲のマークが表示されます。) Emacs日本語入力モードになると Emacsキーバインド として利用できるキーが限定され、その他のキーは Windows にそのまま渡されるようになるため、 IME のショートカットキーが利用できるようになります。 また、このモードでは IME のショートカットを置き換える機能もサポートしており、初期値では 「ことえり」のキーバインドを利用できるようにしています。
[2] アクティブウィンドウの切り替えのキーの初期値は未設定(None)としています。このため、起動 するためのキーは、デフォルトキーの A-S-Tab、A-Tab となります。起動後は A-p、A-n で アクティブウィンドウの切り替え、A-g で切り替え画面の終了(キャンセル)が利用できます。
Aキーの左横が Caps Lock のキーボードを使っている場合は、右 Control キーに置き換える ことをお勧めします。
Caps Lock のキーの置き換えは Keyhac ではできませんので、KeySwap や Change Key という ツールで対応ください。Caps Lock の変更だけであれば、KeySwap の利用をお勧めします。
変更後、Windows の再ログインを行ってください。
次のサイトから Keyhac をインストールしてください。
起動時に dll load エラーが発生する場合は、「Visual Studio 2015 ランタイムパッケージ」を インストールする必要があります。上記のサイトにリンクしてあるものは少し古いバージョンなので、 次のサイトから新しいものをダウンロードしてインストールしてください。
※ Windows OS が x64版 でも、ランタイムパッケージは x86版 をインストールしてください。
※ 上記でインストールされるものは C:\Windows\SysWOW64\msvcp140.dll ですので、この dll を keyhac.exe と同じフォルダに置けば、ランタイムパッケージをインストールしていない PC でも Keyhac を動かすことができるようになります。
Win+R で開く画面に shell:startup と入力して Startup フォルダを開き、インストールした Keyhac フォルダ配下にある keyhac.exe のショートカットを Startup フォルダに配置してください。
本サイトの Code のボタン(緑色のボタン)から、Download ZIP を選択し、Fakeymacs 一式を ダウンロードしてください。(可能であれば、Git を使ってダウンロードすることをお勧めします。 Git を使うと、今後の Fakeymacs のバージョンアップに容易に対応できます。)
ダウンロードした Fakeymacs の ZIPファイルから、必要なファイルを Keyhac のフォルダに複写 します。次の中から必要なファイルを複写してください。(フォルダ配下にあるファイルは、 フォルダ階層を維持して複写するようにしてください。)
Filename | Description |
---|---|
config.py | Fakeymacs の本体です。このファイルは必ず必要です。 |
_config_personal.py | 個人設定ファイルです。config_personal.py という名称に変更することで機能するようになります。 |
fakeymacs_extensions/* | 機能拡張ファイルです。config_personal.py の中で有効/無効を切り替えることができます。 |
config.py の内容をみて、変更したいコンフィグレーションパラメータをカスタマイズします。 カスタマイズする際は、_config_personal.py ファイルを config_personal.py という名称に変更し、 このファイルの中で設定を修正するようにしてください。
次は、修正する必要性が高いと思われるコンフィグレーションパラメータです。
Configuration Parameter | Description |
---|---|
ime | 利用している IME を指定する |
not_emacs_target | Emacs のキーバインドに“したくない”アプリケーションソフトを指定する |
ime_target | IME の切り替え“のみをしたい”アプリケーションソフトを指定する |
side_of_ctrl_key | 左右どちらの Ctrlキーを使うかを指定する |
use_esc_as_meta | Escキーを Metaキーとして使うかどうかを指定する |
use_emacs_ime_mode | Emacs日本語入力モードを使うかどうかを指定する |
toggle_input_method_key | IME をトグルで切り替えるキーを指定する |
set_input_method_key | IME を切り替えるキーの組み合わせ(disable、enable の順)を指定する |
VSCode 用としては、次のコンフィグレーションパラメータもあります。
Configuration Parameter | Description |
---|---|
vscode_target | VSCode 用のキーバインドを利用するアプリケーションソフトを指定する |
use_direct_input_in_vscode_terminal | VSCode の Terminal内 で 4つのキー(Ctrl+k、Ctrl+r、Ctrl+s、Ctrl+y)のダイレクト入力機能を使うかどうかを指定する |
※ 1) で Caps Lock に右 Control キーを割り当てた場合には、side_of_ctrl_key を “R” に 変更する必要があります。この場合、左 Control キーは従来どおり Windows ショートカット用 のキーとして利用できます。
keyhac.exe を起動すると、タスクバー(^アイコンの中)に Keyhac のアイコンが表示されます。 必要に応じて、通知領域に表示するようにしてください。 このアイコンを左クリックするとコンソールが表示され、右クリックすると機能の一覧が表示されます。
_config_personal.py というファイルを config_personal.py というファイル名にすることで個人設定ファイル として機能します。本ファイルの設定には [ ] で括られたセクション名が定義されており、その単位で config.py の中に設定が取り込まれ、exec 関数により実行されます。
config.py のコンフィグレーションパラメータ等の設定を変更したい内容は、config_personal.py に記載して 管理することで、config.py のバージョンアップに容易に対応できるようになります。
何のセクションがどこで読み込まれるかについては、config.py ファイル内の exec 関数をコールしている ところを検索して確認してください。
Fakeymacs では、Python のクロージャの機能を多用しています。次のページを読むと、クロージャの理解が 深まり、Fakeymacs の設定も読みやすくなると思います。
VSCode については、次の2つの拡張機能により、機能強化を図っています。
Extension name | Description |
---|---|
vscode_key | VSCode 用のキーの設定を行う |
vscode_extensions | VSCode Extension 用のキーの設定を行う |
VSCode の Emacs Keymap Extension と比較した本機能の特徴は、以下のページの <2021/02/23 追記> に記載しています。参考としてください。
● Microsoft Excel や Word などの Office系アプリを使ってコピー&ペーストをした際、「Ctrl」と表示 される「貼り付けオプション」ボタンが表示される場合があります。 これが Emacsキーバインドで利用している Ctrl キーの押下を検知して、想定外の動きをしてしまうようです。 今のところ本設定での対策は難しいと思っておりますので、以下のページで紹介している「貼り付けオプション」 ボタンを消す対応で回避してください。
● Keyhac のクリップボードリスト画面で migemo 検索を可能とするためには、辞書ファイルを登録する必要 があります。次のページに分かりやすく説明がされていますので、参考としてください。 (dictフォルダの中をすべてコピーするのではなく、dict/utf-8 の中のファイルをコピーするところが ポイントです。また、migemo 検索するには、検索文字列の一文字目を大文字で指定する必要があります。)
● Logicool のマウス で SetPoint アプリによりキーストロークの割当を行った場合、Keyhac のフックを OFF にしてから割当をしないと正常に動作しませんでした。他のキーストロークを設定するソフトの場合 にも同様の問題が発生する可能性があると思いますので、ご留意ください。
● Windows 11 にしたら、Keyhac のコンソールに「Time stamp inversion happened.」と表示される頻度が 高くなりました。これは、レジストリ HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout を DWORD 形式で作成し、そこに ms の値(10進数で 3000、5000 などの数値)を設定して再起動することで、 ある程度の回避ができるようです。ただし、この設定により生ずる影響は分かっていませんので、試す場合は 各自の責任でお願いします。
- https://apollo440.hatenablog.com/entries/2010/12/21
- https://nazochu.blogspot.com/2011/08/windows7.html
- https://blogs.msdn.microsoft.com/alejacma/2010/10/14/global-hooks-getting-lost-on-windows-7/
- https://jinblog.at.webry.info/201103/article_9.html
- https://jinblog.at.webry.info/201103/article_10.html