Git Product home page Git Product logo

fakeymacs's Introduction

Fakeymacs

Fakeymacs は、Windows の操作を Emacs のキーバインドで行えるようにするための Keyhac の設定です。

Keyhac for Windows ver 1.82 以上のバージョンでご利用ください。

manual は次のリンクを参照してください。

  1. Configuration parameters
  2. Key bindings
  3. Extensions
  4. Functions

次のページにも関連の情報があります。

本設定のキーバインドがサポートする機能

本設定のキーバインドでは、下記の機能をサポートしています。

  • Emacs標準キーバインド
  • Emacs日本語入力モード [1]
  • other_window(一番最近までフォーカスがあったウィンドウに移動する機能)
  • shell_command(コマンドコンソールを起動する機能)
  • ウィンドウの最小化、リストア
  • アクティブウィンドウの切り替え [2]
  • アクティブウィンドウのディスプレイ間移動
  • 仮想デスクトップの切り替え
  • クリップボードリスト
  • ランチャーリスト
  • 拡張機能(Extensions)で実現している機能

[1] IME が ON の時に文字(英数字か、スペースを除く特殊文字)を入力すると起動するモードです。 (モードに入ると、▲のマークが表示されます。) Emacs日本語入力モードになると Emacsキーバインド として利用できるキーが限定され、その他のキーは Windows にそのまま渡されるようになるため、 IME のショートカットキーが利用できるようになります。 また、このモードでは IME のショートカットを置き換える機能もサポートしており、初期値では 「ことえり」のキーバインドを利用できるようにしています。

[2] A-Esc キーの動作とは異なり、仮想デスクトップを跨ぎ、最小化されていないウィンドウを順に 切り替える機能を提供します。作業するウィンドウのみを表示するようにしておけば、その表示している ウィンドウ間を容易に行き来することが可能となります。ウィンドウの最小化の機能、other_window の機能と併せて利用すると、より有用な機能になると思います。

使い方

1) キーボード配列の調整を行う

Aキーの左横が Caps Lock のキーボードを使っている場合は、右 Control キーに置き換える ことをお勧めします。

Caps Lock のキーの置き換えは Keyhac ではできませんので、KeySwap や Change Key という ツールで対応ください。Caps Lock の変更だけであれば、KeySwap の利用をお勧めします。

変更後、Windows の再ログインを行ってください。

2) Keyhac をインストールする

次のサイトから 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 を動かすことができる ようになります。

3) Keyhac を自動起動するようにする

Win+R で開く画面に shell:startup と入力して Startup フォルダを開き、インストールした Keyhac フォルダ配下にある keyhac.exe のショートカットを Startup フォルダに配置してください。

4) Fakeymacs をダウンロードする

本サイトの Code のボタン(緑色のボタン)から、Download ZIP を選択し、Fakeymacs 一式を ダウンロードしてください。(可能であれば、Git を使ってダウンロードすることをお勧めします。 Git を使うと、今後の Fakeymacs のバージョンアップに容易に対応できます。)

5) 必要なファイルを Keyhac のフォルダに複写する

ダウンロードした Fakeymacs の ZIPファイルから、必要なファイルを Keyhac のフォルダに複写 します。次の中から必要なファイルを複写してください。(フォルダ配下にあるファイルは、 フォルダ階層を維持して複写するようにしてください。)

