Msg
The MSG internal function (without the dollar sign) is only available for Windows & CS versions.
MSG("sleeptime",centiseconds) ! specify MSG keystroke time interval (100 = 1 Second) MSG("KB",string$) ! send string to keyboard
With the Msg internal function you can directly control the keyboard under the Windows client from within a BR program by issuing a function call to MSG.
Notice there is no dollar sign on this function name. This is useful for redisplaying Windows menus upon returning to a menu program from an application program. MSG has no effect on Unix or Linux terminal sessions, but works under Client / Server with Unix the same as WINDOWS.
The first parameter ("KB" or "kb") is case insensitive.
Two new Error Codes are defined in support of this function:
- 0412 Invalid Action Code - The first parameter is not recognized.
- 0413 Window Not On Top - A KB message was sent to a task which is different from the one that currently owns the keyboard.
Note that the following error codes may be related to this function:
- 0414 Wrong number of arguments passed
- 0415 Some error that has err message
- 0416 Not enough elements in dimensioned array
- 0417 Dimensioned string length is not big enough
- 0418 Unknown
- 0419 Error in special char spec
Special Keystroke Values
This facility operates through the operating system, so it does not utilize BR scancodes. If you need to send a special character (which in turn may cause BR to generate its scancodes), you will need to emulate the corresponding keyboard activity. Special characters need to be enclosed in pipes |.
Examples
If you want to send ctrl+c, you must send the following string:
00010 MSG("KB","|CTRL+|c|CTRL-|")
This says that you want depress the "CTRL" key, type "c", and then release "CTRL".
Example:
MSG("KB","|CTRL+|p|CTRL-|")
Will input the CTRL-P character, which causes BR to perform a printscreen operation.
Special Character List
Each char must be enclosed in pipes
ALT+ press ALT - see note below |
ALT- release ALT |
CTRL+ press CTRL |
CTRL- release CTRL |
SHIFT+ press SHIFT |
SHIFT- release SHIFT |
TAB press the tabulation key |
RET press the return key |
ESC press the escape key |
BACK press the backward key |
DEL press the delete key |
INS press the insert key |
HELP press the help key |
LEFT send the cursor to the left (left arrow) |
RIGHT send the cursor to the right (right arrow) |
UP send the cursor up (up arrow) |
DOWN send the cursor down (down arrow) |
PGUP press the page up key |
PGDN press the page down key |
HOME press the home key |
END press the end key |
F1 press the function key F1 |
F2 press the function key F2 |
F3 press the function key F3 |
F4 press the function key F4 |
F5 press the function key F5 |
F6 press the function key F6 |
F7 press the function key F7 |
F8 press the function key F8 |
F9 press the function key F9 |
F10 press the function key F10 |
F11 press the function key F11 |
F12 press the function key F12 |
NUM0 press the 0 on the key pad |
NUM1 press the 1 on the key pad |
NUM2 press the 2 on the key pad |
NUM3 press the 3 on the key pad |
NUM4 press the 4 on the key pad |
NUM5 press the 5 on the key pad |
NUM6 press the 6 on the key pad |
NUM7 press the 7 on the key pad |
NUM8 press the 8 on the key pad |
NUM9 press the 9 on the key pad |
NUM* press the * on the key pad |
NUM+ press the + on the key pad |
NUM- press the - on the key pad |
NUM, press the , on the key pad |
NUM/ press the / on the key pad |
To send the pipe character specify
MSG("sleeptime",seconds) specifies the number of seconds to wait before issuing each string and each control character. Seconds may also be expressed with *up to three decimal digits* The default value is 0.2 seconds.
Please note that under Windows messaging, the ALT key needs to be depressed and released (ALT+ and ALT-) for every Alt-character specified.
alt+malt-alt+malt- works alt+mbalt- fails alt+mdownalt- works
This is because keyboard entries via Windows messaging doesn't interpret more than one letter as an alt value properly like it does via the keyboard itself. However it will honor arrow keys while the alt key is held down.