- Jan 22, 2021
-
-
Rob Swindell authored
Some terminals can send NUL (ASCII 0), e.g. hitting Ctrl-Space in Apple iTerm. Allow users of inkey() (in C++ or JS) to optionally detect the difference by specifying the K_NUL mode flag. In JS, console.inkey() will return null upon timeout (rather than "") when the K_NUL mode flag is used and return an empty string ("") upon receipt of NUL (ASCII 0). The default is the previous behavior where a timeout and the receipt of a NUL character appear the same to the caller of inkey().
-
- Nov 07, 2020
-
-
Rob Swindell authored
In preparation for node-spy applications that can support multiple terminal sizes/types (none exist yet). The file is updated whenever there is new/updated information about the client's terminal. Exposed as JS method: console.term_updated().
-
- Nov 06, 2020
-
-
Rob Swindell authored
I'm fed-up with MSVC assertions in ctype functions (e.g. isdigit, isprint, isspace, etc.) when called with out-of-range (e.g. negative) values. This problem only affects MSVC debug builds, but if you run them (like I do), these things are like little time bombs that can drive you crazy (knocking your board out of service). The new macros names are bit more descriptive as well.
-
- Nov 02, 2020
-
-
Rob Swindell authored
The reported problem (by John "Jay" Crutti) was: If autodetection of the terminal is used from the defaults menu I get stuck on the prompt to hit my Delete key because on the BBS, it keeps showing me login statistics every time I hit my delete key. Add/use new K_CTRLKEYS mode to stop inkey() from handling/eating control-keys (e.g. Ctrl-T) when asking user to hit backspace during defaults->terminal settings. Allow PETSCII_DELETE (Ctrl-T) as a valid option when asking for the backspace/delete key and set the PETSCII flag in the autoterm variable if hit by the user.
-
- Oct 25, 2020
-
-
Rob Swindell authored
The default terminal columns (still 0/auto) can be overridden with the 'L' command from the user defaults menu. Also increased maximum manual terminal rows setting from 99 to 999 - this involved moving the record in user.dat, though the old record value is auto-migrated.
-
- Aug 30, 2020
-
-
Rob Swindell authored
As reported by Ragnarok and The Lizard Master, invoking a JS global hot-key handler (e.g. hitting Ctrl-U or Ctrl-P with the privatemsg or nodelist modules installed as handlers) would lead to the global object being cleared/corrupted so other scripts would then fail to run correctly (e.g. Error: can't open sbbsdefs.js: No such file or directory) This probably explains the JS_GC/JS_ENDREQUEST change needed when the hotkey-specific JS runtime/context/scope was introduced last year. Should revisit that too.
-
- Aug 16, 2020
-
-
Rob Swindell authored
-
- Aug 04, 2020
-
-
rswindell authored
Allow set_mouse() to disable mouse-reporting in the terminal (if it was previously enabled), even when mouse support has been turned off by the user.
-
rswindell authored
so made it enabled/disabled per-user-terminal settings. This means that if you were already enjoying mouse support, you're going to have to turn it on to keep enjoying it. It also means there's currently no way to enable/use mouse support pre-logon, but I have ideas about how to support that for sysops that want that.
-
- May 24, 2020
-
-
rswindell authored
Rename CON_MOUSE_REPORT to CON_MOUSE_SCROLL (since that is all it is used for).
-
rswindell authored
Support mouse scroll-wheel mapping to up/down arrow keys by setting CON_MOUSE_REPORT flag in sbbs_t::console (JS console.status). This also means that the mouse hot-spot support now uses XTerm "normal tracking mode", so mouse button releases are also reported by the terminal (and eaten by inkey(), when CON_MOUSE_PASSTHRU is not enabled).
-
- May 12, 2020
-
-
rswindell authored
Support a "mouse pass-through" console status flag to allow the pass-through of uncaptured mouse reports (e.g. for hot-spots) to other tasks/scripts. When there are no active hot-spots, this is the normal behavior. This commit leaves the legacy X10 mouse report handling/pass-through logic in. But I'll likely be removing that soon.
-
- May 11, 2020
-
-
rswindell authored
Now that pause() can set a hot-spot, don't inject a Ctrl-C (abort) into the keyboard buffer if it had.
-
- May 10, 2020
-
-
rswindell authored
The 3rd step of the hungry hot-spot matching algo now looks for the left-most possible match in reverse creation order. This solves the problem with clicking left of "Yes" in a yes/no prompt registering as a "No'.
-
- May 09, 2020
-
-
rswindell authored
By default, single-char hot-spots do not extend to the end of the row (use the "hungry" attribute to control behavior).
-
rswindell authored
Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the same time. For Nelgin. Use ^A` to define a single-char strict hot-spot using Ctrl-A codes. Unfortunately, this usurps the "home" Ctrl-A code which nothing seems to use but has now been changed to ^A'. Use ` instead of ~ in mnemonics to define strict single-char hot-spots (also displays the cmd key in [] instead () on non ANSI/PETSCII terms). Use @` instead of @~ codes to define strict hot-keys. Use HOT:STRICT @-code to declare a strict hot-key color. Use HOT:HUNGRY @-code to toggle back to hungry color-defined hot-keys (the default). New optional boolean argument to JS console.add_hotkey(), hungry = true by default.
-
- May 08, 2020
-
-
rswindell authored
- "HOT" by itself will set the hot-spot attribute to the *current* attribute (just colorize the @-code in your editor the same as you do your cmd keys no need to memorize color-code mnemonics) - "HOT:OFF" will turn off the hot-spot attribute through the end of the text or util re-enabled - Use a more greedy/liberal hot-spot matching algoirthm so that hot spots can overlap and the "best" one will be chosen. No way to opt-out of this algorithm (e.g. to use a conservative matching algo) currently. - Earlier parse of @~ codes to keep text prestine
-
rswindell authored
- User Defaults menu mousified - When all hot spots have scrolled off the screen, clear the hot spot list - Insert new hot spots in the front of the list so they will take precedence over any previously defined duplicate hot spots - Numeric hot spot commands end in a carriage-return - No auto-acceptence of numbers when there are keys in the keyboard buffer - Baja UNGETKEY function now inserts keys into the "front" of the keyboard buffer (next to be consumed) - Hot key @-code command text supports C-style escape sequences (allows encoding of ctrl chars, spaces, etc.)
-
rswindell authored
Resolve GCC warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long int'
-
rswindell authored
- hot spots are clickable screen areas (e.g. in menus and prompts) that generate key-strokes - commands may be from 1 to 127 ASCII-characters in length - currently using the X10 mouse reporting mode, may change - all mnemonics strings (~Example) are automatically hot-spots - The new ~ @-code defines a hot spot - Any screen-clear operation clears all hot spots - sbbs now tracks the current screen (cursor position) row - eliminated the old "tos" (top-of-screen) boolean (row == 0 indicates "tos") - created an sbbs_t::ungetstr() method - keep track if in pause (hit a key) prompt, for special mouse behavior new JS console object: - row property - tos property is now read-only (and deprecated) - new methods: add_hotspot() clear_hotspots() scroll_hotspots() redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
-
- May 04, 2020
-
-
rswindell authored
When inkey() receives an ANSI escape sequence it doesn't need to consume, put the consumed characters into the keyboard buffer *ahead* of whatever else is in the keyboard buffer already. Uses new ungetkey() insert mode option.
-
rswindell authored
The temporary pause toggle command (Ctrl-O) is now stored in the sbbs_t::console member so re-loads of the user-record (due to external changes) won't seemingly-randomly toggle off the user's temp toggle.
-
- May 03, 2020
-
-
rswindell authored
Assume the characters in the ungetkey-buffer are ASCII. This fixes the problem with getstr(..., K_AUTODEL) and PETSCII terminals, reversing the case (capitalization) of the first character typed.
-
rswindell authored
When a user sends an ANSI escape sequence (like say, an arrow key), don't set the persistent ANSI flag in their user record. Setting the flag in the auto-terminal detection value should be enough.
-
- Oct 24, 2019
-
-
rswindell authored
running a JavaScript module would crash (e.g. segfault) sbbs: Create and use a separate JS runtime, context, and global object/scope for global hotkey events. This means that the hotkey won't benefit from any previously loaded/required scripts, possibly effecting the performance of the first invocation of the hotkey handler. Subsequent JS hotkey events will reuse the same runtime/context/global, so they'll execute fast(er). One questionalbe change to js_execfile(): With the JS_GC (garbage collection) call *before* the JS_ENDREQUEST() call, the process would crash in libmozjs. Moving the JS_GC() call to *after* the JS_ENDREQUEST() resolved this issue and I'm not clear why. This 'js_cx' parameter here is not always sbbs_t::js_cx. When called to handle a JS hotkey event, it's sbbs_t::js_hotkey_cx, so it shouldn't interfere with the sbs_t::js_cx being used by the currently executing JS module (shell or door). <scratches chin>
-
- Jul 24, 2019
-
-
rswindell authored
-
- Jul 09, 2019
-
-
rswindell authored
Since not *everything* that #include's sbbs.h needs the PETSCII defs, remove it from sbbs.h and just #include petdefs.h where we need it. The catch-all header file is a problematic organizational design and we are moving away from that.
-
- May 06, 2019
-
-
rswindell authored
^U, ^P, ^T, ^K, etc. and not 0. This allows a CBM/PETSCII terminal user to actual hit their Backspace/Delete key (^T) in response to the new new-user prompt
-
- Apr 28, 2019
-
-
rswindell authored
-
rswindell authored
will be sending 0x7f (DEL) when the backspace key is struck: SWAP_DELETE For example, xterm sends 0x7f when backspace and hit and an ANSI escape sequence when the DEL key is hit. I don't yet have a way to *enable* this setting. Also, allow the user's setting of NO_EXASCII to take effect even when auto-terminal type detection is used (yes, the user's terminal can support ANSI and *not* CP437).
-
- Oct 22, 2018
-
-
rswindell authored
So Omegix recently asked in the Synchronet Discussion group whether or not a PETSCII (Commodore) terminal could be used to access his Synchronet BBS. Now, the answer is "Yes". :-) The major issues addressed: - detecting a PETSCII terminal, solved by assigning specific (configurable): TCP ports to be used for incoming PETSCII connections, by default: port 64 is for 40-column PETSCII and port 128 is for 80-column PETSCII, but if the terminal sends a Telnet Window Size reply (e.g. SyncTERM), then either size terminal should fine on either port. The port numbers are configurable in the [BBS] section of your sbbs.ini file using the new keys: PET40Port (default value: 64) and PET80Port (default value: 128). Having these keys set doesn't make make the terminal server listen on that additional port - you'll need to add more IP:port combinations to one of Interfaces values, example: TelnetInterface=71.95.196.34,71.95.196.34:64,71.95.196.34:128 And you don't have to use Telnet for the PETSCII connections - you could use RLogin or SSH instead (or in addition). - support for terminal widths < 80 columns: This was achieved through a combination of text.dat changes (numerous), new Ctrl-A and @-codes and new optional terminal-width-specific menu files (e.g. text/menu/main.40col.asc) A side effect of these changes is actually better support for terminals *wider* than 80 columns as well! - support for terminals that don't expand tabs to spaces (e.g. PETSCII): The terminal server now handles tab expansion with a run-time settable tab-size (default size: 8) - conditional access based on PETSCII (or small) terminal use (or not): + New PETSCII ARS keyword (boolean) + New COLS and ROWS ARS keywords (for terminal width and height requirements) + New TERM (string) ARS keyword New @-codes: - WORDWRAP, when placed at the top of a file, enables auto-wordwrap for lines longer than the terminal width - CENTER, the text following before an end of line will be displayed centered on the terminal (whatever the width, in columns) - CLEAR, like CLS, except it ignores (doesn't display) a CRLF that follows - COLS, current number of terminal columns (width) - ROWS, current number of terminal rows (height) - TERM, the auto-detected or reported terminal type (e.g. ANSI, TTY, etc.) - SYSONLY, toggles "echo" (display) off/back-on for non-sysops similar to the Ctrl-A( and ) codes, but more convenient to use (and PabloDraw won't strip the @-code from the file like it does with Ctrl-A codes it doesn't support) New Ctrl-A codes: - \ conditional new-line/continuation when the terminal width is < 80 cols prints the new text.dat string LongLineContinuationPrefix yesno() will now return true if passed a blank string. noyes() will now return false if passed a blank string. getstr()'s input length limiting based on terminal width is more broadly applied now (not just when using the K_LINE mode flag). New JS bbs object method: menu_exists(<base_filename>) returns Boolean New JS console object property: tabstop (Number) New JS console object methods: getbyte() and putbyte() to recv/send raw byte value with (very little) interpretation/intervention by the terminal server New JS console object method: creturn() - performs a carriage return (or equivalent) New JS (and C) printfile() mode flag: P_TRUNCATE, causes long lines to be truncated, rather than displaying causing a line-wrap. New text.dat strings: - NoAccessTerminal (for ARS check failures) - LongLineContinuationPrefix (for breaking long lines for 40col terminals) - Scanning (replaces a previously hard-coded "Scanning" string) - Done (replaces a previusly hard-coded "Done") - Scanned (when finished scannning, clears the progress bar)
-
- Jul 29, 2018
-
-
rswindell authored
from a counter, which allowed 2 depths of nesting (any 2 hot key handlers) to a bit-mask which disallows *any* hot key handler to be re-entrant, but you can enter any of the *other* hot key handlers from any *other* hot key handler. Previously, for example, you could hit Ctrl-P to enter the private message prompt and then Ctrl-P again to re-enter the private message prompt (recusively) - confusingly, requiring 2 'Q'uits to get back to whatever you were doing before you hit the first Ctrl-P. Been like this forever. Now, while in the Ctrl-P (private message) handler, hitting Ctrl-P again does nothing. But you can hit Ctrl-T, or Ctrl-K or any other global hot key and it'll work but those in turn will also disallow recursion of their own handlers.
-
- Mar 11, 2018
-
-
rswindell authored
been reduced due to an upcoming event, say so here.
-
- Feb 20, 2018
-
-
rswindell authored
-
- Dec 30, 2017
-
-
rswindell authored
<ESC>[5~ and <ESC>[6~ (these appear to be VT-220 sequences).
-
- Dec 10, 2017
-
-
rswindell authored
sequence is currently just the <esc>[V and <esc>[U sequences (supported by SyncTERM).
-
- Dec 08, 2016
-
-
rswindell authored
than sprinkling the mapping around the source files. Also, disable the message thread nav keys (arrow keys, home, end) when not in Thread View Mode - too confusing.
-
- Oct 06, 2016
-
-
rswindell authored
-
- Nov 25, 2015
-
-
rswindell authored
Display local time and time zone in system info list. Display local time zone in Ctrl-T output.
-
- Feb 21, 2015
-
-
rswindell authored
-