PUSHKEY
Root / Documentation / [.]

Push text to the key buffer or send special control codes. This function is primarily used by the software keyboard (
#SYS/SOFTKEY.PRG
) and is intended for simulating keyboard input. The text will be entered to the focused text entry (INPUT
, the editor etc.) or can be read using INKEY$
. The key buffer has a maximum size of 128 characters.
Syntax
PUSHKEY text$ PUSHKEY charCode%
Input | Description |
---|---|
text$ | A string of text to push to the key buffer; max length 63 characters. |
charCode% | A character code to push to the buffer as text (0-65535). If the value is in the range 65536-69631, it is interpreted as a control code. |
Examples
PUSHKEY "Hello" 'push "Hello" to the key buffer PUSHKEY 65 'push the character "A" to the key buffer PUSHKEY 65539 'move the text cursor right (control code)
Control Codes
If thecharCode%
parameter is from 65536 to 69631 it is interpreted as a control code. Control codes perform certain actions in the environment (usually related to the editor and key shortcuts.) They are not treated like normal key presses or text characters; they do not enter the key buffer and are processed immediately. It appears that SmileBASIC can only process one control code per frame. This feature is not officially documented.
Control Code Table
AnENUM
of control codes is listed in #SYS/SOFTKEY.PRG
, under the comment "KEYBOARD CONTROL CODES." This table has been duplicated here and translated for convenience. The Name column refers to the names of the ENUM
constants and the Number column is the number of the control code, which is value of that constant; if you want to use the constants by name, you will have to copy the control code ENUM
from #SYS/SOFTKEY.PRG
and paste it in your program.
table
Name | Value | Description |
---|---|---|
#CK_UP | 65536 | Move text cursor up |
#CK_DOWN | 65537 | Move text cursor down |
#CK_LEFT | 65538 | Move text cursor left |
#CK_RIGHT | 65539 | Move text cursor right |
#CK_BS | 65540 | Backspace key |
#CK_DEL | 65541 | Delete key |
#CK_PAGEUP | 65542 | Page Up key |
#CK_PAGEDOWN | 65543 | Page Down key |
#CK_TAB | 65544 | Tab key |
#CK_LINETOP | 65545 | Go to beginning of line |
#CK_LINEEND | 65546 | Go to end of line |
#CK_LINEJUMP | 65547 | Open the "Go to line" prompt in the editor |
#CK_FILETOP | 65548 | Go to top of file |
#CK_FILEEND | 65549 | Go to end of file |
#CK_INSLINE | 65550 | Insert blank line at cursor |
#CK_DELLINE | 65551 | Delete line at cursor |
#CK_DELRIGHT | 65552 | Delete text from the cursor to the end of the line |
#CK_UNDO | 65553 | Editor undo |
#CK_REDO | 65554 | Editor redo |
#CK_SELECTSTART | 65555 | Start text selection |
#CK_SELECTEND | 65556 | End text selection |
#CK_COPY | 65557 | Copy selected text to clipboard |
#CK_CUT | 65558 | Cut selected text to clipboard |
#CK_PASTE | 65559 | Paste text from clipboard |
#CK_SMARTDEL | 65560 | Smart Delete? "選択個所を削除 Delete selected location" |
#CK_RUN | 65561 | Go to Direct mode |
#CK_EDIT | 65562 | Go to editor (last used slot) |
#CK_EDIT0 | 65563 | Go to editor (slot 0) |
#CK_EDIT1 | 65564 | Go to editor (slot 1) |
#CK_EDIT2 | 65565 | Go to editor (slot 2) |
#CK_EDIT3 | 65566 | Go to editor (slot 3) |
#CK_STOP | 65567 | Stop running program |
#CK_EXIT | 65568 | Go to Top Menu |
#CK_TOOL | 65569 | Run SmileTool 1 |
#CK_TOOL2 | 65570 | Run SmileTool 2 |
#CK_TOOL3 | 65571 | Run SmileTool 3 |
#CK_SYSREQ | 65572 | Run / stop program (SysReq key) |
#CK_LOAD | 65573 | Open Simple Load menu |
#CK_SAVE | 65574 | Open Simple Save menu |
#CK_LISTERR | 65575 | Acts like LIST ERR |
#CK_SOFTKEY | 65576 | Toggle the software keyboard/UI program display |
#CK_ESCAPE | 65577 | Escape key |
#CK_FONT | 65578 | Cycle editor font |
#CK_WRAP | 65579 | Toggle editor line wrap |
#CK_SPLIT | 65580 | Editor split screen (toggle? enable?) |
#CK_SPLIT_SINGLE | 65581 | Disable editor split screen |
#CK_SPLIT_VERTICAL | 65582 | Editor split screen (vertical) |
#CK_SPLIT_HORIZONAL | 65583 | Editor split screen (horizontal) |
#CK_TAB_INC | 65584 | Increase indent |
#CK_TAB_DEC | 65585 | Decrease indent |
#CK_COMMENTOUT | 65586 | Comment text |
#CK_UNCOMMENTOUT | 65587 | Uncomment text |
#CK_SCROLL_UP | 65588 | Scroll up without moving cursor |
#CK_SCROLL_DOWN | 65589 | Scroll down without moving cursor |
#CK_SCROLL_LEFT | 65590 | Scroll left without moving cursor |
#CK_SCROLL_RIGHT | 65591 | Scroll right without moving cursor |
#CK_SCROLL_PAGEUP | 65592 | Page up without moving cursor |
#CK_SCROLL_PAGEDOWN | 65593 | Page down without moving cursor |
#CK_HELP | 65594 | Toggle help menu |
#CK_HELP_ON | 65595 | Open help menu |
#CK_HELP_OFF | 65596 | Close help menu |
#CK_HELP_PREVHEADER | 65597 | Go to previous header in help menu (unused) |
#CK_HELP_NEXTHEADER | 65598 | Go to next header in help menu (unused) |
#CK_HELP_COPY | 65599 | Copy code sample from help menu (unused) |
#CK_HELP_UP | 65600 | Scroll help menu up (unused) |
#CK_HELP_DOWN | 65601 | Scroll help menu down (unused) |
#CK_HELP_UPD | 65602 | Help menu update? (unused) |
#CK_FIND_REPL | 65603 | Toggle Find & Replace mode |
#CK_FIND_REPLALL | 65604 | Replace all (unused) |
#CK_FIND_REPLNEXT | 65605 | Replace next (unused) |
#CK_FIND_REPLSWITCH | 65606 | Switch between Find and Replace entry |
#CK_FIND_PREV | 65607 | Go to previous match |
#CK_FIND_NEXT | 65608 | Go to next match |
#CK_FINDMODE | 65609 | Toggle Find mode |
#CK_FOCUS_NEXT | 65610 | Focus next (editor panel?) |
#CK_FOCUS_PREV | 65611 | Focus previous (editor panel?) |
#CK_FOCUS_MAIN | 65612 | Focus main program |
#CK_FOCUS_SUB | 65613 | Focus subprogram |
#CK_FUNC1 | 65614 | Paste F1 key string |
#CK_FUNC2 | 65615 | Paste F2 key string |
#CK_FUNC3 | 65616 | Paste F3 key string |
#CK_FUNC4 | 65617 | Paste F4 key string |
#CK_FUNC5 | 65618 | Paste F5 key string |
#CK_INSERT | 65619 | Switch Insert / Overwrite mode |
#CK_RESET | 65620 | IO Reset (Ctrl+Alt+Del) |
#CK_SOFTKEY_ON | 65621 | Show software keyboard/UI program |
#CK_SOFTKEY_OFF | 65622 | Hide software keyboard/UI program |
#CK_TRACE | 65623 | Acts like TRACE |
#CK_PERFGAUGE | 65624 | Toggle the performance gauge |
#CK_SPLIT_GUIDE | 65625 | "Split screen for guide" (unused since 4.1) |
#CK_COMPLETION_OFF | 65626 | Disable text completion popups (unused since 4.1) |
#CK_SOFTKEY_RIGHT | 65627 | Show software keyboard on right side of screen |
#CK_SOFTKEY_DOWN | 65628 | Show software keyboard on lower side of screen |
#CK_SOFTKEY_LEFT | 65629 | Show software keyboard on left side of screen |
#CK_SOFTKEY_UP | 65630 | Show software keyboard on upper side of screen |
#CK_ERRJUMP | 65631 | Jump to error line in editor (different from LIST ERR ?) |
#CK_EDIT4 | 65632 | Go to editor (slot 4) |
#CK_EDIT5 | 65633 | Go to editor (slot 5) |
Unknown Constants
Some constants are commented out or marked "Not compatible?" in the code. The table below is speculative; these constants will not work.Name | Description |
---|---|
#CK_CAPTURE | May have activated Switch screen capture |
#CK_BACKTRACE | Acts like BACKTRACE ? |
#CK_CONT | Acts like CONT ? |
Notes
- The documentation states the input string has a maximum length of 64 characters, but it is actually 63. This is likely a bug.
- It is unknown if the rest of the control codes in the valid range do anything.
#CK_SPLIT_HORIZONAL
is misspelled. It should be#CK_SPLIT_HORIZONTAL
.
No posts yet (will you be the first?)