ここに分類される関数は, キーボードの入力を扱うものである.
SDLにはキーを表す異なる値 - スキャンコードとキーコードがある.
SDL_Scancodeの値はキーボード上のキーの物理的な位置を表すために使う. この型の値はキーボードのキーを表し, SDL_Eventのkey.keysym.scancodeフィールドなどで使われる. SDL_Scancodeの値はUSBの標準(http://www.usb.org/developers/docs/)に基づいている. スキャンコードの定数は, キーの名前の先頭にSDL_SCANCODE_をつけたものである. (例: SDL_SCANCODE_SPACE)
SDL_Keycodeの値は, 現在のキーボードレイアウトにマッピングされ, SDL_Scancodeと一対一の関係にある. この型の値はキーボードの文字を表し, SDL_Eventのkey.keysym.symフィールドなどで使われる. SDL_Keycodeの値は, 修飾キーを押さずにそのキーを押した場合の文字のUnicodeに基づいている.文字でないキーはスキャンコードの最上位ビットを立てた(0x8000000との論理和)値である. キーコードの定数は, キーの文字(小文字)の先頭にSDLK_をつけたものである. (例: SDLK_SPACE)
2つの値の大きな違いは, OSが物理的なキーを別の仮想キーに割り当てているときに現れる. 例えば, 標準的なQWERTYキーボードをドイツ語のQWERTZレイアウトに割り当てると, "Y"キーのスキャンコードはSDL_SCANCODE_Yだが, キーコードはSDLK_zとなる. どちらのコードを使うかはアプリケーションによる. 操作がレイアウトによる(例えば"WASD"キーを左手で扱う方向キーとする)場合はスキャンコードが適しているが, 操作が文字による(例えば"I"がアイテムを意味する)場合はキーコードのほうがよい.