Open
Description
問題
Mac, Linux, Web で KeyShift
, KeyControl
, KeyAlt
, KeyCommand
を長押しした時、 .down()
が true になり続けます。
また、離した時に .up()
が true になりません。
原因
原因は CKeyboard::update()
の実装にあると考えられます。
macOS_Linux の CKeyboard.cpp を見ると、問題が発生するキーの InputState::update()
を2回呼び出していることが判明しました。
OpenSiv3D/Siv3D/src/Siv3D-Platform/macOS_Linux/Siv3D/Keyboard/CKeyboard.cpp
Lines 228 to 252 in fdc5662
最初の for ループで一度呼び出され、その後個別に2回目の呼び出しが行われています。
for ループ内では、問題になっているキーについては glfwKey == 0
なので、常に .update(false)
が呼び出されます。
この .update(false)
によって InputState
が長押しを認識できず、毎フレーム .down()
が true になります。
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status