note
	description: "Keyboard Events. To retreive the state of the keyboard. Must be return by an object of GAME_EVENT_CONTROLLER type."
	author: "Louis Marchand"
	date: "Sun, 04 Feb 2018 16:14:25 +0000"
	revision: "2.0"

class 
	GAME_KEY_EVENT

create {GAME_SDL_ANY}
	make

feature {NONE} -- Initialization

	default_create
			-- Process instances of classes with no creation clause.
			-- (Default: do nothing.)
			-- (from ANY)
		do
		end

	make (a_physical_code, a_virtual_code: INTEGER_32; a_modifier: NATURAL_16; a_repeat: NATURAL_8)
			-- Initialization for Current.
		do
			physical_code := a_physical_code
			virtual_code := a_virtual_code
			repeat := a_repeat
			modifier := a_modifier
		end

	make_from_name (a_name: READABLE_STRING_GENERAL)
			-- Initialize Current using a text representation.
			-- (from GAME_KEY)
		local
			l_code: INTEGER_32
			l_utf_converter: UTF_CONVERTER
			l_text_c: C_STRING
		do
			create l_utf_converter
			create l_text_c.make (l_utf_converter.string_32_to_utf_8_string_8 (a_name.to_string_32))
			l_code := {GAME_SDL_SCANCODE}.sdl_getscancodefromname (l_text_c.item)
			if l_code = {GAME_SDL_SCANCODE}.sdl_scancode_unknown then
				l_code := {GAME_SDL_VIRTUAL_KEY}.sdl_getkeyfromname (l_text_c.item)
				make_from_virtual_code (l_code)
			else
				make_from_physical_code (l_code)
			end
		end

	make_from_physical_code (a_physical_code: INTEGER_32)
			-- Initialize Current using hardware
			-- dependant a_physical_code value (scancode).
			-- (from GAME_KEY)
		do
			physical_code := a_physical_code
			virtual_code := {GAME_SDL_VIRTUAL_KEY}.sdl_getkeyfromscancode (physical_code)
		end

	make_from_virtual_code (a_virtual_code: INTEGER_32)
			-- Initialize Current using layout aware
			-- a_virtual_code value (keycode).
			-- (from GAME_KEY)
		do
			virtual_code := a_virtual_code
			physical_code := {GAME_SDL_SCANCODE}.sdl_getscancodefromkey (virtual_code)
		end
	
