Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
server:terminal [2018/03/01 12:21] – old revision restored digital manserver:terminal [2019/06/09 00:18] – Details about changing key-bindings programmatically, installing hot key events, etc. digital man
Line 1: Line 1:
 ====== Terminal Server ====== ====== Terminal Server ======
-The Synchronet Terminal Server is responsible for providing that "old school" BBS user interface over dial-up modems and classic Internet console protocols (e.g. Telnet).+The Synchronet //Terminal Server// is responsible for providing that "old school" BBS user interface over dial-up modems and classic Internet console protocols (e.g. Telnet).
  
 ===== Features ===== ===== Features =====
  
-  * Supports ANSI X3.64 (color and monochrome), [[wp>Remote_imaging_protocol|RIP]], and dumb terminals +  * Supports ANSI X3.64 (color and monochrome), PETSCII, [[wp>Remote_imaging_protocol|RIP]], and dumb terminals 
-  * Supports [[wp>ASCII|US-ASCII]] and [[wp>Code_page_437|CP437]] (a.k.a. IBM Extended ASCII) character sets +  * Supports [[wp>ASCII|US-ASCII]][[wp>Code_page_437|CP437]] (a.k.a. IBM Extended ASCII) and CBM/[[wp>PETSCII]] character sets 
   * Supported Protocols: [[#Telnet]], [[#RLogin]], and [[#SSH]]   * Supported Protocols: [[#Telnet]], [[#RLogin]], and [[#SSH]]
  
Line 13: Line 13:
   * Optionally configured (on Windows) via [[monitor:SBBSCTRL]]:Telnet->Configure dialog   * Optionally configured (on Windows) via [[monitor:SBBSCTRL]]:Telnet->Configure dialog
   * Configured behavior may be over-ridden via ''[[monitor:sbbscon|sbbs]]'' command-line arguments   * Configured behavior may be over-ridden via ''[[monitor:sbbscon|sbbs]]'' command-line arguments
 +
 +===== Key Bindings =====
 +
 +==== Global Ctrl-Keys ====
 +
 +These control-key combinations have special purpose at almost any-time while using the Terminal Server:
 +
 +^ Ctrl-Key ^ Description ^
 +| Ctrl-K   | Display a Ctrl-key Menu |
 +| Ctrl-C   | Stop the current process / listing / operation |
 +| Ctrl-O   | Toggle auto-pause prompt temporarily |
 +| Ctrl-Z   | Toggle raw input/output mode |
 +| Ctrl-U   | List users online |
 +| Ctrl-P   | Page for chat or send instant-message or telegram to users |
 +| Ctrl-T   | Display current time information |
 +
 +Global control-keys are handled in sbbs_t::handle_ctrlkey(), called from sbbs_t::inkey() in ''inkey.cpp'' and exposed in JavaScript via console.inkey().
 +
 +Global control key handling may be disabled/re-enabled (per key) programmatically via the JavaScript console.ctrlkey_passthru property:
 + js.on_exit("console.ctrlkey_passthru = " + console.ctrlkey_passthru);
 + console.ctrlkey_passthru|=(1<<16);      // Disable Ctrl-P handling in sbbs
 +
 +Custom global control-key handlers may be installed via [[util:SCFG]]->External Programs->Global Hot Key Events:
 +
 +<file>
 +╔═══════════════════════════════════════════╗
 +║           Global Hot Key Events           ║
 +╠═══════════════════════════════════════════╣
 +║ │Ctrl-P    ?privatemsg.js                 ║
 +║ │Ctrl-U    ?nodelist.js -active           ║
 +║ │                                         ║
 +╚═══════════════════════════════════════════╝
 +</file>
 +==== Line Input ====
 +
 +Additional control-key combinations have special behavior during line (text string) input:
 +
 +^ Ctrl-Key ^ Description ^
 +| Ctrl-N   | Move to next word in line |
 +| Ctrl-\   | Move to previous word in line |
 +| Ctrl-D   | Delete word to the right |
 +| Ctrl-W   | Delete word to the left |
 +| Ctrl-Y   | Delete from the cursor to the end of the line |
 +| Ctrl-X   | Delete the entire current line |
 +| Ctrl-L   | Center the line and complete input |
 +| Ctrl-Z   | Undo (revert edited line) |
 +| Ctrl-R   | Redraw current line |
 +| Ctrl-A   | Insert an [[custom:ctrl-a_codes|attribute code]] (when allowed) |
 +| Ctrl-G   | Insert a beep character (when allowed) |
 +
 +The line/string input control-keys are handled via sbbs_t::getstr() in ''getstr.cpp'' and exposed in JavaScript via console.getstr().
 +
 +==== Extended Keys ====
 +
 +The Synchronet Terminal Server endeavors to support most extended-keys (e.g. home, end, arrow-keys, etc.) on most terminals while simultaneously supporting control-key equivalents for all terminals.
 +
 +^ Extended Key ^ Ctrl-Key ^ ANSI((ANSI X3.64/ECMA-048 escape sequence)) ^ Other((e.g. VT-220 or XTerm escape sequence)) ^ Description (typical use) ^ 
 +| Home         | Ctrl-B   | \e[H                    | \e[1~  | Move cursor to beginning of line or top of page/list/document |
 +| End          | Ctrl-E   | \e[K and \e[F           | \e[4~  | Move cursor to end of line or bottom of page/list/document |
 +| Up-arrow     | Ctrl-tilde   | \e[A                    |        | Move cursor up one line or recall previous history item |
 +| Down-arrow   | Ctrl-J   | \e[B                    |        | Move cursor down one line or recall next history item |
 +| Left-arrow   | Ctrl-]   | \e[D                    |        | Move cursor to the left |
 +| Right-arrow  | Ctrl-F   | \e[C                    |        | Move cursor to the right |
 +| Page-up      | Ctrl-P   | \e[V                    | \e[5~  | Move cursor up one page |
 +| Page-down    | Ctrl-N   | \e[U                    | \e[6~  | Move cursor up one page |
 +| Insert       | Ctrl-V   | \e[@                    | \e[2~  | Toggle insert/overwrite text mode |
 +| Delete       | Ctrl-?                           | \e[3~  | Delete character under cursor (delete-right), also Ctrl-Backspace |
 +
 +
 ===== Telnet ===== ===== Telnet =====
  
Line 18: Line 87:
  
 The Synchronet Terminal Server will negotiate Telnet options with the client (enforcing echo and non-line-at-a-time modes), perform ''IAC'' (character 255) escaping, and CR/LF->CR and CR/NUL->CR translation (when not in //binary mode//). The Synchronet Terminal Server will negotiate Telnet options with the client (enforcing echo and non-line-at-a-time modes), perform ''IAC'' (character 255) escaping, and CR/LF->CR and CR/NUL->CR translation (when not in //binary mode//).
 +
 +===== SSH =====
 +[[wp>Secure Shell]] version 2 clients are supported, by default, on the standard SSH TCP port: 22.
 +
 +SSHv2 support provided by [[dev:dependencies#cryptlib]].
 +
 ===== RLogin ===== ===== RLogin =====
 [[ftp://ftp.rfc-editor.org/in-notes/rfc1282.txt|RLogin]] clients are supported, by default, on the standard RLogin TCP port: 513. [[ftp://ftp.rfc-editor.org/in-notes/rfc1282.txt|RLogin]] clients are supported, by default, on the standard RLogin TCP port: 513.
Line 71: Line 146:
   * [[person:digital man]] removed and deprecated the ''USE_2ND_RLOGIN'' option (and related [[monitor:sbbscon|sbbs]] command-line option and [[monitor:sbbsctrl]] checkbox) as this is now the **only** behavior supported by the Synchronet [[server:Terminal]] Server: the first string received from the RLogin client (''client-user-name'') **may** be a password, the second string received (''server-user-name'') **must** be a valid user ID (alias).   * [[person:digital man]] removed and deprecated the ''USE_2ND_RLOGIN'' option (and related [[monitor:sbbscon|sbbs]] command-line option and [[monitor:sbbsctrl]] checkbox) as this is now the **only** behavior supported by the Synchronet [[server:Terminal]] Server: the first string received from the RLogin client (''client-user-name'') **may** be a password, the second string received (''server-user-name'') **must** be a valid user ID (alias).
   * [[person:digital man]] changed the ''bbs.rlogin_gate'' function to accept 3 optional arguments: ''client-user-name'', ''server-user-name'', and ''terminal'', in the order specified by the RFC 1282.   * [[person:digital man]] changed the ''bbs.rlogin_gate'' function to accept 3 optional arguments: ''client-user-name'', ''server-user-name'', and ''terminal'', in the order specified by the RFC 1282.
-===== SSH ===== 
-[[wp>Secure Shell]] version 2 clients are supported, by default, on the standard SSH TCP port: 22. 
- 
-SSHv2 support provided by [[dev:dependencies#cryptlib]]. 
  
 ===== JavaScript ===== ===== JavaScript =====
server/terminal.txt · Last modified: 2024/03/04 20:42 by digital man
Back to top
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0