-
Notifications
You must be signed in to change notification settings - Fork 0
Globally Exposed Helper Functions
h3rb edited this page Mar 23, 2021
·
11 revisions
Function | Description |
---|---|
Init_InputCandy_Advanced() | Call this to initialize the InputCandy library. It needs to be called exactly once, usually in the Startup Room's creation code, or in a start room's controller object's Creation Event. Usually at the same time you will also create your master list of actions. This master list of actions should be ready when frame 5 is hit and the settings and setup is loaded. |
IC_Step() | Call this function in your game's controller objects. It should be called exactly once per frame for any room where you want to read from the InputCandy input states (generally once per frame in every room the player interacts with, including the main menu). |
IC_NewAction() | Returns an empty ICAction object as described in Input:Advanced Class Reference, you can modify the values on this object and then use IC_ActionPush() to add it to your action list. |
IC_ActionPush( action_object ) | After you customize the struct returned from IC_NewAction(), you can pass it to this function to add it to the master action list __INPUTCANDY.actions[] |
IC_Action_ext( name, group, gamepad, gamepad_is_combo, keyboard, keyboard_is_combo, mouse, mouse_is_combo, keyboard_mouse_are_combo, is_directional, requires_angle, held_for_seconds, fire_limit_count, fire_on_release, enabled, forbid_rebinding ) | This function provides a functional way to create a new action providing you with a way to access __IC.Action_ext(). Read the section below that highlights exactly how you can use this function by breaking down each parameter and its possible values. |
IC_GetAction( action_name, [action_group] ) | Retrieves the action index from the master list by name or by name and group. |
IC_Match( player_number, action_index ) | Checks if a player is currently invoking an action by index. A binding may override the default input configuration. This is how you "check for" an action in your game. |
IC_Action( verb_string, default_gamepad, default_keyboard [mouse, group, is_directional, requires_angle, enabled] ) | The simplest way to define a new action, but it doesn't expose a ton of options. The final five options are all optional parameters. |
IC_ClearActions() | This function clears all actions from the master __INPUTCANDY.actions[] list. It isn't that useful since you generally want one set master list of actions that persists for the entire game, defining them in the very beginning before settings are even loaded. |
ICDeviceTypeString(i) | Pass in ICDeviceType_* and get back a string version. |
IC_Action(verb_string, default_gamepad, default_keyboard, [mouse, group, is_directional, requires_angle, enabled] )
This function is a simpler way to define an action. It lets you define the bare minimum for most simple actions. The action is then appended to the master action list.
A breakdown of the options in the function IC_Action:
Parameter | Purpose and Value Options |
---|---|
verb_string | The action's name, for later lookup when using IC_Match(). A string like "Jump" |
default_gamepad | The action's IC_code or an array of codes providing options for the gamepad. For example if you want two buttons assigned to this action, you would provide [ IC_A, IC_B ] otherwise only one like IC_Y
|
default_keyboard | The key or keys IC_code or array of codes providing options for the keyboard. For example if you want two keys assigned to this action, you would provide [ IC_lshift, IC_rshift ] otherwise just one like IC_pgdn
|
mouse | A mouse-related IC_code or codes. Related to the mouse wheel or buttons. |
group | A string defining the name of the group that this action is a part of. It should match exactly with other actions in the same group. |
is_directional | Set to true to indicate this is a directional and should accept the 4-way combination IC-codes like IC_WASD and IC_dpad |
requires_angle | A true false value, where true means "requires an angle" -- setting this value is just to "remind" you which actions require an angle read from them, as all directionals will have angles calculated from their movement combination. |
enabled | You generally want this to be true, otherwise the action will be ignored until you change the value in the master list. |
This function maps its parameters to the ICAction object type. It lets you define all of the features of an action in a function call, and appends that action to the master action list.
A breakdown of the options in IC_Action_ext( n, g, gp, gpcombo, kb, kcombo, m, mcombo, kmcombo, UDLR, angled, held_s, flimit, on_rel, enabled, forbid ):
Parameter | Purpose and Value Options |
---|---|
n | Action Name, a string |
g | Action Group, a string that groups actions together |
gp | Gamepad settings. Like all three device signal types (keyboard, mouse, gamepad), you can pass either a single IC_code or an array [ a,b,c ] of codes. |
gpcombo | If this parameter is true, all of the codes provided for the "gp" parameter must be present to create a match. If false, only one must match. |
kb | Keyboard IC_code or array of codes for default keyboard input for this action. |
kbcombo | If this parameter is true, all of the codes provided for the "kb" parameter must be present to create a match. If false, only one must match. |
m | Mouse IC_code or an array of codes for the mouse buttons and mouse wheel. |
mcombo | If this parameter is true, all of the codes provided for the "m" parameter must be present to create a match. If false, only one must match. |
kmcombo | If this parameter is true, all of the codes provided for both the "kb" parameter and the "m" parameter must be present to create a match. If false, only one must match. |
UDLR | A true false value, where true means "is_directional" -- that this is a 4-way directional control, like WASD or DPad or a Hat or Axis. |
angled | A true false value, where true means "requires an angle" -- setting this value is just to "remind" you which actions require an angle read from them, as all directionals will have angles calculated from their movement combination. |
held_s | Number of seconds (a decimal value) before the action is triggered. Set to 0 if you don't care to wait. |
flimit | The number of times this will fire once it has been triggered. An example is, if you want something to "power up then fire 3 times" before the player must release the button to reset the action counter. |
on_rel | When this parameter is set to true, the action will only match on the frame when the button is released. |
enabled | Generally you want this to be true. If you set it to be false, the action will be ignored until the value is changed to true. |
forbid | When you set this to true it won't let the player customize this option in the ICUI. |
Where to find IC codes? See them in the signals array __INPUTCANDY.signals:
__INPUTCANDY.signals = [
{ index:0, code: IC_none, name: "None", deviceType: ICDeviceType_any },
{ index:1, code: IC_anykey, name: "Any", deviceType: ICDeviceType_any },
{ index:2, code: IC_left=0, name: "Left", deviceType: ICDeviceType_any },
{ index:3, code: IC_right, name: "Right", deviceType: ICDeviceType_any },
{ index:4, code: IC_up, name: "Up", deviceType: ICDeviceType_any },
{ index:5, code: IC_down, name: "Down", deviceType: ICDeviceType_any },
{ index:6, code: IC_A, name: "A", deviceType: ICDeviceType_gamepad, deviceCode: gp_face1 }, //__FIRST_GAMEPAD_SIGNAL
{ index:7, code: IC_B, name: "B", deviceType: ICDeviceType_gamepad, deviceCode: gp_face2 },
{ index:8, code: IC_AandB, name: "AandB", deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:9, code: IC_X, name: "X", deviceType: ICDeviceType_gamepad, deviceCode: gp_face3 },
{ index:10, code: IC_Y, name: "Y", deviceType: ICDeviceType_gamepad, deviceCode: gp_face4 },
{ index:11, code: IC_XandY, name: "XandY", deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:12, code: IC_start, name: "Start", deviceType: ICDeviceType_gamepad, deviceCode: gp_start },
{ index:13, code: IC_back_select, name: "Back/Select", deviceType: ICDeviceType_gamepad, deviceCode: gp_select },
{ index:14, code: IC_Ltrigger, name: "Left Trigger", deviceType: ICDeviceType_gamepad, deviceCode: gp_shoulderlb },
{ index:15, code: IC_Rtrigger, name: "Right Trigger", deviceType: ICDeviceType_gamepad, deviceCode: gp_shoulderrb },
{ index:16, code: IC_Lshoulder, name: "Left Shoulder", deviceType: ICDeviceType_gamepad, deviceCode: gp_shoulderl },
{ index:17, code: IC_Rshoulder, name: "Right Shoulder", deviceType: ICDeviceType_gamepad, deviceCode: gp_shoulderr },
{ index:18, code: IC_Lstick, name: "Left Stick", deviceType: ICDeviceType_gamepad, deviceCode: gp_stickl },
{ index:19, code: IC_Rstick, name: "Right Stick", deviceType: ICDeviceType_gamepad, deviceCode: gp_stickr },
{ index:20, code: IC_padu, name: "Pad Up", deviceType: ICDeviceType_gamepad, deviceCode: gp_padu },
{ index:21, code: IC_padd, name: "Pad Down", deviceType: ICDeviceType_gamepad, deviceCode: gp_padd },
{ index:22, code: IC_padl, name: "Pad Left", deviceType: ICDeviceType_gamepad, deviceCode: gp_padl },
{ index:23, code: IC_padr, name: "Pad Right", deviceType: ICDeviceType_gamepad, deviceCode: gp_padr },
{ index:24, code: IC_mouse_left, name: "LMB", deviceType: ICDeviceType_mouse }, //__FIRST_MOUSE_SIGNAL
{ index:25, code: IC_mouse_right, name: "RMB", deviceType: ICDeviceType_mouse },
{ index:26, code: IC_mouse_middle, name: "MMB", deviceType: ICDeviceType_mouse },
{ index:27, code: IC_mouse_scrollup, name: "Scroll Up", deviceType: ICDeviceType_mouse },
{ index:28, code: IC_mouse_scrolldown, name: "Scroll Down", deviceType: ICDeviceType_mouse },
{ index:29, code: IC_key_arrow_L, name: "Left Arrow", azerty_name: "Left Arrow", qwertz_name:"Left Arrow", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_left },
{ index:30, code: IC_key_arrow_R, name: "Right Arrow", azerty_name: "Right Arrow", qwertz_name:"Right Arrow", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_right },
{ index:31, code: IC_key_arrow_U, name: "Up Arrow", azerty_name: "Up Arrow", qwertz_name:"Up Arrow", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_up },
{ index:32, code: IC_key_arrow_D, name: "Down Arrow", azerty_name: "Down Arrow", qwertz_name:"Down Arrow", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_down },
{ index:33, code: IC_backspace, name: "BKSP", azerty_name: "BKSP", qwertz_name: "BKSP", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_backspace },
{ index:34, code: IC_any_alt, name: "ALT", azerty_name: "ALT", qwertz_name: "ALT", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_alt },
{ index:35, code: IC_any_shift, name: "SHIFT", azerty_name: "SHIFT", qwertz_name: "SHIFT", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_shift },
{ index:36, code: IC_any_control, name: "CTRL", azerty_name: "CTRL", qwertz_name: "CTRL", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_control },
{ index:37, code: IC_lalt, name: "L-Alt", azerty_name: "L-Alt", qwertz_name: "L-Alt", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_lalt },
{ index:38, code: IC_ralt, name: "R-Alt", azerty_name: "R-Alt", qwertz_name: "AltGr", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_ralt },
{ index:39, code: IC_lctrl, name: "L-CTRL", azerty_name: "L-CTRL", qwertz_name: "L-CTRL", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_lcontrol },
{ index:40, code: IC_rctrl, name: "R-CTRL", azerty_name: "R-CTRL", qwertz_name: "R-CTRL", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_rcontrol },
{ index:41, code: IC_lshift, name: "L-SHIFT", azerty_name: "L-SHIFT", qwertz_name: "L-SHIFT", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_lshift },
{ index:42, code: IC_rshift, name: "R-SHIFT", azerty_name: "R-SHIFT", qwertz_name: "R-SHIFT", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck_direct, keycode: vk_rshift },
{ index:43, code: IC_tab, name: "TAB", azerty_name: "TAB", qwertz_name: "TAB", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_tab },
{ index:44, code: IC_pause, name: "Pause", azerty_name: "Pause", qwertz_name: "Pause", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_pause },
{ index:45, code: IC_print, name: "PrnScr", azerty_name: "PrnScr", qwertz_name: "PrnScr", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_printscreen },
{ index:46, code: IC_pgup, name: "PGUP", azerty_name: "PGUP", qwertz_name: "PGUP", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_pageup },
{ index:47, code: IC_pgdn, name: "PGDN", azerty_name: "PGDN", qwertz_name: "PGDN", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_pagedown },
{ index:48, code: IC_home, name: "HOME", azerty_name: "HOME", qwertz_name: "HOME", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_home },
{ index:49, code: IC_end, name: "END", azerty_name: "END", qwertz_name: "END", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_end },
{ index:50, code: IC_insert, name: "INS", azerty_name: "INS", qwertz_name: "INS", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_insert },
{ index:51, code: IC_delete, name: "DEL", azerty_name: "DEL", qwertz_name: "DEL", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_delete },
{ index:52, code: IC_numpad0, name: "Num-0", azerty_name: "Num-0", qwertz_name: "Num-0", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad0 },
{ index:53, code: IC_numpad1, name: "Num-1", azerty_name: "Num-1", qwertz_name: "Num-1", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad1 },
{ index:54, code: IC_numpad2, name: "Num-2", azerty_name: "Num-2", qwertz_name: "Num-2", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad2 },
{ index:55, code: IC_numpad3, name: "Num-3", azerty_name: "Num-3", qwertz_name: "Num-3", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad3 },
{ index:56, code: IC_numpad4, name: "Num-4", azerty_name: "Num-4", qwertz_name: "Num-4", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad4 },
{ index:57, code: IC_numpad5, name: "Num-5", azerty_name: "Num-5", qwertz_name: "Num-5", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad5 },
{ index:58, code: IC_numpad6, name: "Num-6", azerty_name: "Num-6", qwertz_name: "Num-6", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad6 },
{ index:59, code: IC_numpad7, name: "Num-7", azerty_name: "Num-7", qwertz_name: "Num-7", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad7 },
{ index:60, code: IC_numpad8, name: "Num-8", azerty_name: "Num-8", qwertz_name: "Num-8", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad8 },
{ index:61, code: IC_numpad9, name: "Num-9", azerty_name: "Num-9", qwertz_name: "Num-9", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_numpad9 },
{ index:62, code: IC_numpad_multiply,name: "Num *", azerty_name: "Num *", qwertz_name: "Num *", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_multiply },
{ index:63, code: IC_numpad_divide, name: "Num /", azerty_name: "Num /", qwertz_name: "Num /", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_divide },
{ index:64, code: IC_numpad_subtract,name: "Num -", azerty_name: "Num -", qwertz_name: "Num -", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_subtract },
{ index:65, code: IC_numpad_add, name: "Num +", azerty_name: "Num +", qwertz_name: "Num +", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_add },
{ index:66, code: IC_numpad_decimal, name: "Num .", azerty_name: "Num .", qwertz_name: "Num .", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_decimal },
{ index:67, code: IC_f1, name: "F1", azerty_name: "F1", qwertz_name: "F1", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f1 },
{ index:68, code: IC_f2, name: "F2", azerty_name: "F2", qwertz_name: "F2", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f2 },
{ index:69, code: IC_f3, name: "F3", azerty_name: "F3", qwertz_name: "F3", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f3 },
{ index:70, code: IC_f4, name: "F4", azerty_name: "F4", qwertz_name: "F4", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f4 },
{ index:71, code: IC_f5, name: "F5", azerty_name: "F5", qwertz_name: "F5", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f5 },
{ index:72, code: IC_f6, name: "F6", azerty_name: "F6", qwertz_name: "F6", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f6 },
{ index:73, code: IC_f7, name: "F7", azerty_name: "F7", qwertz_name: "F7", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f7 },
{ index:74, code: IC_f8, name: "F8", azerty_name: "F8", qwertz_name: "F8", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f8 },
{ index:75, code: IC_f9, name: "F9", azerty_name: "F9", qwertz_name: "F9", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f9 },
{ index:76, code: IC_f10, name: "F10", azerty_name: "F10", qwertz_name: "F10", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f10 },
{ index:77, code: IC_f11, name: "F11", azerty_name: "F11", qwertz_name: "F11", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f11 },
{ index:78, code: IC_f12, name: "F12", azerty_name: "F12", qwertz_name: "F12", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_f12 },
{ index:79, code: IC_key_A, name: "Key A", azerty_name: "Key Q", qwertz_name: "Key A", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "A" },
{ index:80, code: IC_key_B, name: "Key B", azerty_name: "Key B", qwertz_name: "Key B", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "B" },
{ index:81, code: IC_key_C, name: "Key C", azerty_name: "Key C", qwertz_name: "Key C", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "C" },
{ index:82, code: IC_key_D, name: "Key D", azerty_name: "Key D", qwertz_name: "Key D", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "D" },
{ index:83, code: IC_key_E, name: "Key E", azerty_name: "Key E", qwertz_name: "Key E", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "E" },
{ index:84, code: IC_key_F, name: "Key F", azerty_name: "Key F", qwertz_name: "Key F", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "F" },
{ index:85, code: IC_key_G, name: "Key G", azerty_name: "Key G", qwertz_name: "Key G", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "G" },
{ index:86, code: IC_key_H, name: "Key H", azerty_name: "Key H", qwertz_name: "Key H", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "H" },
{ index:87, code: IC_key_I, name: "Key I", azerty_name: "Key I", qwertz_name: "Key I", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "I" },
{ index:88, code: IC_key_J, name: "Key J", azerty_name: "Key J", qwertz_name: "Key J", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "J" },
{ index:89, code: IC_key_K, name: "Key K", azerty_name: "Key K", qwertz_name: "Key K", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "K" },
{ index:90, code: IC_key_L, name: "Key L", azerty_name: "Key L", qwertz_name: "Key L", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "L" },
{ index:91, code: IC_key_M, name: "Key M", azerty_name: "Key M", qwertz_name: "Key M", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "M" },
{ index:92, code: IC_key_N, name: "Key N", azerty_name: "Key N", qwertz_name: "Key N", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "N" },
{ index:93, code: IC_key_O, name: "Key O", azerty_name: "Key O", qwertz_name: "Key O", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "O" },
{ index:94, code: IC_key_P, name: "Key P", azerty_name: "Key P", qwertz_name: "Key P", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "P" },
{ index:95, code: IC_key_Q, name: "Key Q", azerty_name: "Key A", qwertz_name: "Key Q", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "Q" },
{ index:96, code: IC_key_R, name: "Key R", azerty_name: "Key R", qwertz_name: "Key R", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "R" },
{ index:97, code: IC_key_S, name: "Key S", azerty_name: "Key S", qwertz_name: "Key S", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "S" },
{ index:98, code: IC_key_T, name: "Key T", azerty_name: "Key R", qwertz_name: "Key T", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "T" },
{ index:99, code: IC_key_U, name: "Key U", azerty_name: "Key U", qwertz_name: "Key Y", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "U" },
{ index:100, code: IC_key_V, name: "Key V", azerty_name: "Key V", qwertz_name: "Key V", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "V" },
{ index:101, code: IC_key_W, name: "Key W", azerty_name: "Key Z", qwertz_name: "Key W", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "W" },
{ index:102, code: IC_key_X, name: "Key X", azerty_name: "Key X", qwertz_name: "Key X", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "X" },
{ index:103, code: IC_key_Y, name: "Key Y", azerty_name: "Key Y", qwertz_name: "Key Z", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "Y" },
{ index:104, code: IC_key_Z, name: "Key Z", azerty_name: "Key W", qwertz_name: "Key Y", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "Z" },
{ index:105, code: IC_key_0, name: "Key 0", azerty_name: "Key 0", qwertz_name: "Key 0", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "0" },
{ index:106, code: IC_key_1, name: "Key 1", azerty_name: "Key 1", qwertz_name: "Key 1", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "1" },
{ index:107, code: IC_key_2, name: "Key 2", azerty_name: "Key 2", qwertz_name: "Key 2", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "2" },
{ index:108, code: IC_key_3, name: "Key 3", azerty_name: "Key 3", qwertz_name: "Key 3", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "3" },
{ index:109, code: IC_key_4, name: "Key 4", azerty_name: "Key 4", qwertz_name: "Key 4", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "4" },
{ index:110, code: IC_key_5, name: "Key 5", azerty_name: "Key 5", qwertz_name: "Key 5", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "5" },
{ index:111, code: IC_key_6, name: "Key 6", azerty_name: "Key 6", qwertz_name: "Key 6", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "6" },
{ index:112, code: IC_key_7, name: "Key 7", azerty_name: "Key 7", qwertz_name: "Key 7", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "7" },
{ index:113, code: IC_key_8, name: "Key 8", azerty_name: "Key 8", qwertz_name: "Key 8", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "8" },
{ index:114, code: IC_key_9, name: "Key 9", azerty_name: "Key 9", qwertz_name: "Key 9", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_ord, keychar: "9" },
{ index:115, code: IC_key_backtick, name: "Backtick", azerty_name: "Backtick", qwertz_name:"Backtick", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "`" , shifted: "~" },
{ index:116, code: IC_key_comma, name: "Comma", azerty_name: "Comma", qwertz_name:"Comma", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "," , shifted: "<" },
{ index:117, code: IC_key_period, name: "Period", azerty_name: "Period", qwertz_name:"Period", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "." , shifted: ">" },
{ index:118, code: IC_key_slash, name: "Slash", azerty_name: "Slash", qwertz_name:"Slash", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "/" , shifted: "?" },
{ index:119, code: IC_key_backslash, name: "Backslash", azerty_name: "Backslash", qwertz_name:"Backslash", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "\\", shifted: "|" },
{ index:120, code: IC_key_minus, name: "Minus", azerty_name: "Minus", qwertz_name:"Minus", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "-" , shifted: "_" },
{ index:121, code: IC_key_equals, name: "Equals", azerty_name: "Equals", qwertz_name:"Equals", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "=" , shifted: "+" },
{ index:122, code: IC_key_lbracket, name: "Left Bracket", azerty_name: "Left Bracket", qwertz_name:"Left Bracket", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "[" , shifted: "{" },
{ index:123, code: IC_key_rbracket, name: "Right Bracket", azerty_name: "Right Bracket", qwertz_name:"Right Bracket", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "]" , shifted: "}" },
{ index:124, code: IC_key_semi, name: "Semicolon", azerty_name: "Semicolon", qwertz_name:"Semicolon", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: ";" , shifted: ":" },
{ index:125, code: IC_key_apostrophe, name: "Apostrophe", azerty_name: "Apostrophe", qwertz_name:"Apostrophe", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_lastkey, keychar: "'" , shifted: "\"" },
{ index:126, code: IC_enter, name: "Enter", azerty_name: "Enter", qwertz_name:"Enter", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_enter },
{ index:127, code: IC_space, name: "Space", azerty_name: "Space", qwertz_name:"Space", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_space },
{ index:128, code: IC_key_escape, name: "Escape", azerty_name: "Escape", qwertz_name:"Escape", deviceType: ICDeviceType_keyboard, keyboardMethod: ICKeyboardMethod_keycheck, keycode: vk_escape },
{ index:129, code: IC_hat0_U, name: "Hat0 Up", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:130, code: IC_hat0_D, name: "Hat0 Down", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:131, code: IC_hat0_L, name: "Hat0 Left", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:132, code: IC_hat0_R, name: "Hat0 Right", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:133, code: IC_hat1_U, name: "Hat1 Up", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:134, code: IC_hat1_D, name: "Hat1 Down", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:135, code: IC_hat1_L, name: "Hat1 Left", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:136, code: IC_hat1_R, name: "Hat1 Right", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:137, code: IC_hat2_U, name: "Hat2 Up", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:138, code: IC_hat2_D, name: "Hat2 Down", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:139, code: IC_hat2_L, name: "Hat2 Left", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:140, code: IC_hat2_R, name: "Hat2 Right", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:141, code: IC_hat3_U, name: "Hat3 Up", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:142, code: IC_hat3_D, name: "Hat3 Down", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:143, code: IC_hat3_L, name: "Hat3 Left", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:144, code: IC_hat3_R, name: "Hat3 Right", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:145, code: IC_hat4_U, name: "Hat4 Up", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:146, code: IC_hat4_D, name: "Hat4 Down", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:147, code: IC_hat4_L, name: "Hat4 Left", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
{ index:148, code: IC_hat4_R, name: "Hat4 Right", deviceType: ICDeviceType_gamepad, deviceType: ICDeviceType_gamepad, deviceCode: none },
];