This commit is contained in:
red-prig 2022-10-20 23:13:47 +03:00
parent 260b053c5c
commit 70804604de
1 changed files with 513 additions and 189 deletions

View File

@ -51,7 +51,228 @@ const
SCE_IME_ERROR_INVALID_TIMING =-2135162829; // 0x80BC0033
SCE_IME_ERROR_INTERNAL =-2135162625; // 0x80BC00FF
//USB HID USAGE ID
SCE_IME_KEYCODE_NOEVENT =$0000; // No Event
SCE_IME_KEYCODE_ERRORROLLOVER =$0001; // Error Rollover
SCE_IME_KEYCODE_POSTFAIL =$0002; // Pos Fail
SCE_IME_KEYCODE_ERRORUNDEFINED =$0003; // Error Undefined
SCE_IME_KEYCODE_A =$0004; // a and A
SCE_IME_KEYCODE_B =$0005; // b and B
SCE_IME_KEYCODE_C =$0006; // c and C
SCE_IME_KEYCODE_D =$0007; // d and D
SCE_IME_KEYCODE_E =$0008; // e and E
SCE_IME_KEYCODE_F =$0009; // f and F
SCE_IME_KEYCODE_G =$000A; // g and G
SCE_IME_KEYCODE_H =$000B; // h and H
SCE_IME_KEYCODE_I =$000C; // i and I
SCE_IME_KEYCODE_J =$000D; // j and J
SCE_IME_KEYCODE_K =$000E; // k and K
SCE_IME_KEYCODE_L =$000F; // l and L
SCE_IME_KEYCODE_M =$0010; // m and M
SCE_IME_KEYCODE_N =$0011; // n and N
SCE_IME_KEYCODE_O =$0012; // o and O
SCE_IME_KEYCODE_P =$0013; // p and P
SCE_IME_KEYCODE_Q =$0014; // q and Q
SCE_IME_KEYCODE_R =$0015; // r and R
SCE_IME_KEYCODE_S =$0016; // s and S
SCE_IME_KEYCODE_T =$0017; // t and T
SCE_IME_KEYCODE_U =$0018; // u and U
SCE_IME_KEYCODE_V =$0019; // v and V
SCE_IME_KEYCODE_W =$001A; // w and W
SCE_IME_KEYCODE_X =$001B; // x and X
SCE_IME_KEYCODE_Y =$001C; // y and Y
SCE_IME_KEYCODE_Z =$001D; // z and Z
SCE_IME_KEYCODE_1 =$001E; // 1 and !
SCE_IME_KEYCODE_2 =$001F; // 2 and @
SCE_IME_KEYCODE_3 =$0020; // 3 and #
SCE_IME_KEYCODE_4 =$0021; // 4 and $
SCE_IME_KEYCODE_5 =$0022; // 5 and %
SCE_IME_KEYCODE_6 =$0023; // 6 and ^
SCE_IME_KEYCODE_7 =$0024; // 7 and &
SCE_IME_KEYCODE_8 =$0025; // 8 and *
SCE_IME_KEYCODE_9 =$0026; // 9 and (
SCE_IME_KEYCODE_0 =$0027; // 0 and )
SCE_IME_KEYCODE_RETURN =$0028; // Return (Enter)
SCE_IME_KEYCODE_ESCAPE =$0029; // Escape
SCE_IME_KEYCODE_BACKSPACE =$002A; // Delete and Backspace
SCE_IME_KEYCODE_TAB =$002B; // Tab
SCE_IME_KEYCODE_SPACEBAR =$002C; // Spacebar
SCE_IME_KEYCODE_MINUS =$002D; // - and _
SCE_IME_KEYCODE_EQUAL =$002E; // = and +
SCE_IME_KEYCODE_LEFTBRACKET =$002F; // [ and {
SCE_IME_KEYCODE_RIGHTBRACKET =$0030; // ] and }
SCE_IME_KEYCODE_BACKSLASH =$0031; // \ and |
SCE_IME_KEYCODE_NONUS_POUND =$0032; // Non US # and ~
SCE_IME_KEYCODE_SEMICOLON =$0033; // ; and :
SCE_IME_KEYCODE_SINGLEQUOTE =$0034; // ' and "
SCE_IME_KEYCODE_BACKQUOTE =$0035; // ` and ~
SCE_IME_KEYCODE_COMMA =$0036; // , and <
SCE_IME_KEYCODE_PERIOD =$0037; // . and >
SCE_IME_KEYCODE_SLASH =$0038; // / and ?
SCE_IME_KEYCODE_CAPSLOCK =$0039; // Caps Lock
SCE_IME_KEYCODE_F1 =$003A; // F1
SCE_IME_KEYCODE_F2 =$003B; // F2
SCE_IME_KEYCODE_F3 =$003C; // F3
SCE_IME_KEYCODE_F4 =$003D; // F4
SCE_IME_KEYCODE_F5 =$003E; // F5
SCE_IME_KEYCODE_F6 =$003F; // F6
SCE_IME_KEYCODE_F7 =$0040; // F7
SCE_IME_KEYCODE_F8 =$0041; // F8
SCE_IME_KEYCODE_F9 =$0042; // F9
SCE_IME_KEYCODE_F10 =$0043; // F10
SCE_IME_KEYCODE_F11 =$0044; // F11
SCE_IME_KEYCODE_F12 =$0045; // F12
SCE_IME_KEYCODE_PRINTSCREEN =$0046; // Print Screen
SCE_IME_KEYCODE_SCROLLLOCK =$0047; // Scroll Lock
SCE_IME_KEYCODE_PAUSE =$0048; // Break
SCE_IME_KEYCODE_INSERT =$0049; // Insert
SCE_IME_KEYCODE_HOME =$004A; // Home
SCE_IME_KEYCODE_PAGEUP =$004B; // Page Up
SCE_IME_KEYCODE_DELETE =$004C; // Delete Forward
SCE_IME_KEYCODE_END =$004D; // End
SCE_IME_KEYCODE_PAGEDOWN =$004E; // Page Down
SCE_IME_KEYCODE_RIGHTARROW =$004F; // RIght Arrow
SCE_IME_KEYCODE_LEFTARROW =$0050; // Left Arrow
SCE_IME_KEYCODE_DOWNARROW =$0051; // Down Arrow
SCE_IME_KEYCODE_UPARROW =$0052; // Up Arrow
SCE_IME_KEYCODE_KEYPAD_NUMLOCK =$0053; // NumLock and Clear
SCE_IME_KEYCODE_KEYPAD_SLASH =$0054; // Keypad /
SCE_IME_KEYCODE_KEYPAD_ASTERISK =$0055; // Keypad *
SCE_IME_KEYCODE_KEYPAD_MINUS =$0056; // Keypad -
SCE_IME_KEYCODE_KEYPAD_PLUS =$0057; // Keypad +
SCE_IME_KEYCODE_KEYPAD_ENTER =$0058; // Keypad Enter
SCE_IME_KEYCODE_KEYPAD_1 =$0059; // Keypad 1 and End
SCE_IME_KEYCODE_KEYPAD_2 =$005A; // Keypad 2 and Down Arrow
SCE_IME_KEYCODE_KEYPAD_3 =$005B; // Keypad 3 and Page Down
SCE_IME_KEYCODE_KEYPAD_4 =$005C; // Keypad 4 and Left Arrow
SCE_IME_KEYCODE_KEYPAD_5 =$005D; // Keypad 5
SCE_IME_KEYCODE_KEYPAD_6 =$005E; // Keypad 6 and Right Arrow
SCE_IME_KEYCODE_KEYPAD_7 =$005F; // Keypad 7 and Home
SCE_IME_KEYCODE_KEYPAD_8 =$0060; // Keypad 8 and Up Arrow
SCE_IME_KEYCODE_KEYPAD_9 =$0061; // Keypad 9 and Page Up
SCE_IME_KEYCODE_KEYPAD_0 =$0062; // Keypad 0 and Insert
SCE_IME_KEYCODE_KEYPAD_PERIOD =$0063; // Keypad . and Delete
SCE_IME_KEYCODE_NONUS_BACKSLASH =$0064; // Non US \ and |
SCE_IME_KEYCODE_APPLICATION =$0065; // Application
SCE_IME_KEYCODE_POWER =$0066; // Power
SCE_IME_KEYCODE_KEYPAD_EQUAL =$0067; // Keypad =
SCE_IME_KEYCODE_F13 =$0068; // F13
SCE_IME_KEYCODE_F14 =$0069; // F14
SCE_IME_KEYCODE_F15 =$006A; // F15
SCE_IME_KEYCODE_F16 =$006B; // F16
SCE_IME_KEYCODE_F17 =$006C; // F17
SCE_IME_KEYCODE_F18 =$006D; // F18
SCE_IME_KEYCODE_F19 =$006E; // F19
SCE_IME_KEYCODE_F20 =$006F; // F20
SCE_IME_KEYCODE_F21 =$0070; // F21
SCE_IME_KEYCODE_F22 =$0071; // F22
SCE_IME_KEYCODE_F23 =$0072; // F23
SCE_IME_KEYCODE_F24 =$0073; // F24
SCE_IME_KEYCODE_EXECUTE =$0074; // Execute
SCE_IME_KEYCODE_HELP =$0075; // Help
SCE_IME_KEYCODE_MENU =$0076; // Menu
SCE_IME_KEYCODE_SELECT =$0077; // Select
SCE_IME_KEYCODE_STOP =$0078; // Stop
SCE_IME_KEYCODE_AGAIN =$0079; // Again
SCE_IME_KEYCODE_UNDO =$007A; // Undo
SCE_IME_KEYCODE_CUT =$007B; // Cut
SCE_IME_KEYCODE_COPY =$007C; // Copy
SCE_IME_KEYCODE_PASTE =$007D; // Paste
SCE_IME_KEYCODE_FIND =$007E; // Find
SCE_IME_KEYCODE_MUTE =$007F; // Mute
SCE_IME_KEYCODE_VOLUMEUP =$0080; // Volume Up
SCE_IME_KEYCODE_VOLUMEDOWN =$0081; // Volume Down
SCE_IME_KEYCODE_LOCKING_CAPSLOCK =$0082; // Locking Caps Lock
SCE_IME_KEYCODE_LOCKING_NUMLOCK =$0083; // Locking Num Lock
SCE_IME_KEYCODE_LOCKING_SCROLLLOCK =$0084; // Locking Scroll Lock
SCE_IME_KEYCODE_KEYPAD_COMMA =$0085; // Keypad ,
SCE_IME_KEYCODE_KEYPAD_EQUALSIGN =$0086; // Keypad Equal Sign
SCE_IME_KEYCODE_INTERNATIONAL1 =$0087; // International 1
SCE_IME_KEYCODE_INTERNATIONAL2 =$0088; // International 2
SCE_IME_KEYCODE_INTERNATIONAL3 =$0089; // International 3
SCE_IME_KEYCODE_INTERNATIONAL4 =$008A; // International 4
SCE_IME_KEYCODE_INTERNATIONAL5 =$008B; // International 5
SCE_IME_KEYCODE_INTERNATIONAL6 =$008C; // International 6
SCE_IME_KEYCODE_INTERNATIONAL7 =$008D; // International 7
SCE_IME_KEYCODE_INTERNATIONAL8 =$008E; // International 8
SCE_IME_KEYCODE_INTERNATIONAL9 =$008F; // International 9
SCE_IME_KEYCODE_LANG1 =$0090; // Language 1
SCE_IME_KEYCODE_LANG2 =$0091; // Language 2
SCE_IME_KEYCODE_LANG3 =$0092; // Language 3
SCE_IME_KEYCODE_LANG4 =$0093; // Language 4
SCE_IME_KEYCODE_LANG5 =$0094; // Language 5
SCE_IME_KEYCODE_LANG6 =$0095; // Language 6
SCE_IME_KEYCODE_LANG7 =$0096; // Language 7
SCE_IME_KEYCODE_LANG8 =$0097; // Language 8
SCE_IME_KEYCODE_LANG9 =$0098; // Language 9
SCE_IME_KEYCODE_ALTERASE =$0099; // Alternate Erase
SCE_IME_KEYCODE_SYSREQ =$009A; // SysReq / Attention
SCE_IME_KEYCODE_CANCEL =$009B; // Cancel
SCE_IME_KEYCODE_CLEAR =$009C; // Clear
SCE_IME_KEYCODE_PRIOR =$009D; // Prior
SCE_IME_KEYCODE_RETURN2 =$009E; // Return
SCE_IME_KEYCODE_SEPARATOR =$009F; // Separator
SCE_IME_KEYCODE_OUT =$00A0; // Out
SCE_IME_KEYCODE_OPER =$00A1; // Oper
SCE_IME_KEYCODE_CLEAR_AGAIN =$00A2; // Clear/Again
SCE_IME_KEYCODE_CRSEL_PROPS =$00A3; // CrSel/Props
SCE_IME_KEYCODE_EXSEL =$00A4; // ExSel
SCE_IME_KEYCODE_KEYPAD_00 =$00B0; // Keypad 00
SCE_IME_KEYCODE_KEYPAD_000 =$00B1; // Keypad 000
SCE_IME_KEYCODE_THOUSANDSSEPARATOR =$00B2; // Thousands Separator
SCE_IME_KEYCODE_DECIMALSEPARATOR =$00B3; // Decimal Separator
SCE_IME_KEYCODE_CURRENCYUNIT =$00B4; // Currency Unit
SCE_IME_KEYCODE_CURRENCYSUBUNIT =$00B5; // Currency Sub-Unit
SCE_IME_KEYCODE_KEYPAD_LEFTPARENTHESIS =$00B6; // Keypad (
SCE_IME_KEYCODE_KEYPAD_RIGHTPARENTHESIS =$00B7; // Keypad )
SCE_IME_KEYCODE_KEYPAD_LEFTCURLYBRACKET =$00B8; // Keypad {
SCE_IME_KEYCODE_KEYPAD_RIGHTCURLYBRACKET=$00B9; // Keypad }
SCE_IME_KEYCODE_KEYPAD_TAB =$00BA; // Keypad Tab
SCE_IME_KEYCODE_KEYPAD_BACKSPACE =$00BB; // Keypad BackSpace
SCE_IME_KEYCODE_KEYPAD_A =$00BC; // Keypad A
SCE_IME_KEYCODE_KEYPAD_B =$00BD; // Keypad B
SCE_IME_KEYCODE_KEYPAD_C =$00BE; // Keypad C
SCE_IME_KEYCODE_KEYPAD_D =$00BF; // Keypad D
SCE_IME_KEYCODE_KEYPAD_E =$00C0; // Keypad E
SCE_IME_KEYCODE_KEYPAD_F =$00C1; // Keypad F
SCE_IME_KEYCODE_KEYPAD_XOR =$00C2; // Keypad XOR
SCE_IME_KEYCODE_KEYPAD_HAT =$00C3; // Keypad ^
SCE_IME_KEYCODE_KEYPAD_PERCENT =$00C4; // Keypad %
SCE_IME_KEYCODE_KEYPAD_LESSTHAN =$00C5; // Keypad <
SCE_IME_KEYCODE_KEYPAD_GREATERTHAN =$00C6; // Keypad >
SCE_IME_KEYCODE_KEYPAD_AND =$00C7; // Keypad &
SCE_IME_KEYCODE_KEYPAD_LOGICALAND =$00C8; // Keypad &&
SCE_IME_KEYCODE_KEYPAD_OR =$00C9; // Keypad |
SCE_IME_KEYCODE_KEYPAD_LOGICALOR =$00CA; // Keypad ||
SCE_IME_KEYCODE_KEYPAD_COLON =$00CB; // Keypad :
SCE_IME_KEYCODE_KEYPAD_NUMBER =$00CC; // Keypad #
SCE_IME_KEYCODE_KEYPAD_SPACE =$00CD; // Keypad Space
SCE_IME_KEYCODE_KEYPAD_ATSIGN =$00CE; // Keypad @
SCE_IME_KEYCODE_KEYPAD_EXCLAMATION =$00CF; // Keypad !
SCE_IME_KEYCODE_KEYPAD_MEMORY_STORE =$00D0; // Keypad Memory Store
SCE_IME_KEYCODE_KEYPAD_MEMORY_RECALL =$00D1; // Keypad Memory Recall
SCE_IME_KEYCODE_KEYPAD_MEMORY_CLEAR =$00D2; // Keypad Memory Clear
SCE_IME_KEYCODE_KEYPAD_MEMORY_ADD =$00D3; // Keypad Memory Add
SCE_IME_KEYCODE_KEYPAD_MEMORY_SUBTRACT =$00D4; // Keypad Memory Subtract
SCE_IME_KEYCODE_KEYPAD_MEMORY_MULTIPLY =$00D5; // Keypad Memory Multiply
SCE_IME_KEYCODE_KEYPAD_MEMORY_DIVIDE =$00D6; // Keypad Memory Divide
SCE_IME_KEYCODE_KEYPAD_PLUS_MINUS =$00D7; // Keypad +/-
SCE_IME_KEYCODE_KEYPAD_CLEAR =$00D8; // Keypad Clear
SCE_IME_KEYCODE_KEYPAD_CLEARENTRY =$00D9; // Keypad Clear Entry
SCE_IME_KEYCODE_KEYPAD_BINARY =$00DA; // Keypad Binary
SCE_IME_KEYCODE_KEYPAD_OCTAL =$00DB; // Keypad Octal
SCE_IME_KEYCODE_KEYPAD_DECIMAL =$00DC; // Keypad Decimal
SCE_IME_KEYCODE_KEYPAD_HEXADECIMAL =$00DD; // Keypad Hexadecimal
SCE_IME_KEYCODE_LEFTCONTROL =$00E0; // Keypad Left Control
SCE_IME_KEYCODE_LEFTSHIFT =$00E1; // Keypad Left Shift
SCE_IME_KEYCODE_LEFTALT =$00E2; // Keypad Left Alt
SCE_IME_KEYCODE_LEFTGUI =$00E3; // Keypad Left Gui
SCE_IME_KEYCODE_RIGHTCONTROL =$00E4; // Keypad Right Control
SCE_IME_KEYCODE_RIGHTSHIFT =$00E5; // Keypad Right Shift
SCE_IME_KEYCODE_RIGHTALT =$00E6; // Keypad Right Alt
SCE_IME_KEYCODE_RIGHTGUI =$00E7; // Keypad Right Gui
//Size of work buffer used by the Ime library
SCE_IME_WORK_BUFFER_SIZE=(20*1024);
//Various maximum sizes for the IME
@ -306,43 +527,43 @@ const
//Keyboard layout types for keyboard devices
//SceImeKeyboardType
SCE_IME_KEYBOARD_TYPE_NONE = 0;
SCE_IME_KEYBOARD_TYPE_DANISH = 1;
SCE_IME_KEYBOARD_TYPE_GERMAN = 2;
SCE_IME_KEYBOARD_TYPE_GERMAN_SW = 3;
SCE_IME_KEYBOARD_TYPE_ENGLISH_US = 4;
SCE_IME_KEYBOARD_TYPE_ENGLISH_GB = 5;
SCE_IME_KEYBOARD_TYPE_SPANISH = 6;
SCE_IME_KEYBOARD_TYPE_SPANISH_LA = 7;
SCE_IME_KEYBOARD_TYPE_FINNISH = 8;
SCE_IME_KEYBOARD_TYPE_FRENCH = 9;
SCE_IME_KEYBOARD_TYPE_FRENCH_BR = 10;
SCE_IME_KEYBOARD_TYPE_FRENCH_CA = 11;
SCE_IME_KEYBOARD_TYPE_FRENCH_SW = 12;
SCE_IME_KEYBOARD_TYPE_ITALIAN = 13;
SCE_IME_KEYBOARD_TYPE_DUTCH = 14;
SCE_IME_KEYBOARD_TYPE_NORWEGIAN = 15;
SCE_IME_KEYBOARD_TYPE_POLISH = 16;
SCE_IME_KEYBOARD_TYPE_PORTUGUESE_BR = 17;
SCE_IME_KEYBOARD_TYPE_PORTUGUESE_PT = 18;
SCE_IME_KEYBOARD_TYPE_RUSSIAN = 19;
SCE_IME_KEYBOARD_TYPE_SWEDISH = 20;
SCE_IME_KEYBOARD_TYPE_TURKISH = 21;
SCE_IME_KEYBOARD_TYPE_JAPANESE_ROMAN = 22;
SCE_IME_KEYBOARD_TYPE_JAPANESE_KANA = 23;
SCE_IME_KEYBOARD_TYPE_KOREAN = 24;
SCE_IME_KEYBOARD_TYPE_SM_CHINESE = 25;
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_ZY = 26;
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_PY_HK = 27;
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_PY_TW = 28;
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_CG = 29;
SCE_IME_KEYBOARD_TYPE_ARABIC_AR = 30;
SCE_IME_KEYBOARD_TYPE_THAI = 31;
SCE_IME_KEYBOARD_TYPE_CZECH = 32;
SCE_IME_KEYBOARD_TYPE_GREEK = 33;
SCE_IME_KEYBOARD_TYPE_INDONESIAN = 34;
SCE_IME_KEYBOARD_TYPE_VIETNAMESE = 35;
SCE_IME_KEYBOARD_TYPE_ROMANIAN = 36;
SCE_IME_KEYBOARD_TYPE_HUNGARIAN = 37;
SCE_IME_KEYBOARD_TYPE_DANISH = 1; //LANG_DANISH
SCE_IME_KEYBOARD_TYPE_GERMAN = 2; //LANG_GERMAN else
SCE_IME_KEYBOARD_TYPE_GERMAN_SW = 3; //LANG_GERMAN SUBLANG_GERMAN_SWISS
SCE_IME_KEYBOARD_TYPE_ENGLISH_US = 4; //LANG_ENGLISH else
SCE_IME_KEYBOARD_TYPE_ENGLISH_GB = 5; //LANG_ENGLISH SUBLANG_ENGLISH_UK
SCE_IME_KEYBOARD_TYPE_SPANISH = 6; //LANG_SPANISH SUBLANG_SPANISH SUBLANG_SPANISH_MEXICAN SUBLANG_SPANISH_MODERN
SCE_IME_KEYBOARD_TYPE_SPANISH_LA = 7; //LANG_SPANISH else
SCE_IME_KEYBOARD_TYPE_FINNISH = 8; //LANG_FINNISH
SCE_IME_KEYBOARD_TYPE_FRENCH = 9; //LANG_FRENCH else
SCE_IME_KEYBOARD_TYPE_FRENCH_BR = 10; //LANG_FRENCH SUBLANG_FRENCH_BELGIAN
SCE_IME_KEYBOARD_TYPE_FRENCH_CA = 11; //LANG_FRENCH SUBLANG_FRENCH_CANADIAN
SCE_IME_KEYBOARD_TYPE_FRENCH_SW = 12; //LANG_FRENCH SUBLANG_FRENCH_SWISS
SCE_IME_KEYBOARD_TYPE_ITALIAN = 13; //LANG_ITALIAN
SCE_IME_KEYBOARD_TYPE_DUTCH = 14; //LANG_DUTCH
SCE_IME_KEYBOARD_TYPE_NORWEGIAN = 15; //LANG_NORWEGIAN
SCE_IME_KEYBOARD_TYPE_POLISH = 16; //LANG_POLISH
SCE_IME_KEYBOARD_TYPE_PORTUGUESE_BR = 17; //LANG_PORTUGUESE SUBLANG_PORTUGUESE_BRAZILIAN
SCE_IME_KEYBOARD_TYPE_PORTUGUESE_PT = 18; //LANG_PORTUGUESE SUBLANG_PORTUGUESE
SCE_IME_KEYBOARD_TYPE_RUSSIAN = 19; //LANG_RUSSIAN
SCE_IME_KEYBOARD_TYPE_SWEDISH = 20; //LANG_SWEDISH
SCE_IME_KEYBOARD_TYPE_TURKISH = 21; //LANG_TURKISH
SCE_IME_KEYBOARD_TYPE_JAPANESE_ROMAN = 22; //LANG_JAPANESE
SCE_IME_KEYBOARD_TYPE_JAPANESE_KANA = 23; //LANG_JAPANESE ?
SCE_IME_KEYBOARD_TYPE_KOREAN = 24; //LANG_KOREAN
SCE_IME_KEYBOARD_TYPE_SM_CHINESE = 25; //LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_ZY = 26; //LANG_CHINESE ?
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_PY_HK = 27; //LANG_CHINESE SUBLANG_CHINESE_HONGKONG
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_PY_TW = 28; //LANG_CHINESE ?
SCE_IME_KEYBOARD_TYPE_TR_CHINESE_CG = 29; //LANG_CHINESE else
SCE_IME_KEYBOARD_TYPE_ARABIC_AR = 30; //LANG_ARABIC
SCE_IME_KEYBOARD_TYPE_THAI = 31; //LANG_THAI
SCE_IME_KEYBOARD_TYPE_CZECH = 32; //LANG_CZECH
SCE_IME_KEYBOARD_TYPE_GREEK = 33; //LANG_GREEK
SCE_IME_KEYBOARD_TYPE_INDONESIAN = 34; //LANG_INDONESIAN
SCE_IME_KEYBOARD_TYPE_VIETNAMESE = 35; //LANG_VIETNAMESE
SCE_IME_KEYBOARD_TYPE_ROMANIAN = 36; //LANG_ROMANIAN
SCE_IME_KEYBOARD_TYPE_HUNGARIAN = 37; //LANG_HUNGARIAN
//Keyboard device types
//SceImeKeyboardDeviceType
@ -534,143 +755,238 @@ end;
function scan_code_to_hid(scanCode:Word):Word;
begin
Result:=0;
Result:=SCE_IME_KEYCODE_ERRORUNDEFINED;
Case scanCode of
$00FF:Result:=$01; // Overrun Error
$00FC:Result:=$02; // POST Fail
$001E:Result:=$04; // a A
$0030:Result:=$05; // b B
$002E:Result:=$06; // c C
$0020:Result:=$07; // d D
$0012:Result:=$08; // e E
$0021:Result:=$09; // f F
$0022:Result:=$0A; // g G
$0023:Result:=$0B; // h H
$0017:Result:=$0C; // i I
$0024:Result:=$0D; // j J
$0025:Result:=$0E; // k K
$0026:Result:=$0F; // l L
$0032:Result:=$10; // m M
$0031:Result:=$11; // n N
$0018:Result:=$12; // o O
$0019:Result:=$13; // p P
$0010:Result:=$14; // q Q
$0013:Result:=$15; // r R
$001F:Result:=$16; // s S
$0014:Result:=$17; // t T
$0016:Result:=$18; // u U
$002F:Result:=$19; // v V
$0011:Result:=$1A; // w W
$002D:Result:=$1B; // x X
$0015:Result:=$1C; // y Y
$002C:Result:=$1D; // z Z
$0002:Result:=$1E; // 1 !
$0003:Result:=$1F; // 2 @
$0004:Result:=$20; // 3 #
$0005:Result:=$21; // 4 $
$0006:Result:=$22; // 5 %
$0007:Result:=$23; // 6 ^
$0008:Result:=$24; // 7 &
$0009:Result:=$25; // 8 *
$000A:Result:=$26; // 9 (
$000B:Result:=$27; // 0 )
$001C:Result:=$28; // Return
$0001:Result:=$29; // Escape
$000E:Result:=$2A; // Backspace
$000F:Result:=$2B; // Tab
$0039:Result:=$2C; // Space
$000C:Result:=$2D; // - _
$000D:Result:=$2E; // = +
$001A:Result:=$2F; // [ {
$001B:Result:=$30; // ] }
$002B:Result:=$31; // \ |
//$002B:Result:=$32; // Europe 1 (Note 2)
$0027:Result:=$33; // ; :
$0028:Result:=$34; // ' "
$0029:Result:=$35; // ` ~
$0033:Result:=$36; // , <
$0034:Result:=$37; // . >
$0035:Result:=$38; // / ?
$003A:Result:=$39; // Caps Lock
$003B:Result:=$3A; // F1
$003C:Result:=$3B; // F2
$003D:Result:=$3C; // F3
$003E:Result:=$3D; // F4
$003F:Result:=$3E; // F5
$0040:Result:=$3F; // F6
$0041:Result:=$40; // F7
$0042:Result:=$41; // F8
$0043:Result:=$42; // F9
$0044:Result:=$43; // F10
$0057:Result:=$44; // F11
$0058:Result:=$45; // F12
$0054:Result:=$46; // Print Screen (Note 1)
$E037:Result:=$46; // Print Screen (Note 1)
$0046:Result:=$47; // Scroll Lock
$e046:Result:=$48; // Break (Ctrl + Pause)
$e11d:Result:=$48; // Pause (Ctrl + NumLock)
$E052:Result:=$49; // Insert (Note 1)
$E047:Result:=$4A; // Home (Note 1)
$E049:Result:=$4B; // Page Up (Note 1)
$E053:Result:=$4C; // Delete (Note 1)
$E04F:Result:=$4D; // End (Note 1)
$E051:Result:=$4E; // Page Down (Note 1)
$E04D:Result:=$4F; // Right Arrow (Note 1)
$E04B:Result:=$50; // Left Arrow (Note 1)
$E050:Result:=$51; // Down Arrow (Note 1)
$E048:Result:=$52; // Up Arrow (Note 1)
$0045:Result:=$53; // Num Lock
$E035:Result:=$54; // Keypad / (Note 1)
$0037:Result:=$55; // Keypad *
$004A:Result:=$56; // Keypad -
$004E:Result:=$57; // Keypad +
$E01C:Result:=$58; // Keypad Enter
$004F:Result:=$59; // Keypad 1 End
$0050:Result:=$5A; // Keypad 2 Down
$0051:Result:=$5B; // Keypad 3 PageDn
$004B:Result:=$5C; // Keypad 4 Left
$004C:Result:=$5D; // Keypad 5
$004D:Result:=$5E; // Keypad 6 Right
$0047:Result:=$5F; // Keypad 7 Home
$0048:Result:=$60; // Keypad 8 Up
$0049:Result:=$61; // Keypad 9 PageUp
$0052:Result:=$62; // Keypad 0 Insert
$0053:Result:=$63; // Keypad . Delete
$0056:Result:=$64; // Europe 2 (Note 2)
$E05D:Result:=$65; // App
$0059:Result:=$67; // Keypad =
$005D:Result:=$68; // F13
$005E:Result:=$69; // F14
$005F:Result:=$6A; // F15
$007E:Result:=$85; // Keypad , (Brazilian Keypad .)
$0073:Result:=$87; // Keyboard Int'l 1 ろ (Ro)
$0070:Result:=$88; // Keyboard Int'l 2 かたかな ひらがな ローマ字 (Katakana/Hiragana)
$007D:Result:=$89; // Keyboard Int'l 3 ¥ (Yen)
$0079:Result:=$8A; // Keyboard Int'l 4 前候補 変換 (次候補) 全候補 (Henkan)
$007B:Result:=$8B; // Keyboard Int'l 5 無変換 (Muhenkan)
$005C:Result:=$8C; // Keyboard Int'l 6 (PC9800 Keypad , )
$00F2:Result:=$90; // Keyboard Lang 1 한/영 (Hanguel/English)
$00F1:Result:=$91; // Keyboard Lang 2 한자 (Hanja)
$0078:Result:=$92; // Keyboard Lang 3 かたかな (Katakana)
$0077:Result:=$93; // Keyboard Lang 4 ひらがな (Hiragana)
$0076:Result:=$94; // Keyboard Lang 5 半角/全角 (Zenkaku/Hankaku)
$001D:Result:=$E0; // Left Control
$002A:Result:=$E1; // Left Shift
$0038:Result:=$E2; // Left Alt
$E05B:Result:=$E3; // Left GUI
$E01D:Result:=$E4; // Right Control
$0036:Result:=$E5; // Right Shift
$E038:Result:=$E6; // Right Alt
$E05C:Result:=$E7; // Right GUI
$00FF:Result:=SCE_IME_KEYCODE_ERRORROLLOVER;
$00FC:Result:=SCE_IME_KEYCODE_POSTFAIL ;
//
$001E:Result:=SCE_IME_KEYCODE_A;
$0030:Result:=SCE_IME_KEYCODE_B;
$002E:Result:=SCE_IME_KEYCODE_C;
$0020:Result:=SCE_IME_KEYCODE_D;
$0012:Result:=SCE_IME_KEYCODE_E;
$0021:Result:=SCE_IME_KEYCODE_F;
$0022:Result:=SCE_IME_KEYCODE_G;
$0023:Result:=SCE_IME_KEYCODE_H;
$0017:Result:=SCE_IME_KEYCODE_I;
$0024:Result:=SCE_IME_KEYCODE_J;
$0025:Result:=SCE_IME_KEYCODE_K;
$0026:Result:=SCE_IME_KEYCODE_L;
$0032:Result:=SCE_IME_KEYCODE_M;
$0031:Result:=SCE_IME_KEYCODE_N;
$0018:Result:=SCE_IME_KEYCODE_O;
$0019:Result:=SCE_IME_KEYCODE_P;
$0010:Result:=SCE_IME_KEYCODE_Q;
$0013:Result:=SCE_IME_KEYCODE_R;
$001F:Result:=SCE_IME_KEYCODE_S;
$0014:Result:=SCE_IME_KEYCODE_T;
$0016:Result:=SCE_IME_KEYCODE_U;
$002F:Result:=SCE_IME_KEYCODE_V;
$0011:Result:=SCE_IME_KEYCODE_W;
$002D:Result:=SCE_IME_KEYCODE_X;
$0015:Result:=SCE_IME_KEYCODE_Y;
$002C:Result:=SCE_IME_KEYCODE_Z;
$0002:Result:=SCE_IME_KEYCODE_1;
$0003:Result:=SCE_IME_KEYCODE_2;
$0004:Result:=SCE_IME_KEYCODE_3;
$0005:Result:=SCE_IME_KEYCODE_4;
$0006:Result:=SCE_IME_KEYCODE_5;
$0007:Result:=SCE_IME_KEYCODE_6;
$0008:Result:=SCE_IME_KEYCODE_7;
$0009:Result:=SCE_IME_KEYCODE_8;
$000A:Result:=SCE_IME_KEYCODE_9;
$000B:Result:=SCE_IME_KEYCODE_0;
$001C:Result:=SCE_IME_KEYCODE_RETURN;
$0001:Result:=SCE_IME_KEYCODE_ESCAPE;
$000E:Result:=SCE_IME_KEYCODE_BACKSPACE;
$000F:Result:=SCE_IME_KEYCODE_TAB;
$0039:Result:=SCE_IME_KEYCODE_SPACEBAR;
$000C:Result:=SCE_IME_KEYCODE_MINUS;
$000D:Result:=SCE_IME_KEYCODE_EQUAL;
$001A:Result:=SCE_IME_KEYCODE_LEFTBRACKET;
$001B:Result:=SCE_IME_KEYCODE_RIGHTBRACKET;
$002B:Result:=SCE_IME_KEYCODE_BACKSLASH;
//
$0027:Result:=SCE_IME_KEYCODE_SEMICOLON;
$0028:Result:=SCE_IME_KEYCODE_SINGLEQUOTE;
$0029:Result:=SCE_IME_KEYCODE_BACKQUOTE;
$0033:Result:=SCE_IME_KEYCODE_COMMA;
$0034:Result:=SCE_IME_KEYCODE_PERIOD;
$0035:Result:=SCE_IME_KEYCODE_SLASH;
$003A:Result:=SCE_IME_KEYCODE_CAPSLOCK;
$003B:Result:=SCE_IME_KEYCODE_F1;
$003C:Result:=SCE_IME_KEYCODE_F2;
$003D:Result:=SCE_IME_KEYCODE_F3;
$003E:Result:=SCE_IME_KEYCODE_F4;
$003F:Result:=SCE_IME_KEYCODE_F5;
$0040:Result:=SCE_IME_KEYCODE_F6;
$0041:Result:=SCE_IME_KEYCODE_F7;
$0042:Result:=SCE_IME_KEYCODE_F8;
$0043:Result:=SCE_IME_KEYCODE_F9;
$0044:Result:=SCE_IME_KEYCODE_F10;
$0057:Result:=SCE_IME_KEYCODE_F11;
$0058:Result:=SCE_IME_KEYCODE_F12;
$E037,
$0054:Result:=SCE_IME_KEYCODE_PRINTSCREEN;
$0046:Result:=SCE_IME_KEYCODE_SCROLLLOCK;
$E11D,
$E046:Result:=SCE_IME_KEYCODE_PAUSE;
$E052:Result:=SCE_IME_KEYCODE_INSERT;
$E047:Result:=SCE_IME_KEYCODE_HOME;
$E049:Result:=SCE_IME_KEYCODE_PAGEUP;
$E053:Result:=SCE_IME_KEYCODE_DELETE;
$E04F:Result:=SCE_IME_KEYCODE_END;
$E051:Result:=SCE_IME_KEYCODE_PAGEDOWN;
$E04D:Result:=SCE_IME_KEYCODE_RIGHTARROW;
$E04B:Result:=SCE_IME_KEYCODE_LEFTARROW;
$E050:Result:=SCE_IME_KEYCODE_DOWNARROW;
$E048:Result:=SCE_IME_KEYCODE_UPARROW;
$0045:Result:=SCE_IME_KEYCODE_KEYPAD_NUMLOCK;
$E035:Result:=SCE_IME_KEYCODE_KEYPAD_SLASH;
$0037:Result:=SCE_IME_KEYCODE_KEYPAD_ASTERISK;
$004A:Result:=SCE_IME_KEYCODE_KEYPAD_MINUS;
$004E:Result:=SCE_IME_KEYCODE_KEYPAD_PLUS;
$E01C:Result:=SCE_IME_KEYCODE_KEYPAD_ENTER;
$004F:Result:=SCE_IME_KEYCODE_KEYPAD_1;
$0050:Result:=SCE_IME_KEYCODE_KEYPAD_2;
$0051:Result:=SCE_IME_KEYCODE_KEYPAD_3;
$004B:Result:=SCE_IME_KEYCODE_KEYPAD_4;
$004C:Result:=SCE_IME_KEYCODE_KEYPAD_5;
$004D:Result:=SCE_IME_KEYCODE_KEYPAD_6;
$0047:Result:=SCE_IME_KEYCODE_KEYPAD_7;
$0048:Result:=SCE_IME_KEYCODE_KEYPAD_8;
$0049:Result:=SCE_IME_KEYCODE_KEYPAD_9;
$0052:Result:=SCE_IME_KEYCODE_KEYPAD_0;
$0053:Result:=SCE_IME_KEYCODE_KEYPAD_PERIOD;
$0056:Result:=SCE_IME_KEYCODE_NONUS_BACKSLASH;
$E05D:Result:=SCE_IME_KEYCODE_APPLICATION;
$E05E:Result:=SCE_IME_KEYCODE_POWER;
$0059:Result:=SCE_IME_KEYCODE_KEYPAD_EQUAL;
$0064:Result:=SCE_IME_KEYCODE_F13;
$0065:Result:=SCE_IME_KEYCODE_F14;
$0066:Result:=SCE_IME_KEYCODE_F15;
$0067:Result:=SCE_IME_KEYCODE_F16;
$0068:Result:=SCE_IME_KEYCODE_F17;
$0069:Result:=SCE_IME_KEYCODE_F18;
$006A:Result:=SCE_IME_KEYCODE_F19;
$006B:Result:=SCE_IME_KEYCODE_F20;
$006C:Result:=SCE_IME_KEYCODE_F21;
$006D:Result:=SCE_IME_KEYCODE_F22;
$006E:Result:=SCE_IME_KEYCODE_F23;
$006F:Result:=SCE_IME_KEYCODE_F24;
//
$007E:Result:=SCE_IME_KEYCODE_KEYPAD_COMMA;
//
$0073:Result:=SCE_IME_KEYCODE_INTERNATIONAL1;
$0070:Result:=SCE_IME_KEYCODE_INTERNATIONAL2;
$007D:Result:=SCE_IME_KEYCODE_INTERNATIONAL3;
$0079:Result:=SCE_IME_KEYCODE_INTERNATIONAL4;
$007B:Result:=SCE_IME_KEYCODE_INTERNATIONAL5;
$005C:Result:=SCE_IME_KEYCODE_INTERNATIONAL6;
//
$00F2:Result:=SCE_IME_KEYCODE_LANG1;
$00F1:Result:=SCE_IME_KEYCODE_LANG2;
$0078:Result:=SCE_IME_KEYCODE_LANG3;
$0077:Result:=SCE_IME_KEYCODE_LANG4;
$0076:Result:=SCE_IME_KEYCODE_LANG5;
//
$001D:Result:=SCE_IME_KEYCODE_LEFTCONTROL;
$002A:Result:=SCE_IME_KEYCODE_LEFTSHIFT;
$0038:Result:=SCE_IME_KEYCODE_LEFTALT;
$E05B:Result:=SCE_IME_KEYCODE_LEFTGUI;
$E01D:Result:=SCE_IME_KEYCODE_RIGHTCONTROL;
$0036:Result:=SCE_IME_KEYCODE_RIGHTSHIFT;
$E038:Result:=SCE_IME_KEYCODE_RIGHTALT;
$E05C:Result:=SCE_IME_KEYCODE_RIGHTGUI;
else;
end;
end;
function keyboard_layout_to_type(Layout:HKL):Integer;
begin
Result:=SCE_IME_KEYBOARD_TYPE_NONE;
Layout:=Layout and $FFFF;
Case (Layout and $3FF) of
LANG_DANISH:Result:=SCE_IME_KEYBOARD_TYPE_DANISH;
LANG_GERMAN:
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_GERMAN_SWISS:Result:=SCE_IME_KEYBOARD_TYPE_GERMAN_SW;
else Result:=SCE_IME_KEYBOARD_TYPE_GERMAN;
end;
LANG_ENGLISH:
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_ENGLISH_UK:Result:=SCE_IME_KEYBOARD_TYPE_ENGLISH_GB;
else Result:=SCE_IME_KEYBOARD_TYPE_ENGLISH_US;
end;
LANG_SPANISH :
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_SPANISH,
SUBLANG_SPANISH_MEXICAN,
SUBLANG_SPANISH_MODERN:Result:=SCE_IME_KEYBOARD_TYPE_SPANISH;
else
Result:=SCE_IME_KEYBOARD_TYPE_SPANISH_LA;
end;
LANG_FINNISH:Result:=SCE_IME_KEYBOARD_TYPE_FINNISH;
LANG_FRENCH:
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_FRENCH_BELGIAN :Result:=SCE_IME_KEYBOARD_TYPE_FRENCH_BR;
SUBLANG_FRENCH_CANADIAN:Result:=SCE_IME_KEYBOARD_TYPE_FRENCH_CA;
SUBLANG_FRENCH_SWISS :Result:=SCE_IME_KEYBOARD_TYPE_FRENCH_SW;
else Result:=SCE_IME_KEYBOARD_TYPE_FRENCH;
end;
LANG_ITALIAN :Result:=SCE_IME_KEYBOARD_TYPE_ITALIAN;
LANG_DUTCH :Result:=SCE_IME_KEYBOARD_TYPE_DUTCH;
LANG_NORWEGIAN:Result:=SCE_IME_KEYBOARD_TYPE_NORWEGIAN;
LANG_POLISH :Result:=SCE_IME_KEYBOARD_TYPE_POLISH;
LANG_PORTUGUESE:
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_PORTUGUESE:Result:=SCE_IME_KEYBOARD_TYPE_PORTUGUESE_PT;
else Result:=SCE_IME_KEYBOARD_TYPE_PORTUGUESE_BR;
end;
LANG_RUSSIAN :Result:=SCE_IME_KEYBOARD_TYPE_RUSSIAN;
LANG_SWEDISH :Result:=SCE_IME_KEYBOARD_TYPE_SWEDISH;
LANG_TURKISH :Result:=SCE_IME_KEYBOARD_TYPE_TURKISH;
LANG_JAPANESE:Result:=SCE_IME_KEYBOARD_TYPE_JAPANESE_ROMAN;
LANG_KOREAN :Result:=SCE_IME_KEYBOARD_TYPE_KOREAN;
LANG_CHINESE:
Case (Layout shr 10) of //SUBLANG_*
SUBLANG_CHINESE_SIMPLIFIED:Result:=SCE_IME_KEYBOARD_TYPE_SM_CHINESE;
SUBLANG_CHINESE_HONGKONG :Result:=SCE_IME_KEYBOARD_TYPE_TR_CHINESE_PY_HK
else Result:=SCE_IME_KEYBOARD_TYPE_TR_CHINESE_CG;
end;
LANG_ARABIC :Result:=SCE_IME_KEYBOARD_TYPE_ARABIC_AR;
LANG_THAI :Result:=SCE_IME_KEYBOARD_TYPE_THAI;
LANG_CZECH :Result:=SCE_IME_KEYBOARD_TYPE_CZECH;
LANG_GREEK :Result:=SCE_IME_KEYBOARD_TYPE_GREEK;
LANG_INDONESIAN:Result:=SCE_IME_KEYBOARD_TYPE_INDONESIAN;
LANG_VIETNAMESE:Result:=SCE_IME_KEYBOARD_TYPE_VIETNAMESE;
LANG_ROMANIAN :Result:=SCE_IME_KEYBOARD_TYPE_ROMANIAN;
LANG_HUNGARIAN :Result:=SCE_IME_KEYBOARD_TYPE_HUNGARIAN;
else;
end;
end;
function KeyboardHookCallback(nCode:longint;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall;
var
KeyBoardState:TKeyboardState;
ActiveThreadID:DWORD;
KeyBoardLayOut:HKL;
KeyBoardLayout:HKL;
ScanCode:DWORD;
status:DWORD;
AChr:array[0..1] of WideChar;
@ -682,10 +998,10 @@ begin
KeyBoardState:=Default(TKeyboardState);
GetKeyboardState(KeyBoardState);
ActiveThreadID:=GetWindowThreadProcessId(GetForegroundWindow, nil);
KeyBoardLayOut:=GetKeyboardLayout(ActiveThreadID);
ActiveThreadID:=GetWindowThreadProcessId(GetForegroundWindow,nil);
KeyBoardLayout:=GetKeyboardLayout(ActiveThreadID);
ScanCode:=MapVirtualKeyEx(wParam,0,KeyBoardLayOut);
ScanCode:=MapVirtualKeyEx(wParam,0,KeyBoardLayout);
status:=0;
if (ScanCode<>0) then
@ -693,7 +1009,7 @@ begin
status:=status or SCE_IME_KEYCODE_STATE_KEYCODE_VALID;
AChr[0]:=#0;
AChr[1]:=#0;
ToUnicodeEx(wParam,ScanCode,@KeyBoardState,@AChr,SizeOf(Achr),0,KeyBoardLayOut);
ToUnicodeEx(wParam,ScanCode,@KeyBoardState,@AChr,SizeOf(Achr),0,KeyBoardLayout);
if (AChr[0]<>#0) then
begin
status:=status or SCE_IME_KEYCODE_STATE_CHARACTER_VALID;
@ -711,26 +1027,24 @@ begin
end;
end;
if ((GetKeyState(VK_CONTROL) and $8000)<>0) then
if ((GetKeyState(VK_LCONTROL) and $8000)<>0) then
begin
if ((lParam and (KF_EXTENDED shl 16))=0) then
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_L_CTRL;
end else
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_R_CTRL;
end;
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_L_CTRL;
end;
if ((GetKeyState(VK_SHIFT) and $8000)<>0) then
if ((GetKeyState(VK_RCONTROL) and $8000)<>0) then
begin
if ((lParam and (KF_EXTENDED shl 16))=0) then
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_L_SHIFT;
end else
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_R_SHIFT;
end;
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_R_CTRL;
end;
if ((GetKeyState(VK_LSHIFT) and $8000)<>0) then
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_L_SHIFT;
end;
if ((GetKeyState(VK_RSHIFT) and $8000)<>0) then
begin
status:=status or SCE_IME_KEYCODE_STATE_MODIFIER_R_SHIFT;
end;
if ((GetKeyState(VK_LWIN) and $8000)<>0) then
@ -762,7 +1076,7 @@ begin
keycode.keycode :=scan_code_to_hid(scanCode);
keycode.character :=AChr[0];
keycode.status :=status;
keycode._type :=SCE_IME_KEYBOARD_TYPE_ENGLISH_US;
keycode._type :=keyboard_layout_to_type(KeyBoardLayout);
keycode.userId :=-1;
keycode.resourceId:=1;
GetCurrentTick(@keycode.timestamp);
@ -843,15 +1157,25 @@ begin
end;
function ps4_sceImeKeyboardGetInfo(resourceId:DWORD;info:pSceImeKeyboardInfo):Integer; SysV_ABI_CDecl;
var
ActiveThreadID:DWORD;
KeyBoardLayout:HKL;
begin
if (keyboard_init=0) then Exit(SCE_IME_ERROR_NOT_OPENED);
if (info=nil) then Exit(SCE_IME_ERROR_INVALID_ADDRESS);
_sig_lock;
ActiveThreadID:=GetWindowThreadProcessId(GetForegroundWindow,nil);
KeyBoardLayout:=GetKeyboardLayout(ActiveThreadID);
_sig_unlock;
info^:=Default(SceImeKeyboardInfo);
info^.userId:=-1;
info^.device:=SCE_IME_KEYBOARD_DEVICE_TYPE_KEYBOARD;
info^._type :=SCE_IME_KEYBOARD_TYPE_ENGLISH_US;
info^.userId :=-1;
info^.device :=SCE_IME_KEYBOARD_DEVICE_TYPE_KEYBOARD;
info^._type :=keyboard_layout_to_type(KeyBoardLayout);
info^.repeatDelay:=1;
info^.repeatRate :=1;
info^.status :=CE_IME_KEYBOARD_STATE_CONNECTED;