« キーボードコントロールを実装しました その2 | トップページ | JPEG イメージが壊れています…その4 »

2014年10月28日 (火)

キーボードコントロールを実装しました その3

シフトキーが効かない原因がよく分からないので、キーボードコントロールの情報を見直しました。

キーボードの情報の主なところは操作したキーの仮想キーコードとキーのUP/DOWNの情報の2つです。

が、もうひとつありました…keydownという情報です。この情報、キーが押された or 離された時にのみ1になると思い込んでいましたが、もしかして違うのか…

zerosikikai.cppにkeydownの値を表示するprintf()を追加して再度ログを取りながら実行しました。

以下が出力です。

keydown = 1
keycode = 10     // SHIFT キーがPressされた
keycode_flg = ffffff80
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 41    // 'A'キーがPressされた
keycode_flg = ffffff80
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 41   // 'A'キーがReleaseされた
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 1
keycode = 00
keycode_flg = 00
keydown = 0
keycode = 10   // SHIFTキーがReleaseされた
keycode_flg = 00

どうやら、SHIFTキーが離されるまでkeydownが1にセットされているようです。サンプルソースの理解が足らなかったことが原因ですね…(;ω;)

keydownの値設定部分が少しだけ複雑なのですが、「こんな感じかなぁ」くらいの理解で実装を進めたのがマズかったですね。実際に通信させてみなければわからないことは多いのですが…

というわけで、SHIFT/ALT/CONTROLに関しては、この情報の適切な設定が必要ということのようです。

(追記)

SHIFT/ALT/CONTROLの各キーの状態を保存するようにして、キーが押されている時はkeydownを1にセットするように変更しました。SHIFT/ALT/CONTROLが正しく効くことは確認できました。

マウスとキーボード操作はなんとなくできるようになったのでクライアントとしては使えますが、まだ、やや不安定なのは否めません…調整が必要です。

« キーボードコントロールを実装しました その2 | トップページ | JPEG イメージが壊れています…その4 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: キーボードコントロールを実装しました その3:

« キーボードコントロールを実装しました その2 | トップページ | JPEG イメージが壊れています…その4 »