Fakeymacs は、Windows の操作を Emacs のキーバインドで行えるようにするための Keyhac の設定です。
Keyhac for Windows ver 1.82 以上のバージョンでご利用ください。
manual は次のリンクを参照してください。
次のページにも関連の情報があります。
本設定のキーバインドでは、次の機能をサポートしています。
- Emacs 標準キーバインド
- Emacs 日本語入力モード [1]
- other_window(一番最近までフォーカスがあったウィンドウに移動する機能)
- shell_command(コマンドコンソールを起動する機能)
- クリップボードリスト
- ランチャーリスト
- 拡張機能(Extensions)で実現している機能
また、関連して次の機能もサポートしています。
- 日本語キーボード設定されている OS で英語キーボードを使うための機能
- IME の状態をテキスト カーソル インジケーターの色で表現する機能
[1] IME が ON の時に文字(英数字か、スペースを除く特殊文字)を入力すると起動するモードです。 (モードに入ると、▲のマークが表示されます。) Emacs 日本語入力モードになると Emacs キーバインド として利用できるキーが限定され、その他のキーは Windows にそのまま渡されるようになるため、 IME のショートカットキーが利用できるようになります。 また、このモードでは IME のショートカットキーを置き換える機能もサポートしており、初期値では 「ことえり」のキーバインドを利用できるようにしています。 詳しくは、次のページの「■ 「Emacs 日本語入力モード」のキーバインド」の項を参照してください。
本設定で利用している主なキーマップのレイヤー構成は次の図のとおりです。 入力したキーはキーマップの上位のレイヤーからサーチされ、キーがマッチすれば、そのキーに 定義されたコマンドを実行し、サーチを終了します。
※ keymap_remote レイヤーは、capslock_key Extension を有効にしたときに機能するレイヤーです。
※ keymap_vscode レイヤーは、vscode_key Extension を有効にしたときに機能するレイヤーです。
※ keymap_ei レイヤーは、fc.use_emacs_ime_mode 変数が True の時に機能するレイヤーです。
A キーの左横が CapsLock のキーボードを使っている場合は、右 Control キーに置き換える ことをお勧めします。
CapsLock のキーの置き換えは Keyhac ではできませんので、KeySwap や Change Key という ツールで対応ください。CapsLock の変更だけであれば、KeySwap の利用をお勧めします。
変更後、Windows の再ログインを行ってください。
なお、管理権限を持たない PC を利用している場合は、Fakeymacs の機能で CapsLock キーを Control キーとして利用することができます。詳しくは、以降にある「CapsLock キーを Ctrl キーとして使う機能について」の項を参照してください。
Alt+Shift や Ctrl+Shift のキー操作により IME の切り替えが行われる場合には、 次のページの内容を参照し、それらのキー(ショートカットキー)の無効化を行ってください。
- (Windows 10) https://jill-tone.com/win10ime_ctrlshift_invalidation/
- (Windows 11) https://softantenna.com/blog/windows-11-disable-ime-change-shortcuts/
※ この無効化の設定を行わないと、リージョンの選択が正しく機能しません。
次のサイトから Keyhac をインストールしてください。
起動時に dll load エラーが発生する場合は、「Microsoft Visual C++ 再頒布可能パッケージ」を インストールする必要があります。上記のサイトにリンクしてあるものは少し古いバージョンですので、 次のサイトから最新の「Visual Studio 2015、2017、2019、および2022の Microsoft Visual C++ 再頒布可能パッケージ」をダウンロードし、インストールしてください。
※ Windows OS が x64版 でも、「Microsoft Visual C++ 再頒布可能パッケージ」は x86版 を インストールする必要があります。
※ dll load エラーが発生しない場合でも、「Microsoft Visual C++ 再頒布可能パッケージ」の 最新版をインストールすることは意味のあることかもしれません。
※ 上記でインストールされる C:\Windows\SysWOW64\msvcp140.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 | fakeymacs で利用頻度が高いと思われるコンフィグレーションパラメータをまとめた個人設定ファイルです。config_personal.py という名称に変更することで機能するようになります。 |
_config_parameter.py | fakeymacs で設定可能な全てのコンフィグレーションパラメータをまとめたファイルです。config_personal.py 作成時の参考用として作成したものですが、config_personal.py に名称変更して個人設定ファイルとして利用することもできます。 |
fakeymacs_extensions/* | 機能拡張ファイルです。config_personal.py の中で有効/無効を切り替えることができます。 |
_config_personal.py ファイルを config_personal.pyという名称に変更し、変更したいコンフィグレーション パラメータをカスタマイズします。
次は、修正する必要性が高いと思われるコンフィグレーションパラメータです。
Configuration Parameter | Description |
---|---|
fc.ime | 利用している IME を指定する |
fc.transparent_target | すべてのキーマップを透過(スルー)するアプリケーションソフトを指定する |
fc.not_emacs_target | Emacs のキーバインドに“したくない”アプリケーションソフトを指定する |
fc.ime_target | IME の切り替え“のみをしたい”アプリケーションソフトを指定する |
fc.side_of_ctrl_key | 左右どちらの Ctrl キーを使うかを指定する |
fc.use_esc_as_meta | Esc キーを Meta キーとして使うかどうかを指定する |
fc.use_emacs_ime_mode | Emacs 日本語入力モードを使うかどうかを指定する |
fc.toggle_input_method_key | IME をトグルで切り替えるキーを指定する |
fc.set_input_method_key | IME を切り替えるキーの組み合わせ(disable、enable の順)を指定する |
fc.game_app_list | ゲームなど、キーバインドの設定を極力行いたくないアプリケーションソフトを指定する |
※ 1) で CapsLock に右 Control キーを割り当てた場合には、fc.side_of_ctrl_key 変数を “R” に 変更する必要があります。この場合、左 Control キーは従来どおり Windows ショートカット用 のキーとして利用できます。
※ コンフィグレーションパラメータの設定例にある次の行を有効にすると、alt-ime-ahk と同等の機能が 働くようになります。
# fc.set_input_method_key += [["O-LAlt", "O-RAlt"]]
config_personal.py には、Fakeymacs の拡張機能を有効化/無効化するための設定も含まれています。
次のページを参照して、使いたい拡張機能があればその設定を行ってください。 (拡張機能を有効化する場合には、if 0: を if 1: にしてください。 また、必要であれば、コンフィグレーションパラメータの設定も行ってください。)
VSCode を利用する場合には、次の vscode_key Extension 用のコンフィグレーションパラメータの設定は 確認してください。
Configuration Parameter | Description |
---|---|
fc.use_direct_input_in_vscode_terminal | パネルのターミナル内で4つのキー(C-k、C-r、C-s、C-y)のダイレクト入力機能を使うかどうかを指定する |
Fakeymacs は、日本語キーボードの設定がされている OS で英語キーボードを使えるようにする機能 (ULE4JIS と同等の機能)を有しています。 英語キーボードを接続していなくても、日本語キーボードを英語配列キーボードとして使うこともできます。 (<変換>、<無変換> キーが使える英語配列キーボードとして使えます。) A-l で開くランチャーメニューの Other メニュー(C-f で移動して一番最後にあるメニュー)で、 キーボードレイアウトの切り替えが可能です。
この機能を利用して、Keyhac 起動時すぐにキーボードを英語配列で使いたい場合には、 fc.use_usjis_keyboard_conversion 変数を True に設定してください。
また、英語配列で日本語キーボードを利用する場合には、次の拡張機能を有効にすることで、 <]> キーを Enter キーとして、 <\> キーを Shift キーとして利用することができるようになります。 英語配列では使わないキーを英語キーボードのキー配置にあるキーに再割当てすることで、 日本語キーボードを英語キーボードのキー配置により近い形で利用することが可能となります。
IME の状態をテキスト カーソル インジケーターの色で表現する機能を利用する場合、次のページを参考とし、 テキスト カーソル インジケーターを有効にしてください。
また、config_personal.py 内の fc.use_ime_status_cursor_color 変数を True にしてください。
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 の設定も読みやすくなると思います。
ウィンドウ操作については、次の拡張機能により、機能強化を図っています。
Extension name | Description |
---|---|
window_operation | ウィンドウ操作のための設定を行う |
VSCode については、次の拡張機能により、機能強化を図っています。
Extension name | Description |
---|---|
vscode_key | VSCode 用のキーの設定を行う |
VSCode の Emacs Keymap Extension と比較した本機能の特徴は、次のページの <2021/02/23 追記> の箇所に記載しています。参考としてください。
Fakeymacs は、次の拡張機能で SpaceFN の機能もサポートしています。
Extension name | Description |
---|---|
space_fn | SpaceFN を実現する設定を行う |
本拡張機能の SpaceFN は、Space を Fn キーとして利用する際に発生する日本語入力時の変換漏れの問題や、 Ctrl+Space(set-mark-command)を入力する際に Space が Fn キーとして認識されてしまう問題を、 Fakeymacs 独自の方法で解決しています。 Emacs のキーバインドとも十分に共存が可能なものとなっていますので、一度お試しいただければと思います。
管理権限を持たない PC を利用している場合でレジストリによるキーの置き換えができない場合のために、 CapsLock キーを Ctrl キーとして使うための機能を提供しています。
Extension name | Description |
---|---|
capslock_key | CapsLock キーを Ctrl キーとして使うための設定を行う |
HHKB Studio で Fakeymacs を使う際の、キーマップの設定例について紹介します。
HHKB Studio は Fakeymacs と相性の良いキーボードなので、キーボードをお持ちの方は参考にして いただければと思います。
● Mouse without Borders というアプリを利用している場合、Ctrl+Shift+S というショートカットキーが 設定されています。このショートカットキーは、一般的な Windows アプリの「名前を付けて保存」機能の ショートカットキーを上書きしてしまいます。Mouse without Borders アプリを利用している場合は、 アプリ側でこのショートカットキーを変更するか、無効にするなどの対策をお願いします。
また、現在このアプリは PowerToys というアプリの「境界線のないマウス」という機能に統合されている ようです。こちらの機能ではショートカットキーの見直しがされていますので、PowerToys への切り替えも ご検討ください。
● Microsoft Excel や Word などの Office系アプリを使ってコピー&ペーストをした際、「Ctrl」と表示 される「貼り付けオプション」ボタンが表示される場合があります。 この「貼り付けオプション」ボタンは、fc.side_of_ctrl_key 変数で指定している側の Ctrl キーではオープン しないように対策していますので、「貼り付けオプション」ボタンを操作する場合は、fc.side_of_ctrl_key 変数で指定している側でない 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 などの数値)を設定して再起動することで、 ある程度の回避ができるようです。また、この設定は、文字が二重に出力される場合にも効果があるようです。 ただし、この設定により生ずる影響は分かっていませんので、試す場合は各自の責任でお願いします。