feature -- Access

	generating_type: TYPE [detachable GAME_KEY_EVENT]
			-- Type of current object
			-- (type of which it is a direct instance)
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			generating_type_not_void: Result /= Void
		end

	generator: STRING_8
			-- Name of current object's generating class
			-- (base class of the type of which it is a direct instance)
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			generator_not_void: Result /= Void
			generator_not_empty: not Result.is_empty
		end

	has_alt_modifier: BOOLEAN
			-- The key has the alt modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_alt) /= 0
		end

	has_alt_gr_modifier: BOOLEAN
			-- The key has the AltGr modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_mode) /= 0
		end

	has_caps_lock_modifier: BOOLEAN
			-- The key has the caps luck modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_caps) /= 0
		end

	has_ctrl_modifier: BOOLEAN
			-- The key has the ctrl modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_ctrl) /= 0
		end

	has_error: BOOLEAN
			-- Is the library has generate an error
			-- (from GAME_ERROR_MANAGER)

	has_gui_modifier: BOOLEAN
			-- The key has the gui (Windows key) modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_gui) /= 0
		end

	has_left_alt_modifier: BOOLEAN
			-- The key has the left alt modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_lalt) /= 0
		end

	has_left_ctrl_modifier: BOOLEAN
			-- The key has the left ctrl modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_lctrl) /= 0
		end

	has_left_gui_modifier: BOOLEAN
			-- The key has the left GUI (Windows key) modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_lgui) /= 0
		end

	has_left_shift_modifier: BOOLEAN
			-- The key has the left shift modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_lshift) /= 0
		end

	has_no_modifier: BOOLEAN
			-- No modifier has been use with the key
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier = {GAME_SDL_EXTERNAL}.kmod_none
		end

	has_num_lock_modifier: BOOLEAN
			-- The key has the num luck modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_num) /= 0
		end

	has_right_alt_modifier: BOOLEAN
			-- The key has the right alt modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_ralt) /= 0
		end

	has_right_ctrl_modifier: BOOLEAN
			-- The key has the right ctrl modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_rctrl) /= 0
		end

	has_right_gui_modifier: BOOLEAN
			-- The key has the right GUI (Windows key) modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_rgui) /= 0
		end

	has_right_shift_modifier: BOOLEAN
			-- The key has the right shift modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_rshift) /= 0
		end

	has_shift_modifier: BOOLEAN
			-- The key has the shift modifier
			-- (from GAME_KEY_MODIFIER)
		do
			Result := modifier.bit_and ({GAME_SDL_EXTERNAL}.kmod_shift) /= 0
		end

	is_0: BOOLEAN
			-- Current represent the 0 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_0
		end

	is_physical_0: BOOLEAN
			-- Current represent the physical 0 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_0
		end

	is_1: BOOLEAN
			-- Current represent the 1 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_1
		end

	is_physical_1: BOOLEAN
			-- Current represent the physical 1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_1
		end

	is_2: BOOLEAN
			-- Current represent the 2 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_2
		end

	is_physical_2: BOOLEAN
			-- Current represent the physical 2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_2
		end

	is_3: BOOLEAN
			-- Current represent the 3 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_3
		end

	is_physical_3: BOOLEAN
			-- Current represent the physical 3 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_3
		end

	is_4: BOOLEAN
			-- Current represent the 4 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_4
		end

	is_physical_4: BOOLEAN
			-- Current represent the physical 4 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_4
		end

	is_5: BOOLEAN
			-- Current represent the 5 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_5
		end

	is_physical_5: BOOLEAN
			-- Current represent the physical 5 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_5
		end

	is_6: BOOLEAN
			-- Current represent the 6 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_6
		end

	is_physical_6: BOOLEAN
			-- Current represent the physical 6 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_6
		end

	is_7: BOOLEAN
			-- Current represent the 7 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_7
		end

	is_physical_7: BOOLEAN
			-- Current represent the physical 7 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_7
		end

	is_8: BOOLEAN
			-- Current represent the 8 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_8
		end

	is_physical_8: BOOLEAN
			-- Current represent the physical 8 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_8
		end

	is_9: BOOLEAN
			-- Current represent the 9 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_9
		end

	is_physical_9: BOOLEAN
			-- Current represent the physical 9 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_9
		end

	is_a: BOOLEAN
			-- Current represent the A key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_a
		end

	is_physical_a: BOOLEAN
			-- Current represent the physical a key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_a
		end

	is_again: BOOLEAN
			-- Current represent the again key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_again
		end

	is_physical_again: BOOLEAN
			-- Current represent the physical again key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_again
		end

	is_ampersand: BOOLEAN
			-- Current represent the ampersand key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ampersand
		end

	is_physical_apostrophe: BOOLEAN
			-- Current represent the physical apostrophe key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_apostrophe
		end

	is_physical_app_1: BOOLEAN
			-- Current represent the physical app 1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_app1
		end

	is_physical_app_2: BOOLEAN
			-- Current represent the physical app 2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_app2
		end

	is_application: BOOLEAN
			-- Current represent the application key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_application
		end

	is_physical_application: BOOLEAN
			-- Current represent the physical application key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_application
		end

	is_application_control_back: BOOLEAN
			-- Current represent the back key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_back
		end

	is_physical_application_control_back: BOOLEAN
			-- Current represent the physical back key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_back
		end

	is_application_control_bookmarks: BOOLEAN
			-- Current represent the bookmarks key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_bookmarks
		end

	is_physical_application_control_bookmarks: BOOLEAN
			-- Current represent the physical bookmarks key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_bookmarks
		end

	is_application_control_forward: BOOLEAN
			-- Current represent the forward key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_forward
		end

	is_physical_application_control_forward: BOOLEAN
			-- Current represent the physical forward key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_forward
		end

	is_application_control_home: BOOLEAN
			-- Current represent the home key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_home
		end

	is_physical_application_control_home: BOOLEAN
			-- Current represent the physical home key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_home
		end

	is_application_control_refresh: BOOLEAN
			-- Current represent the refresh key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_refresh
		end

	is_physical_application_control_refresh: BOOLEAN
			-- Current represent the physical refresh key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_refresh
		end

	is_application_control_search: BOOLEAN
			-- Current represent the search key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_search
		end

	is_physical_application_control_search: BOOLEAN
			-- Current represent the physical search key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_search
		end

	is_application_control_stop: BOOLEAN
			-- Current represent the stop key of the application control keyboard section
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ac_stop
		end

	is_physical_application_control_stop: BOOLEAN
			-- Current represent the physical stop key of the application_control keypad
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ac_stop
		end

	is_as400_keypad_equals: BOOLEAN
			-- Current represent the key pad equals key for as400 keyboard
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_equalsas400
		end

	is_physical_as400_keypad_equals: BOOLEAN
			-- Current represent the physical keypad equals key for as400 keyboard
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_equalsas400
		end

	is_asterisk: BOOLEAN
			-- Current represent the asterisk key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_asterisk
		end

	is_at: BOOLEAN
			-- Current represent the at key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_at
		end

	is_audio_mute: BOOLEAN
			-- Current represent the audio mute key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_audiomute
		end

	is_physical_audio_mute: BOOLEAN
			-- Current represent the physical audio mute key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_audiomute
		end

	is_audio_next: BOOLEAN
			-- Current represent the audio_next key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_audionext
		end

	is_physical_audio_next: BOOLEAN
			-- Current represent the physical audio next key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_audionext
		end

	is_audio_play: BOOLEAN
			-- Current represent the audio play key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_audioplay
		end

	is_physical_audio_play: BOOLEAN
			-- Current represent the physical audio play key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_audioplay
		end

	is_audio_prev: BOOLEAN
			-- Current represent the audio prev key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_audioprev
		end

	is_physical_audio_prev: BOOLEAN
			-- Current represent the physical audio prev key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_audioprev
		end

	is_audio_stop: BOOLEAN
			-- Current represent the audio stop key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_audiostop
		end

	is_physical_audio_stop: BOOLEAN
			-- Current represent the physical audio stop key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_audiostop
		end

	is_b: BOOLEAN
			-- Current represent the B key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_b
		end

	is_physical_b: BOOLEAN
			-- Current represent the physical b key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_b
		end

	is_backquote: BOOLEAN
			-- Current represent the backquote key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_backquote
		end

	is_backslash: BOOLEAN
			-- Current represent the backslash key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_backslash
		end

	is_physical_backslash: BOOLEAN
			-- Current represent the physical backslash key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_backslash
		end

	is_backspace: BOOLEAN
			-- Current represent the backspace key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_backspace
		end

	is_physical_backspace: BOOLEAN
			-- Current represent the physical backspace key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_backspace
		end

	is_physical_brightness_down: BOOLEAN
			-- Current represent the physical brightness down key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_brightnessdown
		end

	is_brightness_up: BOOLEAN
			-- Current represent the brightness up key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_brightnessup
		end

	is_physical_brightness_up: BOOLEAN
			-- Current represent the physical brightness up key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_brightnessup
		end

	is_brightnessdown: BOOLEAN
			-- Current represent the brightnessdown key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_brightnessdown
		end

	is_c: BOOLEAN
			-- Current represent the C key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_c
		end

	is_physical_c: BOOLEAN
			-- Current represent the physical c key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_c
		end

	is_calculator: BOOLEAN
			-- Current represent the calculator key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_calculator
		end

	is_physical_calculator: BOOLEAN
			-- Current represent the physical calculator key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_calculator
		end

	is_cancel: BOOLEAN
			-- Current represent the cancel key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_cancel
		end

	is_physical_cancel: BOOLEAN
			-- Current represent the physical cancel key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_cancel
		end

	is_caps_lock: BOOLEAN
			-- Current represent the caps lock key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_capslock
		end

	is_physical_caps_lock: BOOLEAN
			-- Current represent the physical caps lock key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_capslock
		end

	is_caret: BOOLEAN
			-- Current represent the caret key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_caret
		end

	is_clear: BOOLEAN
			-- Current represent the clear key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_clear
		end

	is_physical_clear: BOOLEAN
			-- Current represent the physical clear key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_clear
		end

	is_clear_again: BOOLEAN
			-- Current represent the clear again key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_clearagain
		end

	is_physical_clear_again: BOOLEAN
			-- Current represent the physical clear/again key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_clearagain
		end

	is_colon: BOOLEAN
			-- Current represent the colon key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_colon
		end

	is_comma: BOOLEAN
			-- Current represent the comma key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_comma
		end

	is_physical_comma: BOOLEAN
			-- Current represent the physical comma key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_comma
		end

	is_computer: BOOLEAN
			-- Current represent the computer key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_computer
		end

	is_physical_computer: BOOLEAN
			-- Current represent the physical computer key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_computer
		end

	is_copy: BOOLEAN
			-- Current represent the copy key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_copy
		end

	is_physical_copy: BOOLEAN
			-- Current represent the physical copy key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_copy
		end

	is_crsel: BOOLEAN
			-- Current represent the crsel key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_crsel
		end

	is_physical_crsel: BOOLEAN
			-- Current represent the physical crsel key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_crsel
		end

	is_currency_sub_unit: BOOLEAN
			-- Current represent the currency sub unit key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_currencysubunit
		end

	is_physical_currency_sub_unit: BOOLEAN
			-- Current represent the physical currency sub unit key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_currencysubunit
		end

	is_currency_unit: BOOLEAN
			-- Current represent the currency unit key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_currencyunit
		end

	is_physical_currency_unit: BOOLEAN
			-- Current represent the physical currency unit key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_currencyunit
		end

	is_cut: BOOLEAN
			-- Current represent the cut key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_cut
		end

	is_physical_cut: BOOLEAN
			-- Current represent the physical cut key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_cut
		end

	is_d: BOOLEAN
			-- Current represent the D key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_d
		end

	is_physical_d: BOOLEAN
			-- Current represent the physical d key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_d
		end

	is_decimal_separator: BOOLEAN
			-- Current represent the decimal separator key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_decimalseparator
		end

	is_physical_decimal_separator: BOOLEAN
			-- Current represent the physical decimal separator key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_decimalseparator
		end

	is_delete: BOOLEAN
			-- Current represent the delete key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_delete
		end

	is_physical_delete: BOOLEAN
			-- Current represent the physical delete key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_delete
		end

	is_display_switch: BOOLEAN
			-- Current represent the display switch key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_displayswitch
		end

	is_physical_display_switch: BOOLEAN
			-- Current represent the physical display switch key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_displayswitch
		end

	is_dollar: BOOLEAN
			-- Current represent the dollar key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_dollar
		end

	is_double_quote: BOOLEAN
			-- Current represent the double quote key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_quotedbl
		end

	is_down: BOOLEAN
			-- Current represent the down key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_down
		end

	is_physical_down: BOOLEAN
			-- Current represent the physical down key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_down
		end

	is_e: BOOLEAN
			-- Current represent the E key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_e
		end

	is_physical_e: BOOLEAN
			-- Current represent the physical e key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_e
		end

	is_eject: BOOLEAN
			-- Current represent the eject key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_eject
		end

	is_physical_eject: BOOLEAN
			-- Current represent the physical eject key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_eject
		end

	is_end: BOOLEAN
			-- Current represent the end key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_end
		end

	is_physical_end: BOOLEAN
			-- Current represent the physical end key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_end
		end

	is_equals: BOOLEAN
			-- Current represent the equals key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_equals
		end

	is_physical_equals: BOOLEAN
			-- Current represent the physical equals key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_equals
		end

	is_erase_eaze_alternate_erase: BOOLEAN
			-- Current represent the alternate erase key for Erase Eaze keyboard
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_alterase
		end

	is_physical_erase_eaze_alternate_erase: BOOLEAN
			-- Current represent the physical alternate erase key for Erase Eaze keyboard
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_alterase
		end

	is_escape: BOOLEAN
			-- Current represent the escape key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_escape
		end

	is_physical_escape: BOOLEAN
			-- Current represent the physical escape key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_escape
		end

	is_exclaim: BOOLEAN
			-- Current represent the exclaim key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_exclaim
		end

	is_execute: BOOLEAN
			-- Current represent the execute key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_execute
		end

	is_physical_execute: BOOLEAN
			-- Current represent the physical execute key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_execute
		end

	is_exsel: BOOLEAN
			-- Current represent the exsel key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_exsel
		end

	is_physical_exsel: BOOLEAN
			-- Current represent the physical exsel key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_exsel
		end

	is_f: BOOLEAN
			-- Current represent the F key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f
		end

	is_physical_f: BOOLEAN
			-- Current represent the physical f key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f
		end

	is_f1: BOOLEAN
			-- Current represent the f1 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f1
		end

	is_physical_f1: BOOLEAN
			-- Current represent the physical f1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f1
		end

	is_f10: BOOLEAN
			-- Current represent the f10 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f10
		end

	is_physical_f10: BOOLEAN
			-- Current represent the physical f10 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f10
		end

	is_f11: BOOLEAN
			-- Current represent the f11 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f11
		end

	is_physical_f11: BOOLEAN
			-- Current represent the physical f11 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f11
		end

	is_f12: BOOLEAN
			-- Current represent the f12 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f12
		end

	is_physical_f12: BOOLEAN
			-- Current represent the physical f12 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f12
		end

	is_f13: BOOLEAN
			-- Current represent the f13 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f13
		end

	is_physical_f13: BOOLEAN
			-- Current represent the physical f13 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f13
		end

	is_f14: BOOLEAN
			-- Current represent the f14 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f14
		end

	is_physical_f14: BOOLEAN
			-- Current represent the physical f14 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f14
		end

	is_f15: BOOLEAN
			-- Current represent the f15 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f15
		end

	is_physical_f15: BOOLEAN
			-- Current represent the physical f15 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f15
		end

	is_f16: BOOLEAN
			-- Current represent the f16 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f16
		end

	is_physical_f16: BOOLEAN
			-- Current represent the physical f16 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f16
		end

	is_f17: BOOLEAN
			-- Current represent the f17 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f17
		end

	is_physical_f17: BOOLEAN
			-- Current represent the physical f17 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f17
		end

	is_f18: BOOLEAN
			-- Current represent the f18 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f18
		end

	is_physical_f18: BOOLEAN
			-- Current represent the physical f18 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f18
		end

	is_f19: BOOLEAN
			-- Current represent the f19 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f19
		end

	is_physical_f19: BOOLEAN
			-- Current represent the physical f19 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f19
		end

	is_f2: BOOLEAN
			-- Current represent the f2 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f2
		end

	is_physical_f2: BOOLEAN
			-- Current represent the physical f2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f2
		end

	is_f20: BOOLEAN
			-- Current represent the f20 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f20
		end

	is_physical_f20: BOOLEAN
			-- Current represent the physical f20 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f20
		end

	is_f21: BOOLEAN
			-- Current represent the f21 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f21
		end

	is_physical_f21: BOOLEAN
			-- Current represent the physical f21 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f21
		end

	is_f22: BOOLEAN
			-- Current represent the f22 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f22
		end

	is_physical_f22: BOOLEAN
			-- Current represent the physical f22 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f22
		end

	is_f23: BOOLEAN
			-- Current represent the f23 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f23
		end

	is_physical_f23: BOOLEAN
			-- Current represent the physical f23 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f23
		end

	is_f24: BOOLEAN
			-- Current represent the f24 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f24
		end

	is_physical_f24: BOOLEAN
			-- Current represent the physical f24 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f24
		end

	is_f3: BOOLEAN
			-- Current represent the f3 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f3
		end

	is_physical_f3: BOOLEAN
			-- Current represent the physical f3 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f3
		end

	is_f4: BOOLEAN
			-- Current represent the f4 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f4
		end

	is_physical_f4: BOOLEAN
			-- Current represent the physical f4 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f4
		end

	is_f5: BOOLEAN
			-- Current represent the f5 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f5
		end

	is_physical_f5: BOOLEAN
			-- Current represent the physical f5 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f5
		end

	is_f6: BOOLEAN
			-- Current represent the f6 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f6
		end

	is_physical_f6: BOOLEAN
			-- Current represent the physical f6 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f6
		end

	is_f7: BOOLEAN
			-- Current represent the f7 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f7
		end

	is_physical_f7: BOOLEAN
			-- Current represent the physical f7 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f7
		end

	is_f8: BOOLEAN
			-- Current represent the f8 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f8
		end

	is_physical_f8: BOOLEAN
			-- Current represent the physical f8 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f8
		end

	is_f9: BOOLEAN
			-- Current represent the f9 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_f9
		end

	is_physical_f9: BOOLEAN
			-- Current represent the physical f9 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_f9
		end

	is_find: BOOLEAN
			-- Current represent the find key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_find
		end

	is_physical_find: BOOLEAN
			-- Current represent the physical find key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_find
		end

	is_g: BOOLEAN
			-- Current represent the G key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_g
		end

	is_physical_g: BOOLEAN
			-- Current represent the physical g key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_g
		end

	is_physical_grave_accent: BOOLEAN
			-- Current represent the physical grave accent key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_grave
		end

	is_greater: BOOLEAN
			-- Current represent the greater key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_greater
		end

	is_h: BOOLEAN
			-- Current represent the H key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_h
		end

	is_physical_h: BOOLEAN
			-- Current represent the physical h key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_h
		end

	is_hash: BOOLEAN
			-- Current represent the hash key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_hash
		end

	is_help: BOOLEAN
			-- Current represent the help key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_help
		end

	is_physical_help: BOOLEAN
			-- Current represent the physical help key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_help
		end

	is_home: BOOLEAN
			-- Current represent the home key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_home
		end

	is_physical_home: BOOLEAN
			-- Current represent the physical home key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_home
		end

	is_i: BOOLEAN
			-- Current represent the I key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_i
		end

	is_physical_i: BOOLEAN
			-- Current represent the physical i key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_i
		end

	is_insert: BOOLEAN
			-- Current represent the insert key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_insert
		end

	is_physical_insert: BOOLEAN
			-- Current represent the physical insert key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_insert
		end

	is_physical_internationa_6: BOOLEAN
			-- Current represent the physical international 6 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international6
		end

	is_physical_international_1: BOOLEAN
			-- Current represent the physical international 1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international1
		end

	is_physical_international_2: BOOLEAN
			-- Current represent the physical international 2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international2
		end

	is_physical_international_3: BOOLEAN
			-- Current represent the physical international 3 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international3
		end

	is_physical_international_4: BOOLEAN
			-- Current represent the physical international 4 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international4
		end

	is_physical_international_5: BOOLEAN
			-- Current represent the physical international 5 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international5
		end

	is_physical_international_7: BOOLEAN
			-- Current represent the physical international 7 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international7
		end

	is_physical_international_8: BOOLEAN
			-- Current represent the physical international 8 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international8
		end

	is_physical_international_9: BOOLEAN
			-- Current represent the physical international 9 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_international9
		end

	is_physical_iso_backslash: BOOLEAN
			-- Current represent the physical backslash key for ISO keyboard
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_nonusbackslash
		end

	is_physical_iso_hash: BOOLEAN
			-- Current represent the physical hash key for ISO keyboard.
			-- Don't use this, use is_backslash instead.
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_nonushash
		end

	is_j: BOOLEAN
			-- Current represent the J key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_j
		end

	is_physical_j: BOOLEAN
			-- Current represent the physical j key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_j
		end

	is_k: BOOLEAN
			-- Current represent the K key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_k
		end

	is_physical_k: BOOLEAN
			-- Current represent the physical k key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_k
		end

	is_keyboard_illumination_down: BOOLEAN
			-- Current represent the keyboard illumination down key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kbdillumdown
		end

	is_physical_keyboard_illumination_down: BOOLEAN
			-- Current represent the physical keyboard illumination down key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kbdillumdown
		end

	is_keyboard_illumination_toggle: BOOLEAN
			-- Current represent the keyboard illumination toggle key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kbdillumtoggle
		end

	is_physical_keyboard_illumination_toggle: BOOLEAN
			-- Current represent the physical keyboard illumination toggle key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kbdillumtoggle
		end

	is_physical_keyboard_illumination_up: BOOLEAN
			-- Current represent the physical keyboard illumination up key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kbdillumup
		end

	is_keyboard_illuminationup: BOOLEAN
			-- Current represent the keyboard illumination up key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kbdillumup
		end

	is_keypad_0: BOOLEAN
			-- Current represent the key pad 0 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_0
		end

	is_physical_keypad_0: BOOLEAN
			-- Current represent the physical keypad 0 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_0
		end

	is_keypad_00: BOOLEAN
			-- Current represent the key pad 00 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_00
		end

	is_physical_keypad_00: BOOLEAN
			-- Current represent the physical keypad 00 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_00
		end

	is_keypad_000: BOOLEAN
			-- Current represent the key pad 000 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_000
		end

	is_physical_keypad_000: BOOLEAN
			-- Current represent the physical keypad 000 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_000
		end

	is_keypad_1: BOOLEAN
			-- Current represent the key pad 1 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_1
		end

	is_physical_keypad_1: BOOLEAN
			-- Current represent the physical keypad 1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_1
		end

	is_keypad_2: BOOLEAN
			-- Current represent the key pad 2 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_2
		end

	is_physical_keypad_2: BOOLEAN
			-- Current represent the physical keypad 2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_2
		end

	is_keypad_3: BOOLEAN
			-- Current represent the key pad 3 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_3
		end

	is_physical_keypad_3: BOOLEAN
			-- Current represent the physical keypad 3 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_3
		end

	is_keypad_4: BOOLEAN
			-- Current represent the key pad 4 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_4
		end

	is_physical_keypad_4: BOOLEAN
			-- Current represent the physical keypad 4 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_4
		end

	is_keypad_5: BOOLEAN
			-- Current represent the key pad 5 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_5
		end

	is_physical_keypad_5: BOOLEAN
			-- Current represent the physical keypad 5 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_5
		end

	is_keypad_6: BOOLEAN
			-- Current represent the key pad 6 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_6
		end

	is_physical_keypad_6: BOOLEAN
			-- Current represent the physical keypad 6 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_6
		end

	is_keypad_7: BOOLEAN
			-- Current represent the key pad 7 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_7
		end

	is_physical_keypad_7: BOOLEAN
			-- Current represent the physical keypad 7 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_7
		end

	is_keypad_8: BOOLEAN
			-- Current represent the key pad 8 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_8
		end

	is_physical_keypad_8: BOOLEAN
			-- Current represent the physical keypad 8 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_8
		end

	is_keypad_9: BOOLEAN
			-- Current represent the key pad 9 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_9
		end

	is_physical_keypad_9: BOOLEAN
			-- Current represent the physical keypad 9 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_9
		end

	is_keypad_a: BOOLEAN
			-- Current represent the key pad a key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_a
		end

	is_physical_keypad_a: BOOLEAN
			-- Current represent the physical keypad a key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_a
		end

	is_keypad_ampersand: BOOLEAN
			-- Current represent the key pad ampersand key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_ampersand
		end

	is_physical_keypad_ampersand: BOOLEAN
			-- Current represent the physical keypad ampersand key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_ampersand
		end

	is_keypad_at: BOOLEAN
			-- Current represent the key pad at key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_at
		end

	is_physical_keypad_at: BOOLEAN
			-- Current represent the physical keypad at key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_at
		end

	is_keypad_b: BOOLEAN
			-- Current represent the key pad b key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_b
		end

	is_physical_keypad_b: BOOLEAN
			-- Current represent the physical keypad b key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_b
		end

	is_keypad_backspace: BOOLEAN
			-- Current represent the key pad backspace key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_backspace
		end

	is_physical_keypad_backspace: BOOLEAN
			-- Current represent the physical keypad backspace key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_backspace
		end

	is_keypad_binary: BOOLEAN
			-- Current represent the key pad binary key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_binary
		end

	is_physical_keypad_binary: BOOLEAN
			-- Current represent the physical keypad binary key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_binary
		end

	is_keypad_c: BOOLEAN
			-- Current represent the key pad c key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_c
		end

	is_physical_keypad_c: BOOLEAN
			-- Current represent the physical keypad c key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_c
		end

	is_keypad_clear: BOOLEAN
			-- Current represent the key pad clear key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_clear
		end

	is_physical_keypad_clear: BOOLEAN
			-- Current represent the physical keypad clear key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_clear
		end

	is_keypad_clear_entry: BOOLEAN
			-- Current represent the key pad clear entry key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_clearentry
		end

	is_physical_keypad_clear_entry: BOOLEAN
			-- Current represent the physical keypad clear entry key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_clearentry
		end

	is_keypad_colon: BOOLEAN
			-- Current represent the key pad colon key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_colon
		end

	is_physical_keypad_colon: BOOLEAN
			-- Current represent the physical keypad colon key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_colon
		end

	is_keypad_comma: BOOLEAN
			-- Current represent the key pad comma key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_comma
		end

	is_physical_keypad_comma: BOOLEAN
			-- Current represent the physical keypad comma key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_comma
		end

	is_keypad_d: BOOLEAN
			-- Current represent the key pad d key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_d
		end

	is_physical_keypad_d: BOOLEAN
			-- Current represent the physical keypad d key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_d
		end

	is_keypad_decimal: BOOLEAN
			-- Current represent the key pad decimal key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_decimal
		end

	is_physical_keypad_decimal: BOOLEAN
			-- Current represent the physical keypad decimal key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_decimal
		end

	is_keypad_divide: BOOLEAN
			-- Current represent the key pad divide key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_divide
		end

	is_physical_keypad_divide: BOOLEAN
			-- Current represent the physical keypad divide key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_divide
		end

	is_keypad_double_ampersand: BOOLEAN
			-- Current represent the key pad double ampersand key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_dblampersand
		end

	is_physical_keypad_double_ampersand: BOOLEAN
			-- Current represent the physical keypad double ampersand key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_dblampersand
		end

	is_keypad_double_vertical_bar: BOOLEAN
			-- Current represent the key pad double vertical bar key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_dblverticalbar
		end

	is_physical_keypad_double_vertical_bar: BOOLEAN
			-- Current represent the physical keypad double vertical bar key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_dblverticalbar
		end

	is_keypad_e: BOOLEAN
			-- Current represent the key pad e key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_e
		end

	is_physical_keypad_e: BOOLEAN
			-- Current represent the physical keypad e key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_e
		end

	is_keypad_enter: BOOLEAN
			-- Current represent the key pad enter key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_enter
		end

	is_physical_keypad_enter: BOOLEAN
			-- Current represent the physical keypad enter key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_enter
		end

	is_physical_keypad_equals: BOOLEAN
			-- Current represent the physical keypad equals key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_equals
		end

	is_keypad_exclamation_mark: BOOLEAN
			-- Current represent the key pad exclamation mark key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_exclam
		end

	is_physical_keypad_exclamation_mark: BOOLEAN
			-- Current represent the physical keypad exclamation mark key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_exclam
		end

	is_keypad_f: BOOLEAN
			-- Current represent the key pad f key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_f
		end

	is_physical_keypad_f: BOOLEAN
			-- Current represent the physical keypad f key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_f
		end

	is_keypad_greater: BOOLEAN
			-- Current represent the key pad greater key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_greater
		end

	is_physical_keypad_greater: BOOLEAN
			-- Current represent the physical keypad greater key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_greater
		end

	is_keypad_hash: BOOLEAN
			-- Current represent the key pad hash key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_hash
		end

	is_physical_keypad_hash: BOOLEAN
			-- Current represent the physical keypad hash key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_hash
		end

	is_keypad_hexadecimal: BOOLEAN
			-- Current represent the key pad hexadecimal key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_hexadecimal
		end

	is_physical_keypad_hexadecimal: BOOLEAN
			-- Current represent the physical keypad hexadecimal key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_hexadecimal
		end

	is_keypad_left_brace: BOOLEAN
			-- Current represent the key pad left brace key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_leftbrace
		end

	is_physical_keypad_left_brace: BOOLEAN
			-- Current represent the physical keypad left brace key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_leftbrace
		end

	is_keypad_left_parenthesis: BOOLEAN
			-- Current represent the key pad left parenthesis key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_leftparen
		end

	is_physical_keypad_left_parenthesis: BOOLEAN
			-- Current represent the physical keypad left parenthesis key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_leftparen
		end

	is_keypad_less: BOOLEAN
			-- Current represent the key pad less key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_less
		end

	is_physical_keypad_less: BOOLEAN
			-- Current represent the physical keypad less key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_less
		end

	is_keypad_mem_add: BOOLEAN
			-- Current represent the key pad mem add key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memadd
		end

	is_physical_keypad_mem_add: BOOLEAN
			-- Current represent the physical keypad mem add key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memadd
		end

	is_keypad_mem_clear: BOOLEAN
			-- Current represent the key pad mem clear key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memclear
		end

	is_physical_keypad_mem_clear: BOOLEAN
			-- Current represent the physical keypad mem clear key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memclear
		end

	is_keypad_mem_divide: BOOLEAN
			-- Current represent the key pad mem divide key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memdivide
		end

	is_physical_keypad_mem_divide: BOOLEAN
			-- Current represent the physical keypad mem divide key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memdivide
		end

	is_keypad_mem_multiply: BOOLEAN
			-- Current represent the key pad mem multiply key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memmultiply
		end

	is_physical_keypad_mem_multiply: BOOLEAN
			-- Current represent the physical keypad mem multiply key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memmultiply
		end

	is_keypad_mem_recall: BOOLEAN
			-- Current represent the key pad mem recall key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memrecall
		end

	is_physical_keypad_mem_recall: BOOLEAN
			-- Current represent the physical keypad mem recall key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memrecall
		end

	is_keypad_mem_store: BOOLEAN
			-- Current represent the key pad mem store key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memstore
		end

	is_physical_keypad_mem_store: BOOLEAN
			-- Current represent the physical keypad mem store key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memstore
		end

	is_keypad_mem_subtract: BOOLEAN
			-- Current represent the key pad mem subtract key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_memsubtract
		end

	is_physical_keypad_mem_subtract: BOOLEAN
			-- Current represent the physical keypad mem subtract key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_memsubtract
		end

	is_keypad_minus: BOOLEAN
			-- Current represent the key pad minus key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_minus
		end

	is_physical_keypad_minus: BOOLEAN
			-- Current represent the physical keypad minus key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_minus
		end

	is_keypad_multiply: BOOLEAN
			-- Current represent the key pad multiply key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_multiply
		end

	is_physical_keypad_multiply: BOOLEAN
			-- Current represent the physical keypad multiply key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_multiply
		end

	is_keypad_octal: BOOLEAN
			-- Current represent the key pad octal key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_octal
		end

	is_physical_keypad_octal: BOOLEAN
			-- Current represent the physical keypad octal key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_octal
		end

	is_keypad_percent: BOOLEAN
			-- Current represent the key pad percent key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_percent
		end

	is_physical_keypad_percent: BOOLEAN
			-- Current represent the physical keypad percent key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_percent
		end

	is_keypad_period: BOOLEAN
			-- Current represent the key pad period key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_period
		end

	is_physical_keypad_period: BOOLEAN
			-- Current represent the physical keypad period key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_period
		end

	is_keypad_plus: BOOLEAN
			-- Current represent the key pad plus key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_plus
		end

	is_physical_keypad_plus: BOOLEAN
			-- Current represent the physical keypad plus key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_plus
		end

	is_keypad_plus_minus: BOOLEAN
			-- Current represent the key pad plus minus key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_plusminus
		end

	is_physical_keypad_plus_minus: BOOLEAN
			-- Current represent the physical keypad plus/minus key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_plusminus
		end

	is_keypad_power: BOOLEAN
			-- Current represent the key pad power key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_power
		end

	is_physical_keypad_power: BOOLEAN
			-- Current represent the physical kp_power key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_power
		end

	is_keypad_right_brace: BOOLEAN
			-- Current represent the key pad right brace key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_rightbrace
		end

	is_keypad_right_parenthesis: BOOLEAN
			-- Current represent the key pad right parenthesis key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_rightparen
		end

	is_physical_keypad_right_parenthesis: BOOLEAN
			-- Current represent the physical keypad right parenthesis key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_rightparen
		end

	is_physical_keypad_rightbrace: BOOLEAN
			-- Current represent the physical keypad right brace key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_rightbrace
		end

	is_keypad_space: BOOLEAN
			-- Current represent the key pad space key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_space
		end

	is_physical_keypad_space: BOOLEAN
			-- Current represent the physical keypad space key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_space
		end

	is_keypad_tab: BOOLEAN
			-- Current represent the key pad tab key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_tab
		end

	is_physical_keypad_tab: BOOLEAN
			-- Current represent the physical keypad tab key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_tab
		end

	is_keypad_vertical_bar: BOOLEAN
			-- Current represent the key pad vertical bar key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_verticalbar
		end

	is_physical_keypad_vertical_bar: BOOLEAN
			-- Current represent the physical keypad vertical bar key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_verticalbar
		end

	is_keypad_xor: BOOLEAN
			-- Current represent the key pad xor key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_xor
		end

	is_physical_keypad_xor: BOOLEAN
			-- Current represent the physical keypad xor key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_kp_xor
		end

	is_kp_equals: BOOLEAN
			-- Current represent the kp_equals key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_kp_equals
		end

	is_l: BOOLEAN
			-- Current represent the L key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_l
		end

	is_physical_l: BOOLEAN
			-- Current represent the physical l key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_l
		end

	is_physical_lang_1: BOOLEAN
			-- Current represent the physical lang 1 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang1
		end

	is_physical_lang_2: BOOLEAN
			-- Current represent the physical lang 2 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang2
		end

	is_physical_lang_3: BOOLEAN
			-- Current represent the physical lang 3 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang3
		end

	is_physical_lang_4: BOOLEAN
			-- Current represent the physical lang 4 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang4
		end

	is_physical_lang_5: BOOLEAN
			-- Current represent the physical lang 5 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang5
		end

	is_physical_lang_6: BOOLEAN
			-- Current represent the physical lang 6 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang6
		end

	is_physical_lang_7: BOOLEAN
			-- Current represent the physical lang 7 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang7
		end

	is_physical_lang_8: BOOLEAN
			-- Current represent the physical lang 8 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang8
		end

	is_physical_lang_9: BOOLEAN
			-- Current represent the physical lang 9 key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lang9
		end

	is_left: BOOLEAN
			-- Current represent the left key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_left
		end

	is_physical_left: BOOLEAN
			-- Current represent the physical left key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_left
		end

	is_left_alt: BOOLEAN
			-- Current represent the left alt key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_lalt
		end

	is_physical_left_alt: BOOLEAN
			-- Current represent the physical left alt key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lalt
		end

	is_left_bracket: BOOLEAN
			-- Current represent the leftbracket key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_leftbracket
		end

	is_physical_left_bracket: BOOLEAN
			-- Current represent the physical left bracket key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_leftbracket
		end

	is_left_ctrl: BOOLEAN
			-- Current represent the left ctrl key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_lctrl
		end

	is_physical_left_ctrl: BOOLEAN
			-- Current represent the physical left ctrl key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lctrl
		end

	is_left_gui: BOOLEAN
			-- Current represent the left gui key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_lgui
		end

	is_physical_left_gui: BOOLEAN
			-- Current represent the physical left gui key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lgui
		end

	is_left_parenthesis: BOOLEAN
			-- Current represent the left parenthesis key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_leftparen
		end

	is_left_shift: BOOLEAN
			-- Current represent the left shift key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_lshift
		end

	is_physical_left_shift: BOOLEAN
			-- Current represent the physical left shift key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_lshift
		end

	is_less: BOOLEAN
			-- Current represent the less key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_less
		end

	is_m: BOOLEAN
			-- Current represent the M key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_m
		end

	is_physical_m: BOOLEAN
			-- Current represent the physical m key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_m
		end

	is_mail: BOOLEAN
			-- Current represent the mail key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_mail
		end

	is_physical_mail: BOOLEAN
			-- Current represent the physical mail key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_mail
		end

	is_media_select: BOOLEAN
			-- Current represent the media select key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_mediaselect
		end

	is_physical_media_select: BOOLEAN
			-- Current represent the physical media select key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_mediaselect
		end

	is_menu: BOOLEAN
			-- Current represent the menu key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_menu
		end

	is_physical_menu: BOOLEAN
			-- Current represent the physical menu key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_menu
		end

	is_minus: BOOLEAN
			-- Current represent the minus key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_minus
		end

	is_physical_minus: BOOLEAN
			-- Current represent the physical minus key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_minus
		end

	is_mode: BOOLEAN
			-- Current represent the mode key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_mode
		end

	is_physical_mode: BOOLEAN
			-- Current represent the physical mode key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_mode
		end

	is_mute: BOOLEAN
			-- Current represent the mute key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_mute
		end

	is_physical_mute: BOOLEAN
			-- Current represent the physical mute key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_mute
		end

	is_n: BOOLEAN
			-- Current represent the N key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_n
		end

	is_physical_n: BOOLEAN
			-- Current represent the physical n key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_n
		end

	is_physical_num_lock_clear: BOOLEAN
			-- Current represent the physical num lock clear key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_numlockclear
		end

	is_numlock_clear: BOOLEAN
			-- Current represent the numlock clear key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_numlockclear
		end

	is_o: BOOLEAN
			-- Current represent the O key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_o
		end

	is_physical_o: BOOLEAN
			-- Current represent the physical o key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_o
		end

	is_oper: BOOLEAN
			-- Current represent the oper key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_oper
		end

	is_physical_oper: BOOLEAN
			-- Current represent the physical oper key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_oper
		end

	is_out: BOOLEAN
			-- Current represent the out key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_out
		end

	is_physical_out: BOOLEAN
			-- Current represent the physical out key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_out
		end

	is_p: BOOLEAN
			-- Current represent the P key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_p
		end

	is_physical_p: BOOLEAN
			-- Current represent the physical p key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_p
		end

	is_page_down: BOOLEAN
			-- Current represent the page down key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_pagedown
		end

	is_physical_page_down: BOOLEAN
			-- Current represent the physical page down key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_pagedown
		end

	is_page_up: BOOLEAN
			-- Current represent the page up key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_pageup
		end

	is_physical_page_up: BOOLEAN
			-- Current represent the physical page up key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_pageup
		end

	is_paste: BOOLEAN
			-- Current represent the paste key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_paste
		end

	is_physical_paste: BOOLEAN
			-- Current represent the physical paste key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_paste
		end

	is_pause: BOOLEAN
			-- Current represent the pause key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_pause
		end

	is_physical_pause: BOOLEAN
			-- Current represent the physical pause key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_pause
		end

	is_percent: BOOLEAN
			-- Current represent the percent key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_percent
		end

	is_period: BOOLEAN
			-- Current represent the period key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_period
		end

	is_physical_period: BOOLEAN
			-- Current represent the physical period key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_period
		end

	is_plus: BOOLEAN
			-- Current represent the plus key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_plus
		end

	is_power: BOOLEAN
			-- Current represent the power key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_power
		end

	is_physical_power: BOOLEAN
			-- Current represent the physical power key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_power
		end

	is_print_screen: BOOLEAN
			-- Current represent the print screen key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_printscreen
		end

	is_physical_print_screen: BOOLEAN
			-- Current represent the physical print screen key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_printscreen
		end

	is_prior: BOOLEAN
			-- Current represent the prior key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_prior
		end

	is_physical_prior: BOOLEAN
			-- Current represent the physical prior key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_prior
		end

	is_q: BOOLEAN
			-- Current represent the Q key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_q
		end

	is_physical_q: BOOLEAN
			-- Current represent the physical q key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_q
		end

	is_question_mark: BOOLEAN
			-- Current represent the question mark key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_question
		end

	is_quote: BOOLEAN
			-- Current represent the quote key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_quote
		end

	is_r: BOOLEAN
			-- Current represent the R key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_r
		end

	is_physical_r: BOOLEAN
			-- Current represent the physical r key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_r
		end

	is_repeat: BOOLEAN
			-- The key is a repetition
		do
			Result := repeat /= 0
		end

	is_return: BOOLEAN
			-- Current represent the return key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_return
		end

	is_physical_return: BOOLEAN
			-- Current represent the physical return key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_return
		end

	is_return2: BOOLEAN
			-- Current represent the return2 key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_return2
		end

	is_physical_return_2: BOOLEAN
			-- Current represent the physical second return key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_return2
		end

	is_right: BOOLEAN
			-- Current represent the right key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_right
		end

	is_physical_right: BOOLEAN
			-- Current represent the physical right key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_right
		end

	is_right_alt: BOOLEAN
			-- Current represent the right alt key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_ralt
		end

	is_physical_right_alt: BOOLEAN
			-- Current represent the physical right alt key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_ralt
		end

	is_right_bracket: BOOLEAN
			-- Current represent the right bracket key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_rightbracket
		end

	is_physical_right_bracket: BOOLEAN
			-- Current represent the physical right bracket key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_rightbracket
		end

	is_right_ctrl: BOOLEAN
			-- Current represent the right ctrl key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_rctrl
		end

	is_physical_right_ctrl: BOOLEAN
			-- Current represent the physical right ctrl key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_rctrl
		end

	is_right_gui: BOOLEAN
			-- Current represent the right gui key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_rgui
		end

	is_physical_right_gui: BOOLEAN
			-- Current represent the physical right gui key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_rgui
		end

	is_right_parenthesis: BOOLEAN
			-- Current represent the right parenthesis key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_rightparen
		end

	is_right_shift: BOOLEAN
			-- Current represent the right shift key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_rshift
		end

	is_physical_right_shift: BOOLEAN
			-- Current represent the physical right shift key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_rshift
		end

	is_s: BOOLEAN
			-- Current represent the S key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_s
		end

	is_physical_s: BOOLEAN
			-- Current represent the physical s key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_s
		end

	is_scroll_lock: BOOLEAN
			-- Current represent the scroll lock key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_scrolllock
		end

	is_physical_scroll_lock: BOOLEAN
			-- Current represent the physical scroll lock key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_scrolllock
		end

	is_select: BOOLEAN
			-- Current represent the select key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_select
		end

	is_physical_select: BOOLEAN
			-- Current represent the physical select key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_select
		end

	is_semicolon: BOOLEAN
			-- Current represent the semicolon key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_semicolon
		end

	is_physical_semicolon: BOOLEAN
			-- Current represent the physical semicolon key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_semicolon
		end

	is_separator: BOOLEAN
			-- Current represent the separator key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_separator
		end

	is_physical_separator: BOOLEAN
			-- Current represent the physical separator key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_separator
		end

	is_slash: BOOLEAN
			-- Current represent the slash key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_slash
		end

	is_physical_slash: BOOLEAN
			-- Current represent the physical slash key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_slash
		end

	is_sleep: BOOLEAN
			-- Current represent the sleep key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_sleep
		end

	is_physical_sleep: BOOLEAN
			-- Current represent the physical sleep key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_sleep
		end

	is_space: BOOLEAN
			-- Current represent the space key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_space
		end

	is_physical_space: BOOLEAN
			-- Current represent the physical space key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_space
		end

	is_stop: BOOLEAN
			-- Current represent the stop key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_stop
		end

	is_physical_stop: BOOLEAN
			-- Current represent the physical stop key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_stop
		end

	is_sysreq: BOOLEAN
			-- Current represent the sysreq key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_sysreq
		end

	is_physical_sysreq: BOOLEAN
			-- Current represent the physical sysreq key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_sysreq
		end

	is_t: BOOLEAN
			-- Current represent the T key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_t
		end

	is_physical_t: BOOLEAN
			-- Current represent the physical t key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_t
		end

	is_tab: BOOLEAN
			-- Current represent the tab key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_tab
		end

	is_physical_tab: BOOLEAN
			-- Current represent the physical tab key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_tab
		end

	is_thousands_separator: BOOLEAN
			-- Current represent the thousands separator key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_thousandsseparator
		end

	is_physical_thousands_separator: BOOLEAN
			-- Current represent the physical thousands separator key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_thousandsseparator
		end

	is_u: BOOLEAN
			-- Current represent the U key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_u
		end

	is_physical_u: BOOLEAN
			-- Current represent the physical u key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_u
		end

	is_underscore: BOOLEAN
			-- Current represent the underscore key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_underscore
		end

	is_undo: BOOLEAN
			-- Current represent the undo key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_undo
		end

	is_physical_undo: BOOLEAN
			-- Current represent the physical undo key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_undo
		end

	is_unknown: BOOLEAN
			-- Current is not a valid key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_unknown
		end

	is_physical_unknown: BOOLEAN
			-- The Current physical key is not valid
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_unknown
		end

	is_up: BOOLEAN
			-- Current represent the up key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_up
		end

	is_physical_up: BOOLEAN
			-- Current represent the physical up key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_up
		end

	is_v: BOOLEAN
			-- Current represent the V key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_v
		end

	is_physical_v: BOOLEAN
			-- Current represent the physical v key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_v
		end

	is_volume_down: BOOLEAN
			-- Current represent the volume down key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_volumedown
		end

	is_physical_volume_down: BOOLEAN
			-- Current represent the physical volume down key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_volumedown
		end

	is_volume_up: BOOLEAN
			-- Current represent the volume up key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_volumeup
		end

	is_physical_volume_up: BOOLEAN
			-- Current represent the physical volume up key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_volumeup
		end

	is_w: BOOLEAN
			-- Current represent the W key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_w
		end

	is_physical_w: BOOLEAN
			-- Current represent the physical w key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_w
		end

	is_www: BOOLEAN
			-- Current represent the www key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_www
		end

	is_physical_www: BOOLEAN
			-- Current represent the physical www key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_www
		end

	is_x: BOOLEAN
			-- Current represent the X key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_x
		end

	is_physical_x: BOOLEAN
			-- Current represent the physical x key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_x
		end

	is_y: BOOLEAN
			-- Current represent the Y key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_y
		end

	is_physical_y: BOOLEAN
			-- Current represent the physical y key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_y
		end

	is_z: BOOLEAN
			-- Current represent the Z key
			-- (from GAME_VIRTUAL_KEY)
		do
			Result := virtual_code = {GAME_SDL_VIRTUAL_KEY}.sdlk_z
		end

	is_physical_z: BOOLEAN
			-- Current represent the physical z key
			-- (from GAME_PHYSICAL_KEY)
		do
			Result := physical_code = {GAME_SDL_SCANCODE}.sdl_scancode_z
		end

	last_error: READABLE_STRING_GENERAL
			-- The last error generate by the library
			-- (from GAME_SDL_ANY)
		local
			l_string: C_STRING
		do
			if is_manual_error then
				Result := Precursor {GAME_ERROR_MANAGER}
			else
				create l_string.make_by_pointer ({GAME_SDL_EXTERNAL}.sdl_geterror)
				Result := l_string.string
			end
		end

	out: STRING_8
			-- New string containing terse printable representation
			-- of current object
			-- Note that this value is in UTF-8.
			-- Use unicode_out to get the UTF-8 representatin
			-- (from GAME_KEY)
		require -- from  ANY
			True
		local
			l_result_ptr: POINTER
		do
			l_result_ptr := {GAME_SDL_VIRTUAL_KEY}.sdl_getkeyname (virtual_code)
			if not l_result_ptr.is_default_pointer then
				Result := (create {C_STRING}.make_by_pointer (l_result_ptr)).string
			else
				Result := ""
			end
		ensure -- from ANY
			out_not_void: Result /= Void
		end

	physical_code: INTEGER_32
			-- Hardware code of the key
			-- (not compatible between systems)
			-- (from GAME_KEY)

	unicode_out: READABLE_STRING_GENERAL
			-- The unicode text representation of Current
			-- (from GAME_KEY)
		do
			Result := {UTF_CONVERTER}.utf_8_string_8_to_escaped_string_32 (out)
		end

	virtual_code: INTEGER_32
			-- Code of the key using the virtual layout keyboard
			-- (should be compatible between systems)
			-- (from GAME_KEY)
	
