Macros

From Sputnik Wiki
Revision as of 13:38, 2 October 2013 by UberFoX (Talk | contribs)
Jump to: navigation, search

Contents

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.

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()

@lLOAD
@lACTIVATED
@lCLICK
@lTEXTCHANGED
@lMOUSECLICK
@lMOUSEDOUBLECLICK
@lMOUSEDOWN
@lMOUSEMOVE
@lMOUSEUP
@lMOUSEWHEEL
@lMOUSEENTER
@lMOUSEHOVER
@lMOUSELEAVE
@lLOSTFOCUS
@lLEAVE
@lKEYUP
@lKEYDOWN
@lKEYPRESS
@lGOTFOCUS
@lDISPOSED
@lTICKS
@lDELETEDROW
@lDELETINGROW
@lCELLENDEDIT
@lCELLBEGINEDIT
@lCHECKED

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
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox