==--------------------------------------------------------==

Run! 2
A ready-to-use command line.

Author: Ezzetabi
Email:  ezzetabi@katamail.com and I love to receive.
Homesite: http://crimsonfan.altervista.org
OS: WinXP/2000/NT/9x

==--------------------------------------------------------==
1. General info
2. Special commands
   2.1 !Commands
   2.2 Hotkeys
   2.3 Calculator
3. Custom ALT+x combos and Custom !commands
4. Settings
6. Thanks to...
7. History
8. Notes about the !commands that call hotkeys
==--------------------------------------------------------==
1. General info

This program is extremely simple. It is a ready to use command
line.

Just Alt+Tab to the command line or press the hotkey to pop it up 
and write your commands. You can use the Button Open to pop up the
File open dialog and select your file via GUI.

To move or resize Run! you have to press ALT in your keyboard and drag
 Run! window. If you drag in the right part of the window you'll resize
otherwise you'll move.

Any file you select that isn't executable will be opened with
its connected application.

If you write a invalid command, a string saying --Invalid command-- 
appears just before what you wrote. Don't bother deleting it, it is 
ignored by the interpreter. You may just correct your erroneus command.

Advanced feature: if you use three slashes '///' AT THE END of
the line you can select a non standard 'verb' to be performed on the file.
The verbs are the Right click menu actions on files.
E.g.
"c:\boot.ini"///print
is the same of right clicking on the boot.ini file and selecting "Print".

The verb 'find' starts the searching GUI on the folder you wrote.
E.g.
c:\///find

To see what are valids verbs for yours files types, you should check
in the registry HKEY_CLASSES_ROOT.

This feature can be used in batch files. In fact Run! takes the
first parameter as a command to execute and it quits just after,
since it quits just after you can't use command that 'waits' like !turnoff 10.

So if you need an instruction to print c:\boot.ini in a batch file
you can use:
Run!.exe c:\boot.ini///print

You may turn off your pc with
Run!.exe !turnoff!


If you use wildcards, all the files that match the wildcard criteria will
be treated. It may be be useful to apply the same actions to a number of files.
E.g.
c:\mydocs\*.doc///print to print all .doc documents in c:\mydocs\*.doc

To allow Run! to seek objects for your wildcard command also in subfolders
you can put the '///rec' string before ///verb if you are using one:
this will cause Run! to scan the subfolders of the object folder.
E.g.
c:\mydocs\*.doc///rec///print to print all .doc documents
in c:\mydocs\*.doc and all subfolders.

E.g. 2
c:\somewhere\*.txt///rec will start all *.txt file in c:\somewhere
and its subfolders.

Be careful using wildcards and ///rec: starting too many files at once might
crash your PC.

E.g.
c:\*.exe///rec is a crazy command that will force your Windows to
start every .exe in all the c:\ drive!


==--------------------------------------------------------==
2. Special commands
   2.1 ! Commands

In addition to executable files, you can use the following special commands:
Params between the [] brackets are optionals.

           Run! related.
!quit          : to terminate Run! (Also !exit and !q).
!help          : to show this file (Also !h) (or any other help.txt in the
                 program folder ;)
!home          : to open the folder where the program lies. Useful
                 for making new custom hotkeys.
!settings      : to open a GUI window where set your settings.
!reload        : to restart Run! in order to read new custom hotkeys. (Also !rl)
!rtra value    : to make Run! window translucent, value have to be
                 from 0 (almost invisible) to 200 (totally opaque).
!hide          : to hide Run!, as the hotkey does.
!clearhistory  : to clear the history. You can also quit, delete
                 the history.txt file and reload. (Also !ch)
                 There is no limit in the number of history items,
                 so it might be a good idea clear them from time to time.
!source        : to get the source code. This command creates a folder called
                 'source' in the program directory with inside all needed files for compiling.
!resetrun      : deletes all settings you made, non default size, pos, hotkeys, !custom... Everything.
!wall          : if the Wallpaper Randomizer is on, this command will reload an other
                 background picture immediately.
