keyhac icon indicating copy to clipboard operation
keyhac copied to clipboard

Mac版にて置き換えした「かな」でのアプリ切替の際にShiftを押すと選択される

Open bonk opened this issue 7 years ago • 3 comments

https://github.com/crftwr/keyhac/issues/2 に似ているかもしれないのですが、 当方は、下記の置き換えをしています。

# Mac英数
keymap.replaceKey(102, "LCmd")
# Macかな
keymap.replaceKey(104, "RCmd")

この状態でCmd-Tabのアプリケーションの切り替えを「かな」にて使いたいのですが、 切り替え途中でShiftを押すと、アプリ選択されてしまいます。

通常のCmd-Tabでは正常に動作します。

IN  : U-LUser0-D
TRU : U-LUser0-D
IN  : O-LUser0-D
IN  : U-(94)
IN  : D-RCmd
TRU : D-RCmd
IN  : D-RCmd-Tab
TRU : D-RCmd-Tab
IN  : U-RCmd-Tab
TRU : U-RCmd-Tab
IN  : O-RCmd-Tab
IN  : D-RCmd-RShift
TRU : D-RCmd-RShift
IN  : U-RCmd-RShift
TRU : U-RCmd-RShift
IN  : O-RCmd-RShift
IN  : U-RCmd
TRU : U-RCmd

Window : app : com.googlecode.iterm2

かなボタンの置き換えの場合、Shiftを押したタイミングで選択されてしまいます。

IN  : U-LUser0-D
TRU : U-LUser0-D
IN  : O-LUser0-D
IN  : U-(94)
IN  : D-RCmd
REP : [KeyDown(54)]
IN  : D-RCmd-Tab
TRU : D-RCmd-Tab
IN  : U-RCmd-Tab
TRU : U-RCmd-Tab
IN  : O-RCmd-Tab
IN  : D-RCmd-RShift
TRU : D-RCmd-RShift

Window : app : com.googlecode.iterm2


FIX : RCmd

IN  : U-RShift
TRU : U-RShift
IN  : O-RShift
IN  : U-RCmd

bonk avatar Apr 15 '17 11:04 bonk

bonkさん、レポートをありがとうございます。 手元に日本語キーボードのMacがないので、どうやって調査しようか考えていますが、 Cmd-Tabの切り替えの画面が、OSによってKeyhacよりも低レベルなキーの状態を監視している可能性はあります。

crftwr avatar Apr 15 '17 15:04 crftwr

わたしもそういったOSレベルのキー操作のデバッグの方法は理解していないのですが、 Shiftボタンを押したタイミング以外で、FnだったりOptionだったり、capsだったりでも同様でした。 また、かなボタンではなくFnをCmdにしてみても同様の現象を確認できました。

通常のCmdではこれは起きないので、 何かキーを入力した際に、replaceKeyがアプリのコンソールログに残らないレベルにて、 ほんの一瞬途切れているのかもしれないと思いました。 あ、でも続けてTabを押したとき(かなCmd+Tab > かなCmd+Tab > かなCmd+Tab)、 には正常に動作するので、上記の説明だと少し正確ではないのかもしれません。

bonk avatar Apr 16 '17 11:04 bonk

度々で失礼します。 同様の現象かと思うのですが、追加で気づいたので追記させていただきます。

かなCmd-Z(元に戻す)、Shift-かなCmd-Z(やり直す) と入力した時に、かなCmdの押し続けが解除される現象が確認できました。

ただ、この現象には若干時差があるらしく、 急いで入力するとある程度解除されずに操作を続けることができました。

どちらの場合にもログに「FIX :」が残ったタイミングで現象が起きているような気がします。 _fixFunnyModifierState()はどういったことをする関数なのでしょうか。。

bonk avatar Apr 19 '17 11:04 bonk