FilenameDescription
config.pyFakeymacs の本体です。このファイルは必ず必要です。
_config_personal.py個人設定ファイルです。config_personal.py という名称に変更することで機能するようになります。
fakeymacs_extensions/*機能拡張ファイルです。config_personal.py の中で有効/無効を切り替えることができます。

6) コンフィグレーションパラメータをカスタマイズする

config.py の内容をみて、変更したいコンフィグレーションパラメータをカスタマイズします。 カスタマイズする際は、_config_personal.py ファイルを config_personal.py という名称に変更し、 このファイルの中で設定を修正するようにしてください。

次は、修正する必要性が高いと思われるコンフィグレーションパラメータです。

Configuration ParameterDescription
ime利用している IME を指定する
not_emacs_targetEmacs のキーバインドに“したくない”アプリケーションソフトを指定する
ime_targetIME の切り替え“のみをしたい”アプリケーションソフトを指定する
side_of_ctrl_key左右どちらの Ctrlキーを使うかを指定する
use_esc_as_metaEscキーを Metaキーとして使うかどうかを指定する
use_emacs_ime_modeEmacs日本語入力モードを使うかどうかを指定する
toggle_input_method_keyIME をトグルで切り替えるキーを指定する
set_input_method_keyIME を切り替えるキーの組み合わせ(disable、enable の順)を指定する

VSCode 用としては、次のコンフィグレーションパラメータもあります。

Configuration ParameterDescription
vscode_targetVSCode 用のキーバインドを利用するアプリケーションソフトを指定する
use_direct_input_in_vscode_terminalVSCode の Terminal内 で 4つのキー(Ctrl+k、Ctrl+r、Ctrl+s、Ctrl+y)のダイレクト入力機能を使うかどうかを指定する

※ 1) で Caps Lock に右 Control キーを割り当てた場合には、side_of_ctrl_key を “R” に 変更する必要があります。この場合、左 Control キーは従来どおり Windows ショートカット用 のキーとして利用できます。

7) テキスト カーソル インジケーターの設定を行う

IME の状態をテキスト カーソル インジケーターの色で表現する機能を利用する場合、次のページを参考とし、 テキスト カーソル インジケーターを有効にしてください。

また、config_personal.py 内の use_ime_status_cursor_color 変数を True にしてください。

8) SylphyHorn の設定を行う

アクティブウィンドウを仮想デスクトップ間で移動する機能を利用する場合、次のページから SylphyHornPlus をインストールしてください。(SylphyHornPlus は、Microsoft Store からインストール可能な SylphyHorn の Fork で、Windows 11 の対応など、改良が加えられたものとなっています。)

また、操作のためのキー設定を config_personal.py 内で window_movement_key_for_desktops 変数に対し、 行ってください。(変数の設定方法は、config.py を参考としてください。)

※ SylphyHorn の仮想デスクトップ切り替え時に表示される通知機能は、テキスト カーソル インジケーター と相性が悪いようです(インジケーターが消えてしまいます)。SylphyHorn とテキスト カーソル インジケーター の機能を同時に利用する場合には、SylphyHorn の通知機能を OFF にし、代わりに「デスクトップの番号を タスクトレイに表示する」機能を利用するようにしてください。

9) keyhac.exe を起動する

keyhac.exe を起動すると、タスクバー(^アイコンの中)に Keyhac のアイコンが表示されます。 必要に応じて、通知領域に表示するようにしてください。 このアイコンを左クリックするとコンソールが表示され、右クリックすると機能の一覧が表示されます。

個人設定ファイル(config_personal.py)

_config_personal.py というファイルを config_personal.py というファイル名にすることで個人設定ファイル として機能します。本ファイルの設定には [ ] で括られたセクション名が定義されており、その単位で config.py の中に設定が取り込まれ、exec 関数により実行されます。

config.py のコンフィグレーションパラメータ等の設定を変更したい内容は、config_personal.py に記載して 管理することで、config.py のバージョンアップに容易に対応できるようになります。

何のセクションがどこで読み込まれるかについては、config.py ファイル内の exec 関数をコールしている ところを検索して確認してください。

クロージャについて

Fakeymacs では、Python のクロージャの機能を多用しています。次のページを読むと、クロージャの理解が 深まり、Fakeymacs の設定も読みやすくなると思います。

VSCode の機能強化について

VSCode については、次の2つの拡張機能により、機能強化を図っています。

Extension nameDescription
vscode_keyVSCode 用のキーの設定を行う
vscode_extensionsVSCode Extension 用のキーの設定を行う

VSCode の Emacs Keymap Extension と比較した本機能の特徴は、次のページの <2021/02/23 追記> の箇所に記載しています。参考としてください。

留意事項

● 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、5000 などの数値)を設定して再起動することで、 ある程度の回避ができるようです。ただし、この設定により生ずる影響は分かっていませんので、試す場合は 各自の責任でお願いします。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.