LoginLogin

PUSHKEY

Root / Documentation / [.]

Created:
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 ```sbsyntax 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 ```sb4 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 the `charCode%` 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 An `ENUM` 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. {#spoiler=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?)