Macros
(→Math) |
(→Links for use with GUILink()) |
||
Line 426: | Line 426: | ||
<pre> | <pre> | ||
− | @ | + | @lClick |
− | @ | + | @lMouseUp |
− | @ | + | @lMouseDown |
− | @ | + | @lMouseMove |
− | @ | + | @lMouseClick |
− | @ | + | @lMouseDoubleClick |
− | @ | + | @lKeyUp |
− | @ | + | @lKeyDown |
− | @ | + | @lKeyPress |
− | @ | + | @lTextChanged |
− | @ | + | @lCellBeginEdit |
− | @ | + | @lCellEndEdit |
− | @ | + | @lDeletingRow |
− | @ | + | @lDeletedRow |
− | @ | + | @lTick |
− | @ | + | @lSelectedIndexChanged |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
Revision as of 14:59, 5 October 2013
Macros
Custom Macros
You can define your own custom macros as well as using existing ones.
If you make a custom macro with same name as an existing one yours will replace the old one.
If you make a custom macro that has the name of an already existing one yours will replace the old one.
Warning #define is case sensitive but what comes after it is not
Example of creating an Bool macro:
#define Test true say VarDump(@Test); // Print the macro //or #define Test false say VarDump(@Test); // Print the macro // For a value to be an Bool it must contain either true or false
Example of creating an Integer macro:
#define Test 100 say VarDump(@Test); // Print the macro // For a value to be an Integer it must exhibit no floating point characteristics // Note - All Integer macros use Int64 and it is not possible to use lower Integers
Example of creating a Float (single precision floating point) macro:
#define Test 100f say VarDump(@Test); // Print the macro // or #define Test 100.0f say VarDump(@Test); // Print the macro // For a value to be a float it must end with f
Example of creating a Double (double precision floating point) macro:
#define Test 100.0 say VarDump(@Test); // Print the macro // For a value to be double it must have floating point characteristic // and it must not end with an f (otherwise it will be a float)
Example of creating a String (allows \n escapes etc) macro:
#define Test "The\nCat" say VarDump(@Test); // Print the macro // For a value to be a String that parses escapes it must be inside "" quotes
Example of creating a Static String (does not allow \n escapes etc) macro:
#define Test 'The\nCat' say VarDump(@Test); // Print the macro // For a value to be a Static String that does not parses escapes // it must be inside '' quotes
Example of creating a Char (allows \n escapes etc) macro:
#define Test @'A' say VarDump(@Test); // Print the macro // with escape #define Test @'\0' say VarDump(@Test); // Print the macro // For a value to be a char it must begin with @ and contain letters inside '' quotes
Example of creating a Function macro:
// Define a new function called shout() that will link to print() #define shout($x) print($x) shout "Hello"; // Prints Hello // The classic C MIN macro #define MinVal($X, $Y) (($X) < ($Y) ? ($X) : ($Y)) say MinVal(10, 20); // 10 say MinVal(20, 10); // 10 // For a value to be a Function macro the following must be true: // * It must start with an Identifier with ( ) such as MinValue() // * There must be TWO yes 2 spaces after the ) of the MinValue() // * There must be at least ONE character for the body immediately // after the two spaces // // This is how a function is defined
Example of creating a Function link macro:
// Define a new function called shout() that will link to print() // Unlike the one above this will support infinite arguments #define shout() print shout("Hello", " world!"); // Prints Hello // For a value to be a Function Link macro the following must be true: // * It must start with an Identifier with ( ) such as MinValue() // * There must be TWO yes 2 spaces after the ) of the MinValue() // * There must be at least ONE character for the body immediately // after the two spaces // * The function you are linking to must just contain its name // with no parameters and no ( ) block // // This type is similar to the one above but instead of having fixed // arguments it allows for infinite arguments
For Functions
@ARGS // Stores all arguments passed to a function allowing for unlimited arguments.
Language Detection
@LANG // Return an array containing language information on the current OS // Example: // my List ($Name, $DisplayName, $EnglishName, $TwoLetterISO, $ThreeLetterISO, $LCID) = @Lang;
Directory/Path
@COMMONFILESDIR // Common Files folder @WINDIR // The directory of windows @SYSDIR // The directory of windows system directory @CURDIR // The current working directory @TEMPDIR // The current system's temporary folder @EXEDIR // The directory of the Sputnik exe @SCRIPTDIR // The directory where the current script is at runtime @FILECASE // Returns TRUE if the file system is case insensitive
Strings
@CRLF // @CR . @LF ;Occasionally used for line breaks. @LFCR // @LF . @CR ;Stupidly used for line breaks. @CR // Carriage return, Chr(13); sometimes used for line breaks. @LF // Line feed, Chr(10); typically used for line breaks. @TAB // Tab character, Chr(9). @NL // The newline that the current windows likes best. @N // The newline or <BR> depending if Sputnik is #cgi or yet @VT // Vertical Tab, Chr(11); This character is rarely used. @FF // Form Feed, Chr(12); This character is also known as "New Page". @SPACE // Normal Space, Chr(32) @NBSP // No-Break Space, Chr(160) // The No-Break Space character is used to represent a space where // a line break is not allowed. It is often used in source code for // indentation.
Character Sets
These are returned as a string if you wish to get an array you will need to split the string into an array of each character.
@EURO // The Euro Currency Sign; ChrW(8364) @NUMBER // 0123456789 @DIGIT // 0123456789 @LETTER // abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ @LETTEREXT // This set includes all the letters which are part of the extended // characters in the first 256 characters (ANSI) @ALPHANUMERIC // This set includes all the characters in @Letter and @Number @PRINTABLE // This set includes all standard characters that can be printed // onscreen. This includes the characters from Chr(32) to Chr(127) // and Chr(160) (No-Break Space). The No-Break Space character was // included since it is often used in source code. @PRINTABLEEXT // This set includes all the printable characters above Chr(127). // Although rarely used in programming languages, they could be // used, for instance, as valid characters in a string literal. @WHITESPACE // This set includes all characters that are normally considered // whitespace and ignored by the parser. The set consists of the // Space, Horizontal Tab, Line Feed, Vertical Tab, Form Feed, // Carriage Return and No-Break Space. @CONTROLS // This set includes the characters from Chr(1) to Chr(31) // and from Chr(127) to Chr(159). @ANSIMAPPED // This set contains the characters between Chr(128) and Chr(159) // that have different values in Unicode. @ANSIPRINTABLE // This set contains all printable characters available in ANSI. // Essentially, this is a union of @Printable@, @PrintableExt // and @ANSIMapped. @ALLVALID // The {All Valid} character set contains every valid character // in the Basic Multilingual Plane of the Unicode Character Set. // This includes the characters from ChrW(1) to ChrW(55295) and // ChrW(56320) to ChrW(65519).
Language Sets
@LatinExt // Latin Extended; ChrW(256) to ChrW(687) @LatinExtAdd // Latin Extended Additional; ChrW(7680) to ChrW(7935) @Greek // ChrW(880) to ChrW(1023) @GreekExt // Greek Extended; ChrW(7936) to ChrW(8191) @Cyrillic // ChrW(1024) to ChrW(1279) @CyrillicSup // Cyrillic Supplementary; ChrW(1280) to ChrW(1327) @Armenian // ChrW(1328) to ChrW(1423) @Hebrew // ChrW(1424) to ChrW(1535) @Arabic // ChrW(1536) to ChrW(1791) @Syriac // ChrW(1792) to ChrW(1871) @Thaana // ChrW(1920) to ChrW(1983) @Devanagari // ChrW(2304) to ChrW(2431) @Bengali // ChrW(2432) to ChrW(2559) @Gurmukhi // ChrW(2560) to ChrW(2687) @Gujarati // ChrW(2688) to ChrW(2815) @Oriya // ChrW(2816) to ChrW(2943) @Tamil // ChrW(2944) to ChrW(3071) @Telugu // ChrW(3072) to ChrW(3199) @Kannada // ChrW(3200) to ChrW(3327) @Malayalam // ChrW(3328) to ChrW(3455) @Sinhala // ChrW(3456) to ChrW(3583) @Thai // ChrW(3584) to ChrW(3711) @Lao // ChrW(3712) to ChrW(3839) @Tibetan // ChrW(3840) to ChrW(4095) @Myanmar // ChrW(4096) to ChrW(4255) @Georgian // ChrW(4256) to ChrW(4351) @Hangul Jamo // ChrW(4352) to ChrW(4607) @Ethiopic // ChrW(4608) to ChrW(4991) @Cherokee // ChrW(5024) to ChrW(5119) @Ogham // ChrW(5760) to ChrW(5791) @Runic // ChrW(5792) to ChrW(5887) @Tagalog // ChrW(5888) to ChrW(5919) @Hanunoo // ChrW(5920) to ChrW(5951) @Buhid // ChrW(5952) to ChrW(5983) @Tagbanwa // ChrW(5984) to ChrW(6015) @Khmer // ChrW(6016) to ChrW(6143) @Mongolian // ChrW(6144) to ChrW(6319) @Kanbun // ChrW(12688) to ChrW(12703) @Bopomofo // ChrW(12544) to ChrW(12591) @BopomofoExt // Bopomofo Extended; ChrW(12704) to ChrW(12735) @JapPunct // Japanese-style punctuation; ChrW(12288) to ChrW(12351) @JapRomKat // Full-width Roman characters and half-width Katakana; ChrW(65280) to ChrW(65519) @Hiragana // ChrW(12352) to ChrW(12447) @Katakana // ChrW(12448) to ChrW(12543) @Kanji // CJK unifed ideographs - Common and uncommon Kanji; ChrW(19968) to ChrW(40879)
Math
@PI // Mathematical constant that is the ratio of any circle's circumference to its diameter @E // Represents the natural logarithmic base, specified by the constant, e. @LOG2E // Log(@E, 2) = 1.4426950408889634074 @LOG10E // Log10(@E) = 0.43429448190325182765 @LN2 // Log(2) = 0.69314718055994530942 @LN10 // Log(10) = 2.30258509299404568402 @PI_2 // @PI/2 = 1.57079632679489661923 @PI_4 // @PI/4 = 0.78539816339744830962 @1_PI // 1/@PI = 0.31830988618379067154 @2_PI // 2/@PI = 0.63661977236758134308 @SQRTPI // Sqrt(@PI) = 1.77245385090551602729 @2_SQRTPI // 2/Sqrt(@PI) = 1.12837916709551257390 @SQRT2 // Sqrt(2) = 1.4142135623731 @SQRT3 // Sqrt(3) = 1.73205080756887729352 @SQRT1_2 // 1/Sqrt(2) = 0.70710678118654752440 @LNPI // Log(@PI) = 1.14472988584940017414 @EULER // Euler constant = 0.57721566490153286061
Variable Limits etc
@CHAR_MIN // Represents the smallest possible value of a unicode character @CHAR_MAX // Represents the largest possible value of a unicode character @BYTE_MIN // Represents the smallest possible value of a unsigned 8-bit integer @BYTE_MAX // Represents the largest possible value of a unsigned 8-bit integer @SBYTE_MIN // Represents the smallest possible value of a signed 8-bit integer @SBYTE_MAX // Represents the largest possible value of a signed 8-bit integer @USHORT_MIN // Represents the smallest possible value of a unsigned 16-bit integer @USHORT_MAX // Represents the largest possible value of a unsigned 16-bit integer @UINT16_MIN // Represents the smallest possible value of a unsigned 16-bit integer @UINT16_MAX // Represents the largest possible value of a unsigned 16-bit integer @UINT_MIN // Represents the smallest possible value of a unsigned 32-bit integer @UINT_MAX // Represents the largest possible value of a unsigned 32-bit integer @UINT32_MIN // Represents the smallest possible value of a unsigned 32-bit integer @UINT32_MAX // Represents the largest possible value of a unsigned 32-bit integer @ULONG_MIN // Represents the smallest possible value of a unsigned 64-bit integer @ULONG_MAX // Represents the largest possible value of a unsigned 64-bit integer @UINT64_MIN // Represents the smallest possible value of a unsigned 64-bit integer @UINT64_MAX // Represents the largest possible value of a unsigned 64-bit integer @SHORT_MIN // Represents the smallest possible value of a signed 16-bit integer @SHORT_MAX // Represents the largest possible value of a signed 16-bit integer @INT16_MIN // Represents the smallest possible value of a signed 16-bit integer @INT16_MAX // Represents the largest possible value of a signed 16-bit integer @INT_MIN // Represents the smallest possible value of a signed 32-bit integer @INT_MAX // Represents the largest possible value of a signed 32-bit integer @INT32_MIN // Represents the smallest possible value of a signed 32-bit integer @INT32_MAX // Represents the largest possible value of a signed 32-bit integer @LONG_MIN // Represents the smallest possible value of a signed 64-bit integer @LONG_MAX // Represents the largest possible value of a signed 64-bit integer @INT64_MIN // Represents the smallest possible value of a signed 64-bit integer @INT64_MAX // Represents the largest possible value of a signed 64-bit integer @DOUBLE_POSINF // Represents positive infinity @DOUBLE_NEGINF // Represents negative infinity @DOUBLE_NAN // Represents (Not a number) NaN @DOUBLE_MIN // Represents the smallest possible value of a float @DOUBLE_MAX // Represents the largest possible value of a float @DOUBLE_EPSILON // Represents the smallest positive double value greater than zero @FLOAT_POSINF // Represents positive infinity @FLOAT_NEGINF // Represents negative infinity @FLOAT_NAN // Represents (Not a number) NaN @FLOAT_MIN // Represents the smallest possible value of a float @FLOAT_MAX // Represents the largest possible value of a float @FLOAT_EPSILON // Represents the smallest positive float value greater than zero
Variable size etc
Useful for use with memory functions
// Pointers (Pointers will either be 32-bit or 64-bit // depending on which Sputnik is using however as long as // these macros are used your functions will continue to work // regardless if using 32 or 64 bit Sputnik. @PTRSize // Represents the size in bytes of pointers @PTRZero // Represents a pointer or handle that has been initialized to zero @UPTRSize // Represents the size in bytes of unsigned pointers @UPTRZero // Represents an unsigned pointer or handle that has been initialized to zero // Others @CharSize // Represents the size in bytes of a char @BoolSize // Represents the size in bytes of a boolean @ByteSize // Represents the size in bytes of a byte @SByteSize // Represents the size in bytes of a sbyte (signed byte) @Int16Size // Represents the size in bytes of an int16 @Int32Size // Represents the size in bytes of an int32 @Int64Size // Represents the size in bytes of an int64 @UInt16Size // Represents the size in bytes of an uint16 @UInt32Size // Represents the size in bytes of an uint32 @UInt64Size // Represents the size in bytes of an uint64 @FloatSize // Represents the size in bytes of an float @DoubleSize // Represents the size in bytes of an double // Characters @ACSize // Represents the size in bytes an ASCII string character @UCSize // Represents the size in bytes a Sputnik string character (UTF8)
Date & Time
@DATETIMENOW // Stores the current date and time as a string @MSEC // Milliseconds value of clock. Range is 00 to 999 @SEC // Seconds value of clock. Range is 00 to 59 @MIN // Minutes value of clock. Range is 00 to 59 @HOUR // Hours value of clock in 24-hour format. Range is 00 to 23 @WDAY // Numeric day of week. Range is 1 to 7 which corresponds to Sunday through Saturday @MDAY // Current day of month. Range is 01 to 31 @MON // Current month. Range is 01 to 12 @YDAY // Current day of year. Range is 1 to 366 (or 365 if not a leap year) @YEAR // Current four-digit year. @TICKS // The number of ticks that represent the current date and time (A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.) @TIME // Get a 10 element array containing in this order; @MSEC, @SEC, @MIN, @HOUR, @WDAY, @MDAY, @MON, @YDAY, @YEAR, @TICKS // Heres an example of how to use @Time to create a useable list : List ($MSec, $Sec, $Min, $Hour, $WDay, $MDay, $Mon, $YDay, $Year, $Ticks) = @TIME; println("MSec: " . $MSec); println("Sec: " . $Sec); println("Min: " . $Min); println("Hour: " . $Hour); println("WDay: " . $WDay); println("MDay: " . $MDay); println("Mon: " . $Mon); println("YDay: " . $YDay); println("Year: " . $Year); println("Ticks: " . $Ticks); // A simple easy to use formatted date/time my List ($MSec, $Sec, $Min, $Hour, $WDay, $MDay, $Mon, $YDay, $Year, $Ticks) = @TIME; if ($Sec < 10) { $Sec = "0$sec"; } if ($Min < 10) { $Min = "0$min"; } if ($Hour < 10) { $Hour = "0$hour"; } if ($MDay < 10) { $MDay = "0$mday"; } if ($Mon < 10) { $Mon = "0$Mon"; } my $Date = "$MDay-$Mon-$Year $Hour:$Min"; echo $Date; // Prints 13-09-2013 20:44
Error
@ERROR // Some functions etc store information on an error that happened in this variable // Not all functions however if the given function supports the @ERROR macro it will // say so on its wiki page. Functions that support the @ERROR macro always set the // @ERROR variable to NULL before executing their function so if there was no error // the @ERROR variable will be NULL a simple if check should suffice if(@ERROR). // Note - Few if any functions support this right now
Misc
@X64 // True Sputnik process is 64BIT or False if 32BIT @GUI // True or False if SputnikW is being run instead of Sputnik @CONSOLEVISIBLE // True or False if Console window is visible @COMPILED // True or False if the script is being run from a compiled exe instead of as a source file @GUID // Generate a new globally unique identifier (GUID) @GUIDZero // A GUID with all its values zeroed to compare a new or existing @GUID with @ERROR // Stores the state of the last error which can be useful to find out exactly what happened. @CURRENCY // Stores the local currency symbol that the computer is using such as $ or £ etc. @GROUPS // Stores the amount of groups captured in the last regex match operation. @DESKTOPWIDTH // Current width of the desktop the program is running on. @DESKTOPHEIGHT // Current height of the desktop the program is running on. @DOMAIN // The computers currently network domain name associated with current user. @USER // The name of the user currently logged in to windows. @MACHINENAME // Get NetBIOS name of this computer. @TICKCOUNT // The number of miliseconds elapsed since the system started. @INVALIDPATHCHARS // String of characters that are not allowed in path names. @INVALIDFILENAMECHARS // String of characters that are not allowed in file names. @VOLUMESEPARATORCHAR // Provides a platform-specific volume separator character. @PATHSEPARATOR // A platform-specific separator character used to separate path strings in environment variables. @DIRECTORYSEPARATORCHAR // Provides a platform-specific character used to separate directory levels in a path string that reflects a hierarchical file system organization. @ALTDIRECTORYSEPARATORCHAR // Provides a platform-specific alternate character used to separate directory levels in a path string that reflects a hierarchical file system organization.
Links for use with GUILink()
@lClick @lMouseUp @lMouseDown @lMouseMove @lMouseClick @lMouseDoubleClick @lKeyUp @lKeyDown @lKeyPress @lTextChanged @lCellBeginEdit @lCellEndEdit @lDeletingRow @lDeletedRow @lTick @lSelectedIndexChanged
Mouse Key Constants for use with GUILink etc
@MouseNone @MouseLeft @MouseMiddle @MouseRight @MouseXButton1 @MouseXButton2
Key Constants for use with many things (Bascially equal to VirtualKey Codes)
This are often used to check the $arg on GUI key pressing events however it could also be used with APIs such as GetKeyState()
@None -----> Hex code of the key: 0x00000000 @LButton -----> Hex code of the key: 0x00000001 @RButton -----> Hex code of the key: 0x00000002 @Cancel -----> Hex code of the key: 0x00000003 @MButton -----> Hex code of the key: 0x00000004 @XButton1 -----> Hex code of the key: 0x00000005 @XButton2 -----> Hex code of the key: 0x00000006 @Back -----> Hex code of the key: 0x00000008 @Tab -----> Hex code of the key: 0x00000009 @LineFeed -----> Hex code of the key: 0x0000000A @Clear -----> Hex code of the key: 0x0000000C @Return -----> Hex code of the key: 0x0000000D @Enter -----> Hex code of the key: 0x0000000D @ShiftKey -----> Hex code of the key: 0x00000010 @ControlKey -----> Hex code of the key: 0x00000011 @Menu -----> Hex code of the key: 0x00000012 @Pause -----> Hex code of the key: 0x00000013 @CapsLock -----> Hex code of the key: 0x00000014 @Capital -----> Hex code of the key: 0x00000014 @KanaMode -----> Hex code of the key: 0x00000015 @HanguelMode -----> Hex code of the key: 0x00000015 @HangulMode -----> Hex code of the key: 0x00000015 @JunjaMode -----> Hex code of the key: 0x00000017 @FinalMode -----> Hex code of the key: 0x00000018 @KanjiMode -----> Hex code of the key: 0x00000019 @HanjaMode -----> Hex code of the key: 0x00000019 @Escape -----> Hex code of the key: 0x0000001B @IMEConvert -----> Hex code of the key: 0x0000001C @IMENonconvert -----> Hex code of the key: 0x0000001D @IMEAceept -----> Hex code of the key: 0x0000001E @IMEModeChange -----> Hex code of the key: 0x0000001F @Space -----> Hex code of the key: 0x00000020 @PageUp -----> Hex code of the key: 0x00000021 @Prior -----> Hex code of the key: 0x00000021 @PageDown -----> Hex code of the key: 0x00000022 @Next -----> Hex code of the key: 0x00000022 @End -----> Hex code of the key: 0x00000023 @Home -----> Hex code of the key: 0x00000024 @Left -----> Hex code of the key: 0x00000025 @Up -----> Hex code of the key: 0x00000026 @Right -----> Hex code of the key: 0x00000027 @Down -----> Hex code of the key: 0x00000028 @Select -----> Hex code of the key: 0x00000029 @Print -----> Hex code of the key: 0x0000002A @Execute -----> Hex code of the key: 0x0000002B @PrintScreen -----> Hex code of the key: 0x0000002C @Snapshot -----> Hex code of the key: 0x0000002C @Insert -----> Hex code of the key: 0x0000002D @Delete -----> Hex code of the key: 0x0000002E @Help -----> Hex code of the key: 0x0000002F @D0 -----> Hex code of the key: 0x00000030 @D1 -----> Hex code of the key: 0x00000031 @D2 -----> Hex code of the key: 0x00000032 @D3 -----> Hex code of the key: 0x00000033 @D4 -----> Hex code of the key: 0x00000034 @D5 -----> Hex code of the key: 0x00000035 @D6 -----> Hex code of the key: 0x00000036 @D7 -----> Hex code of the key: 0x00000037 @D8 -----> Hex code of the key: 0x00000038 @D9 -----> Hex code of the key: 0x00000039 @A -----> Hex code of the key: 0x00000041 @B -----> Hex code of the key: 0x00000042 @C -----> Hex code of the key: 0x00000043 @D -----> Hex code of the key: 0x00000044 @E -----> Hex code of the key: 0x00000045 @F -----> Hex code of the key: 0x00000046 @G -----> Hex code of the key: 0x00000047 @H -----> Hex code of the key: 0x00000048 @I -----> Hex code of the key: 0x00000049 @J -----> Hex code of the key: 0x0000004A @K -----> Hex code of the key: 0x0000004B @L -----> Hex code of the key: 0x0000004C @M -----> Hex code of the key: 0x0000004D @N -----> Hex code of the key: 0x0000004E @O -----> Hex code of the key: 0x0000004F @P -----> Hex code of the key: 0x00000050 @Q -----> Hex code of the key: 0x00000051 @R -----> Hex code of the key: 0x00000052 @S -----> Hex code of the key: 0x00000053 @T -----> Hex code of the key: 0x00000054 @U -----> Hex code of the key: 0x00000055 @V -----> Hex code of the key: 0x00000056 @W -----> Hex code of the key: 0x00000057 @X -----> Hex code of the key: 0x00000058 @Y -----> Hex code of the key: 0x00000059 @Z -----> Hex code of the key: 0x0000005A @LWin -----> Hex code of the key: 0x0000005B @RWin -----> Hex code of the key: 0x0000005C @Apps -----> Hex code of the key: 0x0000005D @NumPad0 -----> Hex code of the key: 0x00000060 @NumPad1 -----> Hex code of the key: 0x00000061 @NumPad2 -----> Hex code of the key: 0x00000062 @NumPad3 -----> Hex code of the key: 0x00000063 @NumPad4 -----> Hex code of the key: 0x00000064 @NumPad5 -----> Hex code of the key: 0x00000065 @NumPad6 -----> Hex code of the key: 0x00000066 @NumPad7 -----> Hex code of the key: 0x00000067 @NumPad8 -----> Hex code of the key: 0x00000068 @NumPad9 -----> Hex code of the key: 0x00000069 @Multiply -----> Hex code of the key: 0x0000006A @Add -----> Hex code of the key: 0x0000006B @Separator -----> Hex code of the key: 0x0000006C @Subtract -----> Hex code of the key: 0x0000006D @Decimal -----> Hex code of the key: 0x0000006E @Divide -----> Hex code of the key: 0x0000006F @F1 -----> Hex code of the key: 0x00000070 @F2 -----> Hex code of the key: 0x00000071 @F3 -----> Hex code of the key: 0x00000072 @F4 -----> Hex code of the key: 0x00000073 @F5 -----> Hex code of the key: 0x00000074 @F6 -----> Hex code of the key: 0x00000075 @F7 -----> Hex code of the key: 0x00000076 @F8 -----> Hex code of the key: 0x00000077 @F9 -----> Hex code of the key: 0x00000078 @F10 -----> Hex code of the key: 0x00000079 @F11 -----> Hex code of the key: 0x0000007A @F12 -----> Hex code of the key: 0x0000007B @F13 -----> Hex code of the key: 0x0000007C @F14 -----> Hex code of the key: 0x0000007D @F15 -----> Hex code of the key: 0x0000007E @F16 -----> Hex code of the key: 0x0000007F @F17 -----> Hex code of the key: 0x00000080 @F18 -----> Hex code of the key: 0x00000081 @F19 -----> Hex code of the key: 0x00000082 @F20 -----> Hex code of the key: 0x00000083 @F21 -----> Hex code of the key: 0x00000084 @F22 -----> Hex code of the key: 0x00000085 @F23 -----> Hex code of the key: 0x00000086 @F24 -----> Hex code of the key: 0x00000087 @NumLock -----> Hex code of the key: 0x00000090 @Scroll -----> Hex code of the key: 0x00000091 @LShiftKey -----> Hex code of the key: 0x000000A0 @RShiftKey -----> Hex code of the key: 0x000000A1 @LControlKey -----> Hex code of the key: 0x000000A2 @RControlKey -----> Hex code of the key: 0x000000A3 @LMenu -----> Hex code of the key: 0x000000A4 @RMenu -----> Hex code of the key: 0x000000A5 @BrowserBack -----> Hex code of the key: 0x000000A6 @BrowserForward -----> Hex code of the key: 0x000000A7 @BrowserRefresh -----> Hex code of the key: 0x000000A8 @BrowserStop -----> Hex code of the key: 0x000000A9 @BrowserSearch -----> Hex code of the key: 0x000000AA @BrowserFavorites -----> Hex code of the key: 0x000000AB @BrowserHome -----> Hex code of the key: 0x000000AC @VolumeMute -----> Hex code of the key: 0x000000AD @VolumeDown -----> Hex code of the key: 0x000000AE @VolumeUp -----> Hex code of the key: 0x000000AF @MediaNextTrack -----> Hex code of the key: 0x000000B0 @MediaPreviousTrack -----> Hex code of the key: 0x000000B1 @MediaStop -----> Hex code of the key: 0x000000B2 @MediaPlayPause -----> Hex code of the key: 0x000000B3 @LaunchMail -----> Hex code of the key: 0x000000B4 @SelectMedia -----> Hex code of the key: 0x000000B5 @LaunchApplication1 -----> Hex code of the key: 0x000000B6 @LaunchApplication2 -----> Hex code of the key: 0x000000B7 @OemSemicolon -----> Hex code of the key: 0x000000BA @Oemplus -----> Hex code of the key: 0x000000BB @Oemcomma -----> Hex code of the key: 0x000000BC @OemMinus -----> Hex code of the key: 0x000000BD @OemPeriod -----> Hex code of the key: 0x000000BE @OemQuestion -----> Hex code of the key: 0x000000BF @Oemtilde -----> Hex code of the key: 0x000000C0 @OemOpenBrackets -----> Hex code of the key: 0x000000DB @OemPipe -----> Hex code of the key: 0x000000DC @OemCloseBrackets -----> Hex code of the key: 0x000000DD @OemQuotes -----> Hex code of the key: 0x000000DE @Oem8 -----> Hex code of the key: 0x000000DF @OemBackslash -----> Hex code of the key: 0x000000E2 @ProcessKey -----> Hex code of the key: 0x000000E5 @Attn -----> Hex code of the key: 0x000000F6 @Crsel -----> Hex code of the key: 0x000000F7 @Exsel -----> Hex code of the key: 0x000000F8 @EraseEof -----> Hex code of the key: 0x000000F9 @Play -----> Hex code of the key: 0x000000FA @Zoom -----> Hex code of the key: 0x000000FB @NoName -----> Hex code of the key: 0x000000FC @Pa1 -----> Hex code of the key: 0x000000FD @OemClear -----> Hex code of the key: 0x000000FE @KeyCode -----> Hex code of the key: 0x0000FFFF @Shift -----> Hex code of the key: 0x00010000 @Control -----> Hex code of the key: 0x00020000 @Alt -----> Hex code of the key: 0x00040000 @Modifiers -----> Hex code of the key: 0xFFFF0000 @IMEAccept -----> Hex code of the key: 0x0000001E @Oem1 -----> Hex code of the key: 0x000000BA @Oem102 -----> Hex code of the key: 0x000000E2 @Oem2 -----> Hex code of the key: 0x000000BF @Oem3 -----> Hex code of the key: 0x000000C0 @Oem4 -----> Hex code of the key: 0x000000DB @Oem5 -----> Hex code of the key: 0x000000DC @Oem6 -----> Hex code of the key: 0x000000DD @Oem7 -----> Hex code of the key: 0x000000DE @Packet -----> Hex code of the key: 0x000000E7 @Sleep -----> Hex code of the key: 0x0000005F