!walld         : if thw Wallpaper Randomizer is on, this command will open the wallpaper folder.
!sethotkey     : starts the GUI dialog to make a new shortcut in the Hotkeys
                 folder. After a !reload command, the initial of its name will
                 become a new ALT+x combination (see below).
!setnewc       : starts the GUI dialog to make a new shortcut for making new !commands.

           System related
!shell         : to activate/deactivate the Shell mode. Only Win2000/XP
                 if Run! crashes while in Shell mode just reboot, or,
                 if you know how to, excute Run! with /restore as
                 argument to reload explorer.exe
                 WARNING: DON'T USE THIS COMMAND IF YOU DON'T HAVE STANDARD
                 SHELL SETTINGS.
!crash         : to cause a BSOD, only in Win9x.
!lock          : to lock the computer. Only Win2000/XP
!logoff [min]  : to logout the current user. (Also !lf)
                 The [min] argument is a way to call the command delayed.
                 if min is present, min minutes are awaited before executing the command.
                 In the last minute a tooltip is shown for alerting that the command is going to be executed.
                 To disable a delayed command use min=0 (or negative).
!reboot        : to reboot the machine (Also !restart or !rb works).
!reboot!       : to force reboot the machine (Also !restart! or !rb!).
!shutdown [min]: to turn off the machine (Also !turnoff or !to). About [min] check the !logoff note.
!shutdown![min]: to force shutdown the machine (Also !turnoff! or !to!). About [min] check the !logoff note.
!suspend       : to suspend the computer. Not usable in Win9x (Also !sus)
!hibernate     : to hibernate the computer. Not usable in Win9x (Also !hid)
!emptybin      : to empty the recycle bin. (Also !eb)
!emptytempdir  : to empty the %temp% folder, every file that can't be deleted outright will be deleted bootime. (also !etd)
!bin           : to go in the recycle bin folder.
!printers      : to open the printer 'folder'.
!net           : to open network places 'folder'.
!opencd [drive:]: to open selected cd rom. E.g. !opencd d:
!closecd [drive:]: to close selected cd rom.
                   Both !opencd and !closecd called without
                   parameter will open or close the default CD rom
                   letter set in the !settings window. If none has
                   been set yet, the first letter cd drive will be opened.
                   (Also !cdopen/!cdclose or !co/!cc)
!smenu program : to start the first file in your Start menu folders (user one checked first)
                 that case match '*program*' tag. (Also !sm)
                 E.g. 
                 "C:\Documents and Settings\UserName\Start Menu\Programs\7-Zip\7-Zip File Manager.lnk"
                 will probably executed with '!sm 7-zip'
!cmd [directory] [command]: will start a Windows Console in the passed folder
                 and executes the command, the console is kept open just after. (Also !c)
                 The Console is the DOS prompt in Win98.
!delfiles      : starts a GUI dialog for deleting files. If the files are
                 'in-use' (undeletable), they will be deleted at boot time, using
                 PendingFileRenameOperations (WinXP/2k) or wininit.ini (Win9x/NT)
                 so if your file is still there !reboot is a good idea.
!delfolder     : starts a GUI dialog for deleting a folder. If any file
                 inside is in-use, they will be deleted at boot time.
!hardlink [original file, destination file] : Create a hard link, if you don't set original and destination
                 a GUI will be called for asking.(Also !hl) Hard links can only be made in the same NTFS partition. Only Win2000/XP.
!vup           : increase the master volume. Write the command, keep pressed Enter until
                 you reach the wanted volume. Only Win2000/XP. (Also !vu)
                 A sound is played to let you hear the difference
                 (can be deactivated).
!vdown         : decreases the master volume. Only Win2000/XP. (Also !vd)
!vzero         : mute/unmute the master volume. Only Win2000/XP. (Also !vz)

           Remote Shutdown related.
