目次 - API(機能別) - キーボード

# キーボード

インクルードファイル: SDL_keyboard.h SDL_keycode.h SDL_scancode.h

## 概要

ここに分類される関数は, キーボードの入力を扱うものである.

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)
キーボードの一番上の行にある数字キーは特別な例外で, キーボードレイアウトに関係なく常にSDLK_0, SDLK_1, ..., SDLK_9にマッピングされる.

2つの値の大きな違いは, OSが物理的なキーを別の仮想キーに割り当てているときに現れる. 例えば, 標準的なQWERTYキーボードをドイツ語のQWERTZレイアウトに割り当てると, "Y"キーのスキャンコードはSDL_SCANCODE_Yだが, キーコードはSDLK_zとなる. どちらのコードを使うかはアプリケーションによる. 操作がレイアウトによる(例えば"WASD"キーを左手で扱う方向キーとする)場合はスキャンコードが適しているが, 操作が文字による(例えば"I"がアイテムを意味する)場合はキーコードのほうがよい.

## 列挙体

1. SDL_Keycode
2. SDL_Keymod
3. SDL_Scancode

## 構造体

1. SDL_Keysym

## 関数

1. SDL_GetKeyFromName
2. SDL_GetKeyFromScancode
3. SDL_GetKeyName
4. SDL_GetKeyboardFocus
5. SDL_GetKeyboardState
6. SDL_GetModState
7. SDL_GetScancodeFromKey
8. SDL_GetScancodeFromName
9. SDL_GetScancodeName
10. SDL_HasScreenKeyboardSupport
11. SDL_IsScreenKeyboardShown
12. SDL_IsTextInputActive
13. SDL_SetModState
14. SDL_SetTextInputRect
15. SDL_StartTextInput
16. SDL_StopTextInput

## SDL Wikiへのリンク

Keyboard Support - SDL Wiki