-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
not_emacs_target アプリのメニューやダイアログでの有効化方法について #26
Comments
プルダウンメニューやダイアログボックスのクラスが emacs キーバインドを無効にしたい箇所と異なるウィンドウのクラスをもっているのであれば、fc.emacs_target_class 変数を指定することで、fc.not_emacs_target 変数の設定より優先させることができます。デフォルトでは Edit クラスが指定されています。クラスは、Keyhac のメニューから「内部ログをON」を指定すると、Keyhac コンソールで確認できます。 |
ご回答ありがとうございます。 何か違いはないか ahk で調べてみたところ、ahk の場合、下記でプルダウンメニューと本体を区別できることが分かりました。 ; ahk でのプルダウンメニューの識別
try { ; WinGetClass がエラーとなる場合があるため try で囲む
If (WinGetClass("ahk_class #32768") == "#32768") { ; メニューの場合
Return True ; emacs キーバインド対象(True)
}
}
ググったところ、#32768 は「メニューのクラス」のようでした。 Keyhac で #32768 を区別する方法が分からず試せずにいます。。 |
次で判定することができるようです。
ただし、キーの入力毎に判定する必要があるので、処理の作り込みは少し面倒になると思います。 |
拡張機能を一つ作成し、対応しました。config_personal.py の最後の部分に拡張機能を有効にする if 文がありますので、if 1: にしてご利用ください。 |
ありがとうございます! |
一点コメントとして、記録に残しておきます。 今回作成したコードでは、メニューが表示されているかの判定を Window.find という関数を使って行っています。ただし、この関数はフォーカスがあるウィンドウ以外も含め、ウィンドウ全体の検索を行うもののようです。 メニューがフォーカスのあるウィンドウ以外で開いている状態は無いと想定し、今回のコードとしているのですが、もしその状態があるのであれば、is_menu 関数を以下のようにした方が良いかもしれません。(一応、これでも動くことは確認しています。)
今回は性能を優先し、Window.find 関数の結果のみによる簡易な判定としていますが、もし不都合が発生する場合があれば、このコメントを思い出していただければと思います。 以上、よろしくお願いします。 |
ご丁寧にありがとうございます。留意しておきます。 |
not_emacs_target 指定をするとそのアプリ全体が無効になり、(Windows標準の?)プルダウンメニューやダイアログボックスの中も emacs キーバインドが使えなくなってしまうようです。
アプリ本体(?)では emacs キーを無効にしつつ、Windows 標準UI部品のようなものでは emacs キーを有効にする方法はありますでしょうか?
fakeymacs の version は下記になります。
fakeymacs_version = "20230606_01"
The text was updated successfully, but these errors were encountered: