Module: RbSDL2::Keyboard

Extended by:
ModState
Defined in:
lib/rb_sdl2/keyboard/state.rb,
lib/rb_sdl2/keyboard/keyboard.rb,
lib/rb_sdl2/keyboard/mod_state.rb

Defined Under Namespace

Modules: ModState Classes: State

Constant Summary

Constants included from ModState

ModState::KMOD_ALT, ModState::KMOD_CAPS, ModState::KMOD_CTRL, ModState::KMOD_GUI, ModState::KMOD_LALT, ModState::KMOD_LCTRL, ModState::KMOD_LGUI, ModState::KMOD_LSHIFT, ModState::KMOD_MODE, ModState::KMOD_NONE, ModState::KMOD_NUM, ModState::KMOD_RALT, ModState::KMOD_RCTRL, ModState::KMOD_RGUI, ModState::KMOD_RSHIFT, ModState::KMOD_SCROLL, ModState::KMOD_SHIFT

Class Method Summary collapse

Methods included from ModState

alt_key?, caps_key?, ctrl_key?, gui_key?, l_alt_key?, l_ctrl_key?, l_gui_key?, l_shift_key?, mod_key?, mode_key?, num_key?, r_alt_key?, r_ctrl_key?, r_gui_key?, r_shift_key?, scroll_lock_key?, shift_key?, state=, state?

Class Method Details

.any_key?Boolean Also known as: hit_any_key?, pressed_any_key?

いずれかのキーが押されている場合に true を戻す。つまり *any key* が押されたということ。 このメソッドを使用するには定期的に Event.pump を呼び出してキーボード状態を更新する必要があります。

Returns:

  • (Boolean)


9
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 9

def any_key? = state.any?

.key?(s) ⇒ Boolean Also known as: pressed_key?

s に与えた文字列に対応するスキャンコードのキーが押されてい場合に true を戻します。 キーが押されていない場合、対応するスキャンコードが無い場合は false を戻します。 このメソッドを使用するには定期的に Event.pump を呼び出してキーボード状態を更新する必要があります。

Returns:

  • (Boolean)


16
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 16

def key?(s) = state[::SDL.GetScancodeFromName(s)]

.keycode_name(num) ⇒ Object

num に与えたキーコードに対応する文字列を戻します。対応する文字列が無い場合は nil を戻します。



20
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 20

def keycode_name(num) = (s = ::SDL.GetKeyName(num).read_string).empty? ? nil : s

.keycode_to_scancode(num) ⇒ Object

キーコードをスキャンコードに変換します。対応するキーコードがない場合は nil を戻します。



23
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 23

def keycode_to_scancode(num) = ::SDL.GetScancodeFromKey(num).nonzero?

.pressed_keysObject

現在キーボードの押されているキーの名前を配列で戻します。 このメソッドを使用するには定期的に Event.pump を呼び出してキーボード状態を更新する必要があります。



27
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 27

def pressed_keys = state.to_a.map { |n| Keyboard.scancode_name(n) }

.scancode?(num) ⇒ Boolean

num に与えたスキャンコードのキーが押されている場合に true を戻します。 スキャンコードに対応するキーがない場合、キーが押されていない場合は false を戻します。

Returns:

  • (Boolean)


34
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 34

def scancode?(num) = state.scancode?(num)

.scancode_name(num) ⇒ Object

num に与えたスキャンコードに対応する文字列を戻します。対応する文字列が無い場合は nil を戻します。



30
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 30

def scancode_name(num) = (s = ::SDL.GetScancodeName(num).read_string).empty? ? nil : s

.scancode_to_keycode(num) ⇒ Object

スキャンコードをキーコードに変換します。対応するキーコードがない場合は nil を戻します。



37
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 37

def scancode_to_keycode(num) = ::SDL.GetKeyFromScancode(num).nonzero?

.stateObject



41
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 41

def state = State.instance

.to_keycode(s) ⇒ Object

s に与えた文字列に対応するキーコードを戻します。対応するキーコードがない場合は nil を戻します。



44
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 44

def to_keycode(s) = ::SDL.GetKeyFromName(s).nonzero?

.to_scancode(s) ⇒ Object

s に与えた文字列に対応するスキャンコードを戻します。対応するスキャンコードが無い場合は nil を戻します。



47
# File 'lib/rb_sdl2/keyboard/keyboard.rb', line 47

def to_scancode(s) = ::SDL.GetScancodeFromName(s).nonzero?