* :--------------------------------------- * ------------------------: Simualatekeys API * :--------------------------------------- * : This copybook is used for the Simulate * : Keys api which can be used to simulate * : key presses as if the usere pressed * : the keys at the keyboard. * : * : Some keys need to be explicitly * : pressed and released because other * : keys can be pressed while these keys * : are in the key-down state. * : These are * : Shift * : Control * : Alt * : * : Other keys are Toggles or Semi Toggles * : These are * : Insert * : Capslock * : Numlock * : Scrollock * : Pause (dangerous - requires user * : intervention) * : * : The Semi-Toggles are keys found on the * : windows keyboards, These remain set * : unless another key follows, in which * : case they un-set themselves. * : Menu * : Apps * : Windows Key * : * : All other keys are simulated as a * : press and release. * : * : Not all keys are guarenteed to work on * : all machines, and some of these keys * : are sure to be unavailable on any * : given keyboard. These keys are * : passed thru your keyboard driver. * : Therefore, use of keys unknown to your * : keyboard driver is not recommended and * : the result remains undefined. * To use: * * COPY WIN32API. * COPY SIMKEYS. * * --- --- Typical call --- --- --- --- --- --- --- * * : clear the buffer * SET SIMULATEKEYS-DEFAULT TO TRUE * : Set the keys we want (back tab) * : The subscript is the sequential key * : press desired in the array * SET SK-SHIFT (1) TO TRUE * SET SK-TAB (2) TO TRUE * SET SK-SHIFT-UP (3) TO TRUE * SET API-SIMULATEKEYS TO TRUE * CALL 'GSWINAPI' USING WIN32API-PARMS * SIMULATE-KEYS * WIN32API-B * WIN32API-C * WIN32API-D * WIN32API-E * WIN32API-F. * * ---------------------------------------------------------------- * : Keys should be loaded in sequence * : leaving no gaps because simulated key * : strokes stop at the first low-value * : key found. 01 SIMULATE-KEYS VALUE LOW-VALUES. 88 SIMULATEKEYS-DEFAULT VALUE LOW-VALUES. * : 05 SIMULATE-KEYS-SEQUENCE OCCURS 256 PIC X. * :--------------------------------------- * ------------------------: IMPORTANT: * : These keys must be sent as BOTH a * : press and a release key, usually with * : other keys in-between. Such As * : Shift A SHift-up to get a capital "a". * :--------------------------------------- 88 SK-SHIFT VALUE X'10'. 88 SK-CONTROL VALUE X'11'. 88 SK-ALT VALUE X'12'. 88 SK-SHIFT-UP VALUE X'D8'. 88 SK-CONTROL-UP VALUE X'D9'. 88 SK-ALT-UP VALUE X'DA'. * * * :--------------------------------------- * ------------------------: TOGGLE KEYS * : You have to remember the toggle state * : of these. * :--------------------------------------- 88 SK-INSERT VALUE X'2D'. 88 SK-CAPSLOCK VALUE X'14'. 88 SK-NUMLOCK VALUE X'90'. 88 SK-SCROLL VALUE X'91'. * : Use at your own risk. (TOGGLE) 88 SK-PAUSE VALUE X'13'. * * : Microsoft Natural keyboard and other * : keyboards with the windows keys: * : These are semi-toggles. If turned on * : they will remain on till you send the * : key again to toggle them off, but * : if you send another key they will also * : toggle off. * : Example sk-rwin, R, notepad, enter * : will launch the note pad using the * : start button as if you pressed the * : "windows" key on the keyboard. 88 SK-LMENU VALUE X'A4'. 88 SK-RMENU VALUE X'A5'. 88 SK-APPS VALUE X'5D'. 88 SK-LWIN VALUE X'5B'. 88 SK-RWIN VALUE X'5C'. * :--------------------------------------- * ------------------------: Simulate Mouse clicks * : These actually simulate mouse buttons * : but this API provides no way to * : position the mouse. * :--------------------------------------- 88 SK-LBUTTON VALUE X'01'. 88 SK-RBUTTON VALUE X'02'. 88 SK-MBUTTON VALUE X'04'. * : Extra mouse buttons for win2k/xp 88 SK-XBUTTON1 VALUE X'05'. 88 SK-XBUTTON2 VALUE X'06'. * :--------------------------------------- * ------------------------: Regular keys and some extras * :--------------------------------------- * : Control-Break Key 88 SK-CANCEL VALUE X'03'. * : 88 SK-BACKSPACE VALUE X'08'. 88 SK-TAB VALUE X'09'. 88 SK-CLEAR VALUE X'0C'. * : Enter key 88 SK-RETURN VALUE X'0D'. * : These are for Input Method Editor * : keyboards, usually on asian keyboards. 88 SK-KANA VALUE X'15'. 88 SK-HANGEUL VALUE X'15'. 88 SK-HANGUL VALUE X'15'. 88 SK-JUNJA VALUE X'17'. 88 SK-FINAL VALUE X'18'. 88 SK-HANJA VALUE X'19'. 88 SK-KANJI VALUE X'19'. 88 SK-CONVERT VALUE X'1C'. 88 SK-NONCONVERT VALUE X'1D'. 88 SK-ACCEPT VALUE X'1E'. 88 SK-MODECHANGE VALUE X'1F'. * : 88 SK-ESCAPE VALUE X'1B'. 88 SK-SPACE VALUE X'20'. 88 SK-PAGE-UP VALUE X'21'. 88 SK-PAGE-DOWN VALUE X'22'. 88 SK-END VALUE X'23'. 88 SK-HOME VALUE X'24'. * : Arrow keys 88 SK-LEFT VALUE X'25'. 88 SK-UP VALUE X'26'. 88 SK-RIGHT VALUE X'27'. 88 SK-DOWN VALUE X'28'. * : 88 SK-SELECT VALUE X'29'. 88 SK-PRINT VALUE X'2A'. 88 SK-EXECUTE VALUE X'2B'. 88 SK-PRINTSCREEN VALUE X'2C'. 88 SK-DELETE VALUE X'2E'. 88 SK-HELP VALUE X'2F'. * :--------------------------------------- * : Note: For regular characters you * : may simply put in the ascii character. * LETTERS & : You enter the upper case character * NUMBERS : but the resultant case depends on the * : shift state of the keyboard at the * : time. * SK-0 - SK-9 are the same as ASCII '0' - '9' * SK-A - SK-Z are the same as ASCII 'A' - 'Z' * :--------------------------------------- * : not advisable - who knows what might * : happen? 88 SK-SLEEP VALUE X'5F'. * : Numeric pad keys, there is no * : advantage to using these over using * : the standard numbers as above 88 SK-NUMPAD0 VALUE X'60'. 88 SK-NUMPAD1 VALUE X'61'. 88 SK-NUMPAD2 VALUE X'62'. 88 SK-NUMPAD3 VALUE X'63'. 88 SK-NUMPAD4 VALUE X'64'. 88 SK-NUMPAD5 VALUE X'65'. 88 SK-NUMPAD6 VALUE X'66'. 88 SK-NUMPAD7 VALUE X'67'. 88 SK-NUMPAD8 VALUE X'68'. 88 SK-NUMPAD9 VALUE X'69'. * : 88 SK-MULTIPLY VALUE X'6A'. 88 SK-ADD VALUE X'6B'. * : Country specific thousand separator 88 SK-SEPARATOR VALUE X'6C'. 88 SK-SUBTRACT VALUE X'6D'. * : Period, or comma, depending on country 88 SK-DECIMAL VALUE X'6E'. 88 SK-DIVIDE VALUE X'6F'. * : Mind your shift/alt/ctrl states 88 SK-F1 VALUE X'70'. 88 SK-F2 VALUE X'71'. 88 SK-F3 VALUE X'72'. 88 SK-F4 VALUE X'73'. 88 SK-F5 VALUE X'74'. 88 SK-F6 VALUE X'75'. 88 SK-F7 VALUE X'76'. 88 SK-F8 VALUE X'77'. 88 SK-F9 VALUE X'78'. 88 SK-F10 VALUE X'79'. 88 SK-F11 VALUE X'7A'. 88 SK-F12 VALUE X'7B'. 88 SK-F13 VALUE X'7C'. 88 SK-F14 VALUE X'7D'. 88 SK-F15 VALUE X'7E'. 88 SK-F16 VALUE X'7F'. 88 SK-F17 VALUE X'80'. 88 SK-F18 VALUE X'81'. 88 SK-F19 VALUE X'82'. 88 SK-F20 VALUE X'83'. 88 SK-F21 VALUE X'84'. 88 SK-F22 VALUE X'85'. 88 SK-F23 VALUE X'86'. 88 SK-F24 VALUE X'87'. * : * Fujitsu/OASYS kbd definitions * : 'Dictionary' key 88 SK-OEM-FJ-JISHO VALUE X'92'. * : 'Unregister word' key 88 SK-OEM-FJ-MASSHOU VALUE X'93'. * : 'Register word' key 88 SK-OEM-FJ-TOUROKU VALUE X'94'. * : 'Left OYAYUBI' key 88 SK-OEM-FJ-LOYA VALUE X'95'. * : 'Right OYAYUBI' key 88 SK-OEM-FJ-ROYA VALUE X'96'. * : Multi-media keys on some laptops * : only likely to work in Win XP or later * : media center editions and some * : programmable keyboards 88 SK-BROWSER-BACK VALUE X'A6'. 88 SK-BROWSER-FORWARD VALUE X'A7'. 88 SK-BROWSER-REFRESH VALUE X'A8'. 88 SK-BROWSER-STOP VALUE X'A9'. 88 SK-BROWSER-SEARCH VALUE X'AA'. 88 SK-BROWSER-FAVORITES VALUE X'AB'. 88 SK-BROWSER-HOME VALUE X'AC'. 88 SK-VOLUME-MUTE VALUE X'AD'. 88 SK-VOLUME-DOWN VALUE X'AE'. 88 SK-VOLUME-UP VALUE X'AF'. 88 SK-MEDIA-NEXT-TRACK VALUE X'B0'. 88 SK-MEDIA-PREV-TRACK VALUE X'B1'. 88 SK-MEDIA-STOP VALUE X'B2'. 88 SK-MEDIA-PLAY-PAUSE VALUE X'B3'. 88 SK-LAUNCH-MAIL VALUE X'B4'. 88 SK-LAUNCH-MEDIA-SELECT VALUE X'B5'. 88 SK-LAUNCH-APP1 VALUE X'B6'. 88 SK-LAUNCH-APP2 VALUE X'B7'. * : * : Some of these keys vary by country * : Best to avoid them for international * : use. * : ';:' for US 88 SK-OEM-1 VALUE X'BA'. * : '+' any country 88 SK-OEM-PLUS VALUE X'BB'. * : ',' any country 88 SK-OEM-COMMA VALUE X'BC'. * : '-' any country 88 SK-OEM-MINUS VALUE X'BD'. * : '.' any country 88 SK-OEM-PERIOD VALUE X'BE'. * : '/?' for US 88 SK-OEM-2 VALUE X'BF'. * : '`~' for US 88 SK-OEM-3 VALUE X'C0'. * : '[{' for US 88 SK-OEM-4 VALUE X'DB'. * : '\|' for US 88 SK-OEM-5 VALUE X'DC'. * : ']}' for US 88 SK-OEM-6 VALUE X'DD'. * : ''"' for US 88 SK-OEM-7 VALUE X'DE'. * : unknown 88 SK-OEM-8 VALUE X'DF'. * : 'AX' key on Japanese AX kbd 88 SK-OEM-AX VALUE X'E1'. * : "<>" or "\|" on RT 102-key kbd. 88 SK-OEM-102 VALUE X'E2'. * : Help key on ICO 88 SK-ICO-HELP VALUE X'E3'. * : 00 key on ICO 88 SK-ICO-00 VALUE X'E4'. * : 88 SK-PROCESSKEY VALUE X'E5'. 88 SK-ICO-CLEAR VALUE X'E6'. * : Nokia/Ericsson mobile device keys 88 SK-OEM-RESET VALUE X'E9'. 88 SK-OEM-JUMP VALUE X'EA'. 88 SK-OEM-PA1 VALUE X'EB'. 88 SK-OEM-PA2 VALUE X'EC'. 88 SK-OEM-PA3 VALUE X'ED'. 88 SK-OEM-WSCTRL VALUE X'EE'. 88 SK-OEM-CUSEL VALUE X'EF'. 88 SK-OEM-ATTN VALUE X'F0'. 88 SK-OEM-FINISH VALUE X'F1'. 88 SK-OEM-COPY VALUE X'F2'. 88 SK-OEM-AUTO VALUE X'F3'. 88 SK-OEM-ENLW VALUE X'F4'. 88 SK-OEM-BACKTAB VALUE X'F5'. 88 SK-ATTN VALUE X'F6'. 88 SK-CRSEL VALUE X'F7'. 88 SK-EXSEL VALUE X'F8'. 88 SK-EREOF VALUE X'F9'. 88 SK-PLAY VALUE X'FA'. 88 SK-ZOOM VALUE X'FB'. 88 SK-NONAME VALUE X'FC'. 88 SK-PA1 VALUE X'FD'. 88 SK-OEM-CLEAR VALUE X'FE'. * : Our termination marker. 05 FILLER PIC XX.