!reshutdown computername [secs] : Shutdown the computername after [secs] are passed, if [sec] miss the shutdown is immediate. Of course you need the right of turning off destination machine. (Also !returnoff or !rto) Only WinXP/2000/NT
!reshutdown! computername [secs] : Force shutdown the destination machine. Also (!returnoff! or !rto!) Only WinXP/2000/NT
!rerestart computername [secs] : Reboot the destination machine. (Also !rereboot or !rrb) Only WinXP/2000/NT
!rerestart! computername [secs] : Force reboot the destination machine. (Also !rereboot! or !rrb!) Only WinXP/2000/NT
!reundo comptername : Tries to undo any of the other remote commands in the computername machine. Also !rud Only WinXP/2000/NT

           Process/Windows related
!ps            : Starts Task Manager in Win2000/XP, shows a simple message with
                 a list of processes, with PID in Win9x/NT.

!ppri (process_name OR pid)/n :
                 to set the process priority at the n level.
                 n has to be 0 (lowest),1,2,3,4 or 5 (highest).
                 In Win9x only 0,1,2,3 are avaiable, where 3 is highest.

                 E.g.
                 !ppri winword.exe/3

                 2 is the default level (1 in Win9x).
                 Be careful using the highest, since the OS may stop
                 responding until that process ends or is killed.
                 Don't use any blanks between the process name
                 or pid and the priority level. Just a slash.

!close (process_name OR pid) : to close the process you asked.
                               E.g. !close winword.exe
!wtra num window title : to change alpha trasparency of window title.
                         from 0 almost invisible to 200 that is totally visible.

               If you omit the optionals window title parameters, in the combo box
               instead of the history will appear a list of open windows with
               your command in front. Ready to use.
!winclose [window title] : to close the window whose title is 'window_title'.
                         Any substring of window_title will work though.
                         It is caSe SenSiTiVE! All 'window_title'
                         parameters work that way.
!winkill [window title]  : as above, but the window process will be forcibly
                         terminated if the window doesn't close quickly enough.
                         E.g. waiting for a 'save' command.
!winmin [window title] : reduce 'window title' to icon. (Also !wm)
!winmax [window title] : maximize 'window title'
!wingo [window title] : to activate (give focus to) a window. (Also !wg)
!winhide [window title] : to hide a window.
!winshow       : to show every hidden (by Run!) windows. This command is
                 automatically cast before the program quits.
!winhiddenlist : to show a list of all hidden windows.
!g terms       : to start Google with 'terms' as search.

If multiple windows match the parameter criteria, the window that
was most recently active is closed/killed/activated/hidden/ect.

So if you have many similar title, win commands may seem to stop working
because they actually act on a window you hide! If you feel that is happening, 
just ALT+Tab all windows... ;)


   2.2 Hotkeys