feature -- Comparison

	frozen deep_equal (a: detachable ANY; b: like arg #1): BOOLEAN
			-- Are a and b either both void
			-- or attached to isomorphic object structures?
			-- (from ANY)
		do
			if a = Void then
				Result := b = Void
			else
				Result := b /= Void and then a.is_deep_equal (b)
			end
		ensure -- from ANY
			instance_free: class
			shallow_implies_deep: standard_equal (a, b) implies Result
			both_or_none_void: (a = Void) implies (Result = (b = Void))
			same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b))
			symmetric: Result implies deep_equal (b, a)
		end

	frozen equal (a: detachable ANY; b: like arg #1): BOOLEAN
			-- Are a and b either both void or attached
			-- to objects considered equal?
			-- (from ANY)
		do
			if a = Void then
				Result := b = Void
			else
				Result := b /= Void and then a.is_equal (b)
			end
		ensure -- from ANY
			instance_free: class
			definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b))
		end

	frozen is_deep_equal alias "≡≡≡" (other: GAME_KEY_EVENT): BOOLEAN
			-- Are Current and other attached to isomorphic object structures?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		external
			"built_in"
		ensure -- from ANY
			shallow_implies_deep: standard_is_equal (other) implies Result
			same_type: Result implies same_type (other)
			symmetric: Result implies other.is_deep_equal (Current)
		end

	is_equal (other: GAME_KEY_EVENT): BOOLEAN
			-- Is other attached to an object considered
			-- equal to current object?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		external
			"built_in"
		ensure -- from ANY
			symmetric: Result implies other ~ Current
			consistent: standard_is_equal (other) implies Result
		end

	frozen standard_equal (a: detachable ANY; b: like arg #1): BOOLEAN
			-- Are a and b either both void or attached to
			-- field-by-field identical objects of the same type?
			-- Always uses default object comparison criterion.
			-- (from ANY)
		do
			if a = Void then
				Result := b = Void
			else
				Result := b /= Void and then a.standard_is_equal (b)
			end
		ensure -- from ANY
			instance_free: class
			definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b))
		end

	frozen standard_is_equal alias "" (other: GAME_KEY_EVENT): BOOLEAN
			-- Is other attached to an object of the same type
			-- as current object, and field-by-field identical to it?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		external
			"built_in"
		ensure -- from ANY
			same_type: Result implies same_type (other)
			symmetric: Result implies other.standard_is_equal (Current)
		end
	
