Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Keyball46においてボール有無の検出タイミングを早めました。
Keyball46は他のKeyballと異なり、左右検出の方法がボールの有無に依存します。
しかしボールの有無の検出は
pointing_device_driver_init
で行っているのに対し初回の左右チェックは
matrix_init
で行っておりこれは
pointing_device_driver_init
よりも先行します。またこの初回の結果はメモリ上にキャッシュされいくつかのシーンで使用されます。
これによりキャッシュされた左右情報と、ボールの有無の検出後の左右情報に矛盾が生じ
意図しない動作を引き起こしてました。
具体的には左手ボールで左にUSBを接続したときに顕在化してました。
(ほかにも幾つかのケースで顕在化していたと考えられます)
本修正ではKeyball46のみボールの有無検出を
keyboard_pre_init_kb
にまで早めました。これにより初回の左右チェック前にボール有無情報がセットされ、元々の意図通りに動作します。
変更を46にのみ限定したのは、この修正に伴い39や61のテストをやり直さなければならないのを嫌ったためです。
将来的にはコードを統一してメンテコストを下げる意味で、39や61のコードも共通化しても良いかもしれません。