Run! manages some special default hotkeys
{Tab}      : Look for possible file/dirnames that may complete
             what you are writing and put them in the ComboBox
             instead of the history. The first one will complete
             what you where writing, press again the second.
             For moving between Run! buttons use Shift+Tab
             instead.
             If 'Tabbing' you see the folder you were looking for
             and you want to seek deeper inside it, delete the trailing
             backslash (but keep the quote (") if there is one).
             Otherwise you can add the beginning of the name of the
             subfolder, in this case you can just ignore the quotes.
             E.g. "c:\Documents and Settings\"My user{tab} works.
SHIFT+ALT+h: hide/show Run! (this hotkey can be customized)
SHIFT+ALT+w: Give the focus to Run! (this hotkey can be customized)
             If Run! is hidden, it shows and takes the focus.


   2.2 Calculator
If you begin the line with a equal ( = ) sign the interpreter will
operate as a calculator.
It understands those operators
+ - * / ^ Mod Sin Cos Tan ASin ACos ATan Log Exp Fat ToHex ToBin ToOct FrHex FrOct FrBin

E.g. to know the square root of 4 you shold write
=4 ^ (1/2)
pressing Enter will returns
=2

Parentesis and operators order is respected so
=1 + 3 * 2 means 1 + (3 * 2) and NOT (1 + 3) * 2

Operators do the following things:
A part of the obvious + - * / and ^ others:
Mod(i2,i3) returns the modulus of i2 / i3.
Sin(f) returns the Sine of f
Cos(f) returns the Cosine of f
Tan(f) returns Sin(f)/Cos(f)
ASin(f) returns the arc in radiants that have f as Sine.
ACos(f) returns the arc in radiants that have f as Cosine.
ATan(f) returns the arc in radiants that have f as Tangent.
Log(f) returns the number you should use as exponent with e for obtaining f.
Exp(f) returns the value of e^f
Fat(i) returns i! in other words 1*2*3*4*5*...*i
ToHex(f) converts the f value in Hex
ToOct(f) converts the f value in Octal
ToBin(f) converts the f value in Binary
FrHex(f) converts f from Hex to decimal
FrOct(f) converts f from Oct to decimal
FrBin(f) converts f from Bin to decimal

Just a note about non decimal bases, all operators act using the base 10.
So you can't write 
=1001 * 10
hoping that Run! understands you meant 9*2 in binary
You have to use
=FrBin(1001) * FrBin(10)
Result 18, if you also want the result in binary you have to use
=ToBin(FrBin(1001) * FrBin(10))
Result is 10010, that is 18 in binary.

This calculator does not check for well wrote strings, but if you write nonsenses
the result is unpredicable.

==--------------------------------------------------------==
3. Custom ALT+x combos and Custom ! commands

The first time you run Run! a some folders are created
UserName\CustomC and UserName\Hotkeys. Those folder are scanned
every time Run! starts for .ini, .lnk and .pif files.

You may want to create any of this kind of files to set
new ! commands or to make ALT+x combination that will
start programs in Run!

About !commands the folder, of course, is UserName\CustomC
.ini files are read line per line, you should add lines with
the command, a equal sign and the relative command line.

In the .ini files you can set also special commands that actually
don't start anything, but instead sends keyboard pressures (emulated,
of course) to the system.
The sintax is command, equal sign, string 'hotkey:' (without quotes),
keys to press. ** Read the botton of this file about this.

  E.g.
  FILE    -> CustomC\FILE.INI
  LINE 01 -> test=c:\windows\system32\notepad.exe
  LINE 02 -> mygame="c:\games\war simulations\Tanks.exe"
  LINE 03 -> play=hotkey:^!{home}
  LINE 04 -> e=!c "c:\my favourite folder"

  will allow starting c:\windows\system32\notepad.exe with !test
  and "c:\games\war simulations\Tanks.exe" with !mygame .
  Writing !play will send a 'control+alt+home' to the system, that is a 
  Winamp's hotkey that means "Play".
  Writing !e will start the console in the c:\my favourite folder.

  .lnk and .pif files instead become new !commands from their name
  without extension.
  E.g. having a CustomC folder that...
  C:\Run!\CustomC>dir /b <enter>

  agame.lnk
  crimsonland.lnk

  C:\Run!\CustomC>

  In this case you'll be able to execute agame.lnk with !agame and
  crimsonland.lnk with !crimsonland


The idea about ALT+x custom combinations is quite similar.
The folder is UserName\Hotkeys, the .ini files have to keep, instead of
!commands, only a letter and the relative command line. If you put more
than one letter only the first one is read. The line is executed as it
is, so be careful about quotes (")

  E.g.
  FILE    -> HotKeys\FILE.INI
  LINE 01 -> t=c:\windows\system32\notepad.exe
  LINE 02 -> mygame="c:\games\war simulations\Tanks.exe"
  LINE 03 -> q=!shutdown!

in this case you'll start notepad with ALT+t and tanks.exe with
ALT+m.
While pressing ALT+m will call !shutdown! and turn off your pc.

.lnk and .pif files works in a similar way, the thing that count is
their first letter name.

  E.g. having a folder that...
  C:\Run!\Hotkeys>dir /b <enter>

  agame.lnk
  crimsonland.lnk

  C:\Run!\Hotkeys>

  will allow you starting agame.lnk with ALT+a and crimsonland.lnk
  with ALT+c.

==--------------------------------------------------------==
4. Settings

The !settings command causes a simple GUI window to appear.
By default every user will have his own settings.

The settings are quite self-explanatory, but I'll write some precisations.

You can't set as hotkey Win+B,D,E,F,L,M,R or U and Win+Shift+M as reserved
by Windows. Of course you can't also set both hotkeys as the same.

ExtraPath control keeps a list of folders where Run! will seek
files it can't find in normal execution. As the usual Path set.

ExtraPathExt keeps a list of extra extensions that Run!
will try to add to your command line to complete your commands.
E.g. you set .mp3 and call c:\music {enter} and the file c:\music.mp3
exists will be run.

ExtraSet inputbox instead keeps a list of new set you can add.
Set are used with the usual %% notation.
Be very careful about %var% and spaces, since it may seems that quotes (")
are not needed whereas actually they are.

E.g.
%WarGames% actually means c:\games\war sim\tank
Just write %wargames% will give a Invalid Command error since Run! will
try to start 'c:\games\war' and 'sim\tank' as parameter.
"%WarGames%" will work.

Run! moreover has some extra sets ready to use by default:
%desk% = user desktop folder name. Probably needs to be executed as "%desk%"
%deskc% = common desktop folder name.
%sys% = System32 folder name (System in W9x)
%startm% = user Start Menu folder name.
%startmc% = common Start Menu folder name.
%prg% = program folder name.

The WallRandomizer tab keep the info for activating the Random wallpaper
feature. This feature does not work if you have enabled Active Destop.
It accepts bmp, jpg, jif, jpeg, png, ico, jng, koa, iff, lbm, mng, pbm,
pcd, pcx, pgm, ppm, ras, tga, targa, tif, tiff, wbmp, wap, psd and cut files.
Just set the folder where look for this kind of files. Non .bmp files will 
be converted to .bmp and set as background.

The list of files is made when the program loads, so if you add or remove
files from the wallpaper folder a !reload is a good idea.
Of course the feature doesn't enable if the selected folder does not
contain any picture files.

The checkbox 'Activate borderless desktop' activate a nifty feature that will
move your mouse cursor in the other part of the screen the it reach a border.

==--------------------------------------------------------==
6. Thanks to...

Jon        and his companions for making a such great program
           that is AutoIt. *

Soulin     for many advices and testing.

Sugi       for making the fullblow dll that allows the remote shutdown commands!

Larry      for the fastest sorting func.

pacman     for the Dllcall of shell32.dll for Shellexecute and the _CalcRPN func.

this-is-me for the Dllcall of user32.dll that allow moving Run! and many advices.

bCheck     for topng, a command line program to convert pictures from a format to an other.
           that allow Run! settings as wallpaper many formats and not only .bmp .
           his home page is http://dana.ucc.nau.edu/~tsr22/apps/ 

Efreet     for correcting this help.txt file and some advices and testing.

* AutoIt is a great, free and open source scripting language.
  You really should go to http:\\www.autoitscript.com

==--------------------------------------------------------==
7. History
2.6.7.5 2005-03-05 Added a setting for selectiong the Google language in the !g command, non eglish users should be happy.
                   Fixed, a silly mistake in !hardlink command. Only inline worked...
2.6.7.3 2005-02-02 Fixed, the tooltip saying that a delayed command is going to be executed stay visibile even if add time with a new command.
	               Added few remote shutdown commands.
	               sound.wav is unpacked in the user directory, no more in the %TEMP% folder.
2.6.7.2 2005-01-29 Added the homesite in the header of this help file. (Forgot until now... o_O Thanks to Derek to notice)
				   Fixed !delfolder when selecting to delete all files inside a empty folder.
                   Fixed a bug in the !g command while searching keyword with pluses.
2.6.7.0 2005-01-05 Changed the calculator. It is much more powerful.
                   Added !hardlink .
2.6.5.0.2004-12-28 Added calculator functions.
2.6.1.0 2004-11-29 Just removed the useless taskbar item.
2.6.0.0 2004-11-28 Thanks to topng now Run! allows lots new types of background images, but its size almost doubled!
                   The history is separed for every user.
2.5.5.0 2004-11-26 Added: !emptytempdir.
                   Added: !win commands without parameters makes a list of all windows.
2.5.4.2 2004-11-17 Fixed: removed an old debug code that prevent Alt+q combo to work.
                   Fixed: strange problem with times for the Randomize Wallpaper problem.
2.5.4.1 2004-11-11 Added: Borderless desktop option.
                   Added: now you can call via command line every command not only file and verbs, including !custom.
                   Fixed a bug in the wallpaper changer, now it calculates the time to wait correctly.
2.5.0.0 2004-11-08 Added an internal wallpaper changer.
                   Added !wtra
                   Added many aliases.
                   Changed !delfolder, it should be faster and more reiable now.
                   Added a option for allowing Run! to make Start taskbar transparent when it
                   starts.
                   Added an option for activating/deactivating autohide in WinXp/2000 systems.
2.3.0.0 2004-11-04 Added !smenu
                   Added some missing letters in the hotkeys settings window. OPS.
                   Changes the !settings window, now I have more space for adding options. ;)
2.2.7.0 2004-10-27 Added !net, !winmin, !winmax. Now if the OS support it, Run! will become
                   almost invisible everytime it is without focus and returns to your !rtra level
                   when the focus is back.
2.2.6.0 2004-10-26 Changed how Run! reads !commands, so now you can make a new !command called
                   !cmdtest and the default !cmd won't bother you anymore.
                   Changed !cmd, now you can also write a command that will be executed in the folder.
                   Changed !cdopen and !cdclose, now you use ALL also from Run! line,
                   not only as default value.
                   Fixed combo boxes of !settings window didn't display correcly in W2000.
                   Added: !bin and !printers
2.2.5.0 2004-10-25 Added: !g to make google searchs via default browser.
2.2.4.1 2004-10-24 Fixed: a very stupid bug in ///rec, stringreplace('//rec'... BAH!
2.2.4.0 2004-10-23 Fixed: alt-x combos stopped working after the move/resize thing. Thanks Norbert.
                   Changed: to move/resize you have to keep pressed ALT while you drag.
                            changed (again) the min size of Run, to 150 pixel.
                   Added: !rtra to make Run window traslucent. This setting is remembered.
2.2.3.0 2004-10-22 Changed hotkeys, now you can set them freely.
                   Added !resetRun
2.2.2.5 2004-10-20 Changed the orizontal size thing already, now you can
                   set initial size in !settings GUI, but can also enlarge
                   the window dragging, drag in the right part of the window button
                   for enlarging. Every where else to move.
                   Since you can only enlarge the window and you can't reduce it
                   below the initial size, the default size has changed from
                   (desktopwidth * 3 / 5 - 90) to (desktopwidth / 3).
2.2.2.0            Added a option for setting orizontal size of Run!
                   Any value greater than 289 pixels and lesser than your
                   desktopwidth - 89 pixels will be accepted.
2.2.1.0 2004-10-19 Now the settings can be shared to all users or separed,
                   as you prefere selecting an option in the !settings GUI.
                   Technically, if a Everyone folder is present, users one are ignored.
2.2.0.0            customs !commands now can emulate keystrokes, this is set in
                   CustomC folders .ini files.
                   The help.txt has been corrected in many parts and remade
                   in decent english. Thanks to Efreet.
                   The Run! window is now moveable. Thanks to this-is-me, 
                   for the dllcall. Run! saves its position when it leaves
                   for every different screen resolution.
2.1.7.1 2004-10-18 Fixed the command !help, now it runs help.txt with quotes.
2.1.7.0 2004-10-17 Added !delfiles and !delfolder for deleting
                   annoying in-use files.
2.1.3.0 2004-10-16 Added !exit as alias of !quit,
                   Changed the _FileSearch func, now it is much faster.
                   Fixed a bug that would prevent correct execution
                   of command lines with parameters set in .ini
                   file inside CustomC and Hotkeys folders.
2.1.2.0 2004-10-15 Changed the way how the settings are saved.
                   Now, every user have a separed file/folder.
2.1.1.0            Added the option of playing a sound after
                   !vup and !vdown commands.
2.1.0.0 2004-10-14 Added !sethotkey and !setnewc.
                   Added -- Invalid command -- message.
                   Added wildcards support.
2.0.0.0 2004-10-13 First release.

==--------------------------------------------------------==
8. Notes about the !commands that call hotkeys

This feature use the AutoIt function Send() sintax, for more info check its manual entry.
Online manual links:
http://www.hiddensoft.com/autoit3/docs/functions/Send.htm
http://www.hiddensoft.com/autoit3/docs/appendix/SendKeys.htm

'!' sends an ALT keystroke
N.B. Some programs are very choosy about capital letters and ALT keys,
i.e. "!A" is different to "!a". The first says ALT+SHIFT+A, the second is ALT+a.
If in doubt, use lowercase!


'+' sends a SHIFT keystroke, therefore "Hell+o" would send the text "HellO".
"!+a" would send "ALT+SHIFT+a".


'^' sends a CONTROL keystroke, therefore "^!a" would send "CTRL+ALT+a".
N.B. Some programs are very choosy about capital letters and CTRL keys,
i.e. "^A" is different to "^a". The first says CTRL+SHIFT+A, the second is CTRL+a.
If in doubt, use lowercase!


'#' sends a Windows keystroke; therefore, "#d" would send Win+d which minimize all windows.


CTRL+ALT+DEL '^!{del}' can't be sent as Windows reserved combination.


This specials in bracket strings sends the key wrote just after.
So while !a sends a ALT+a a {!}a actually sends a exlamative point and an 'a'.

Every other char is sent just writing it.
E.g. !e hello will send ALT+e, blank, h, e, l, l,o.

{!} ! 
{#} # 
{+} + 
{^} ^ 
{{} { 
{}} } 
{SPACE} SPACE 
{ENTER} ENTER key on the main keyboard 
{ALT} ALT 
{BS} BACKSPACE 
{DEL} DELETE 
{UP} Cursor up 
{DOWN} Cursor down 
{LEFT} Cursor left 
{RIGHT} Cursor right 
{HOME} HOME 
{END} END 
{ESC} ESCAPE 
{INS} INS 
{PGUP} PageUp 
{PGDN} PageDown 
{F1} - {F12} Function keys 
{TAB} TAB 
{PRINTSCREEN} Print Screen key 
{LWIN} Left Windows key 
{RWIN} Right Windows key 
{NUMLOCK on} NUMLOCK (on/off/toggle) 
{CAPSLOCK off} CAPSLOCK (on/off/toggle) 
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle) 
{PAUSE} PAUSE 
{NUMPAD0} - {NUMPAD9} Numpad digits 
{NUMPADMULT} Numpad Multiply 
{NUMPADADD} Numpad Add 
{NUMPADSUB} Numpad Subtract 
{NUMPADDIV} Numpad Divide 
{NUMPADDOT} Numpad period 
{NUMPADENTER} Enter key on the numpad 
{APPSKEY} Windows App key 
{LALT} Left ALT key 
{RALT} Right ALT key 
{LCTRL} Left CTRL key 
{RCTRL} Right CTRL key 
{LSHIFT} Left Shift key 
{RSHIFT} Right Shift key 
{SLEEP} Computer SLEEP key 
{ASC nnnn} Send the ALT+nnnn key combination 