reiju's diary

オタクが文字を入力しておくだけ

SDL2のkeysymの取り扱いには注意しよう

環境

Linux arch-note 4.14.8-1-ARCH #1 SMP PREEMPT Wed Dec 20 21:27:44 UTC 2017 x86_64 GNU/Linux

上がC, 下はC++ではなくDです。どちらも同等の動きをします。


gistbf948df59f11c8e707c529f339119612


gist158724b107b0283dbc1169de6915e490

SDL_Event.key.keysym.symの値は、KEYDOWNしない時にはどうやらマウスのX座標がそのまま代入されるようで、画面に表示される線の上にマウスをもっていってやるとプログラムが落ちます(この場合のコードは)。

f:id:xreiju:20171226170603p:plain

というわけで、SDL2でキーボードの入力を受けつけるときは、必ずSDL_Event.typeがSDL_KEYDOWNであることを確認するif文を挟むようにしましょう。

ちなみに、マウスの座標はSDL_GetMouseStateをつかえば取得できます。

追記: 知識ある方に共用体のためこうなるのは当然と教えてもらいました。確かにそうです。確認不足で申し訳ない。