feature -- Status report

	conforms_to (other: ANY): BOOLEAN
			-- Does type of current object conform to type
			-- of other (as per Eiffel: The Language, chapter 13)?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		external
			"built_in"
		end

	same_type (other: ANY): BOOLEAN
			-- Is type of current object identical to type of other?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		external
			"built_in"
		ensure -- from ANY
			definition: Result = (conforms_to (other) and other.conforms_to (Current))
		end
	
feature -- Duplication

	frozen clone (other: detachable ANY): like other
		obsolete "Use `twin' instead. [2017-05-31]"
			-- Void if other is void; otherwise new object
			-- equal to other
			--
			-- For non-void other, clone calls copy;
			-- to change copying/cloning semantics, redefine copy.
			-- (from ANY)
		do
			if other /= Void then
				Result := other.twin
			end
		ensure -- from ANY
			instance_free: class
			equal: Result ~ other
		end

	copy (other: GAME_KEY_EVENT)
			-- Update current object using fields of object attached
			-- to other, so as to yield equal objects.
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
			type_identity: same_type (other)
		external
			"built_in"
		ensure -- from ANY
			is_equal: Current ~ other
		end

	frozen deep_clone (other: detachable ANY): like other
		obsolete "Use `deep_twin' instead. [2017-05-31]"
			-- Void if other is void: otherwise, new object structure
			-- recursively duplicated from the one attached to other
			-- (from ANY)
		do
			if other /= Void then
				Result := other.deep_twin
			end
		ensure -- from ANY
			instance_free: class
			deep_equal: deep_equal (other, Result)
		end

	frozen deep_copy (other: GAME_KEY_EVENT)
			-- Effect equivalent to that of:
			--		copy (other . deep_twin)
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		do
			copy (other.deep_twin)
		ensure -- from ANY
			deep_equal: deep_equal (Current, other)
		end

	frozen deep_twin: GAME_KEY_EVENT
			-- New object structure recursively duplicated from Current.
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			deep_twin_not_void: Result /= Void
			deep_equal: deep_equal (Current, Result)
		end

	frozen standard_clone (other: detachable ANY): like other
		obsolete "Use `standard_twin' instead. [2017-05-31]"
			-- Void if other is void; otherwise new object
			-- field-by-field identical to other.
			-- Always uses default copying semantics.
			-- (from ANY)
		do
			if other /= Void then
				Result := other.standard_twin
			end
		ensure -- from ANY
			instance_free: class
			equal: standard_equal (Result, other)
		end

	frozen standard_copy (other: GAME_KEY_EVENT)
			-- Copy every field of other onto corresponding field
			-- of current object.
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
			type_identity: same_type (other)
		external
			"built_in"
		ensure -- from ANY
			is_standard_equal: standard_is_equal (other)
		end

	frozen standard_twin: GAME_KEY_EVENT
			-- New object field-by-field identical to other.
			-- Always uses default copying semantics.
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			standard_twin_not_void: Result /= Void
			equal: standard_equal (Result, Current)
		end

	frozen twin: GAME_KEY_EVENT
			-- New object equal to Current
			-- twin calls copy; to change copying/twinning semantics, redefine copy.
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			twin_not_void: Result /= Void
			is_equal: Result ~ Current
		end
	
