crftwr / keyhac

python based key customization utility
MIT License
158 stars 19 forks source link

mac版 機能要望 #7

Closed baronTommy closed 8 years ago

baronTommy commented 8 years ago
mac版 キーの乗っ取りについて

app storeのアイコンをクリックし、ログインアカウントを入力する際に keyhacの設定が有効にならないような気がします システム部分の操作?のような箇所ではkeyhacではなくmacにキーを取られてしまします 対応可能でしょうか?

imeの切り替えについて

こちらを参考
に下記のようなコードでimeの変更をしたいのですがime切り替えができませんでした ime変更方法はありますでしょうか?

Input.send([Key(305)])
crftwr commented 8 years ago

Keyhacが効かない場面があることについてですが、MacにはEnableSecureEventInputというAPIがあり、Keyhacのようなキー入力をインターセプトするようなアプリが、その場面ではインターセプトできないように設定することができます。ログインの場面ではそのようになっているようですね。

このような事情があるので、Keyhac側では対応ができません。

crftwr commented 8 years ago

IMEの切り替えについてですが、たとえば下のようにすれば、右Commandキーで、IME切り替えができます。(Ctrl-SpaceにIME切り替えが割り当てられている前提。)

keymap_global[ "O-RCmd" ] = "Ctrl-Space"

キーへの割り当てではなく、他の処理の中で実行したい場合は、下のようにできます。

command = keymap.InputKeyCommand( "Ctrl-Space" )
command()

BaronTommy さんの例では、Input.send() が使われていますが、これは比較的低レベルなインターフェイスですので、使う上では注意が必要です。(押されているモディファイアキーを擬似的に離す処理などを自分で記述する必要がある。)

crftwr commented 8 years ago

ちなみに、Macでの仮想キーコードの割り当ては、Keyhacのソースの下記を参照してください。

https://github.com/crftwr/ckit/blob/mac_port/ckit_const.py#L195-L321

baronTommy commented 8 years ago
imeに関して

承知しました ありがとうございます。

baronTommy commented 8 years ago
keyhacの乗っ取りのタイミングについて

別アプリを出して申し訳ないのですが、karabinerの場合は同一画面でも期待通り動作します。 karabinerの方はネイティブアプリだからでしょうか、、、

不明でしたら返信不要です すみません

crftwr commented 8 years ago

Karabinerは使ったことがあるのですが、なぜご指摘のように動作が違うのかは、ソースをのぞいてみないとわかりません。ネイティブアプリだから、というわけではなく、使っているAPIや、そのパラメタが違う、などの理由が考えられると思います。

baronTommy commented 8 years ago

承知しました ありがとうございます