feature -- Basic operations

	frozen as_attached: attached GAME_KEY_EVENT
		obsolete "Remove calls to this feature. [2017-05-31]"
			-- Attached version of Current.
			-- (Can be used during transitional period to convert
			-- non-void-safe classes to void-safe ones.)
			-- (from ANY)
		do
			Result := Current
		end

	frozen default: detachable GAME_KEY_EVENT
			-- Default value of object's type
			-- (from ANY)
		do
		end

	frozen default_pointer: POINTER
			-- Default value of type POINTER
			-- (Avoid the need to write p.default for
			-- some p of type POINTER.)
			-- (from ANY)
		do
		ensure -- from ANY
			instance_free: class
		end

	default_rescue
			-- Process exception for routines with no Rescue clause.
			-- (Default: do nothing.)
			-- (from ANY)
		do
		end

	frozen do_nothing
			-- Execute a null action.
			-- (from ANY)
		do
		ensure -- from ANY
			instance_free: class
		end
	
feature -- Implementation

	modifier: NATURAL_16
			-- The internal identificator of the modifiers pressed

	repeat: NATURAL_8
			-- Not 0 when the key event is an automatic repeted event
	
feature {NONE} -- Implementation

	clear_error
			-- Remove error pending in Current
			-- (from GAME_SDL_ANY)
		require -- from  GAME_ERROR_MANAGER
			True
		do
			{GAME_SDL_EXTERNAL}.sdl_clearerror
			Precursor {GAME_ERROR_MANAGER}
			is_manual_error := False
		ensure -- from GAME_ERROR_MANAGER
			no_error: not has_error
		ensure then -- from GAME_SDL_ANY
			no_error: not is_manual_error
		end

	disable_print_on_error
			-- Desactive the print_on_error functionnality.
			-- (from GAME_ERROR_MANAGER)
		do
			Print_on_error_internal.put (False)
		end

	enable_print_on_error
			-- Active the print_on_error functionnality.
			-- (from GAME_ERROR_MANAGER)
		do
			Print_on_error_internal.put (True)
		end

	is_manual_error: BOOLEAN
			-- Is the current pending error is a manual error (using manual_error as message)
			-- (from GAME_SDL_ANY)

	manage_error_boolean (a_boolean: BOOLEAN; a_message: READABLE_STRING_GENERAL)
			-- Create an error if a_boolean is false.
			-- If there is an error, append a_message to the error message
			-- on the SDL2 library
			-- (from GAME_SDL_ANY)
		do
			if not a_boolean then
				if Print_on_error_internal.item then
					Io.Error.put_string (a_message.to_string_8 + "%N");
					Io.Error.put_string (last_error.to_string_8 + "%N")
				end
				has_error := True
			end
		ensure -- from GAME_SDL_ANY
				not a_boolean implies has_error
		end

	manage_error_code (a_error_code: INTEGER_32; a_message: READABLE_STRING_GENERAL)
			-- If needed create an error depending of the error code a_code.
			-- If there is an error, append a_message to the error message
			-- on the SDL2 library
			-- (from GAME_SDL_ANY)
		do
			if a_error_code < 0 then
				if Print_on_error_internal.item then
					Io.Error.put_string (a_message.to_string_8 + "%N");
					Io.Error.put_string (last_error.to_string_8 + "%N")
				end
				has_error := True
			end
		end

	manage_error_pointer (a_pointer: POINTER; a_message: READABLE_STRING_GENERAL)
			-- Create an error if a_pointer is not valid.
			-- If there is an error, append a_message to the error message
			-- on the SDL2 library
			-- (from GAME_SDL_ANY)
		do
			if a_pointer.is_default_pointer then
				if Print_on_error_internal.item then
					Io.Error.put_string (a_message.to_string_8 + "%N");
					Io.Error.put_string (last_error.to_string_8 + "%N")
				end
				has_error := True
			end
		ensure -- from GAME_SDL_ANY
				a_pointer.is_default_pointer implies has_error
		end

	manual_error: detachable READABLE_STRING_GENERAL
			-- The specific message for the last error
			-- (from GAME_ERROR_MANAGER)

	print_on_error: BOOLEAN
			-- When an error occured, the library will print
			-- informations about the error on the error console
			-- output (default is True).
			-- (from GAME_ERROR_MANAGER)
		do
			Result := Print_on_error_internal.item
		end

	Print_on_error_internal: CELL [BOOLEAN]
			-- True when an error occured,
			-- The library will print it right away.
			-- (from GAME_ERROR_MANAGER)
		once ("PROCESS")
			create Result.put (True)
		end

	put_manual_error (a_general_message, a_specific_error: READABLE_STRING_GENERAL)
			-- Create an error using a_general_error for the debug information
			-- and a_specific_error for the lasting information
			-- (from GAME_SDL_ANY)
		do
			is_manual_error := True
			Precursor {GAME_ERROR_MANAGER} (a_general_message, a_specific_error)
		ensure -- from GAME_ERROR_MANAGER
				has_error
		end

	set_print_on_error (a_value: BOOLEAN)
			-- Assign to print_on_error the value of a_value
			-- (from GAME_ERROR_MANAGER)
		do
			if a_value then
				enable_print_on_error
			else
				disable_print_on_error
			end
		ensure -- from GAME_ERROR_MANAGER
			is_assign: print_on_error ~ a_value
		end
	
feature -- Output

	Io: STD_FILES
			-- Handle to standard file setup
			-- (from ANY)
		once
			create Result;
			Result.set_output_default
		ensure -- from ANY
			instance_free: class
			io_not_void: Result /= Void
		end

	print (o: detachable ANY)
			-- Write terse external representation of o
			-- on standard output.
			-- (from ANY)
		local
			s: READABLE_STRING_8
		do
			if attached o then
				s := o.out
				if attached {READABLE_STRING_32} s as s32 then
					Io.put_string_32 (s32)
				elseif attached {READABLE_STRING_8} s as s8 then
					Io.put_string (s8)
				else
					Io.put_string_32 (s.as_string_32)
				end
			end
		ensure -- from ANY
			instance_free: class
		end

	frozen tagged_out: STRING_8
			-- New string containing terse printable representation
			-- of current object
			-- (from ANY)
		external
			"built_in"
		ensure -- from ANY
			tagged_out_not_void: Result /= Void
		end
	
feature -- Platform

	Operating_environment: OPERATING_ENVIRONMENT
			-- Objects available from the operating system
			-- (from ANY)
		once
			create Result
		ensure -- from ANY
			instance_free: class
			operating_environment_not_void: Result /= Void
		end
	
feature {NONE} -- Retrieval

	frozen internal_correct_mismatch
			-- Called from runtime to perform a proper dynamic dispatch on correct_mismatch
			-- from MISMATCH_CORRECTOR.
			-- (from ANY)
		local
			l_msg: STRING_32
			l_exc: EXCEPTIONS
		do
			if attached {MISMATCH_CORRECTOR} Current as l_corrector then
				l_corrector.correct_mismatch
			else
				create l_msg.make_from_string ("Mismatch: ".as_string_32)
				create l_exc;
				l_msg.append (generating_type.name_32);
				l_exc.raise_retrieval_exception (l_msg)
			end
		end
	
invariant
		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

end -- class GAME_KEY_EVENT

Generated by ISE EiffelStudio