Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
custom:atcodes [2019/07/10 15:02] – [Format Modifiers] Document the -W / -> switchero and about truncation due to screen width digital man | custom:atcodes [2019/09/20 01:47] – Added FILESIZE, FILEBYTES, FILEKB, FILEMB, and FILEGB digital man |
---|
| |
^ Modifier ^ Purpose ^ | ^ Modifier ^ Purpose ^ |
| -L | Pad and left-justify an expanded @-code | | | ''-L'' | Pad and left-justify an expanded @-code | |
| -R | Pad and right-justify an expanded @-code | | | ''-R'' | Pad and right-justify an expanded @-code | |
| -C | Pad and center an expanded @-code (added in v3.17b) | | | ''-C'' | Pad and center an expanded @-code (added in v3.17b) | |
| -W | Displays double-wide using "fullwidth" Unicode code points if possible, spaces between the characters otherwise | | | ''-W'' | Displays double-wide using "fullwidth" Unicode code points if possible, spaces between the characters otherwise | |
| -Z | Zero-pad and right-justify an expanded @-code (added in v3.17b) | | | ''-Z'' | Zero-pad and right-justify an expanded @-code (added in v3.17b) | |
| -> | Allow the terminal to wrap (don't truncate) overly-long expanded @-codes (added in v3.17c) | | | ''->'' | Allow the terminal to wrap (don't truncate) overly-long expanded @-codes (added in v3.17c) | |
| |
=== Width Specificity === | === Width Specificity === |
| |
^Code ^Aliases ^Description ^ | ^Code ^Aliases ^Description ^ |
| |ANODES |AN, ANODE |Number of active nodes (including current node) | |
| |AUTODEL | |Maximum days of user inactivity before auto-deletion or "unlimited" | |
|BBS |BOARDNAME |Name of BBS | | |BBS |BOARDNAME |Name of BBS | |
|COMPILER | |Compiler used to build Synchronet| | |COMPILER | |Compiler used to build Synchronet| |
|EVENT | |Date and time of next scheduled timed event | | |EVENT | |Date and time of next scheduled timed event | |
|FIDOADDR | |System's primary FidoNet address | | |FIDOADDR | |System's primary FidoNet address | |
| |FILES | |Number of files in the user's currently selected file transfer directory | |
| |FILES://<code>// | |Number of files in the file transfer directory specified by internal-//code// | |
| |FILES://<path>// | |Number of files in the directory specified by //path// | |
| |FILESIZE | |Total size of all files in the user's currently selected file transfer directory | |
| |FILESIZE://<code>//| |Total size of all files in the file transfer directory specified by internal-//code//| |
| |FILESIZE://<path>//| |Total size of all files matching the path/filespec specified in //path//| |
| |FILEKB | |Total size (in kibibytes) of all files in the user's currently selected file transfer directory | |
| |FILEKB://<code>// | |Total size (in kibibytes) of all files in the file transfer directory specified by internal-//code//| |
| |FILEKB://<path>// | |Total size (in kibibytes) of all files matching the path/filespec specified in //path//| |
| |FILEMB | |Total size (in mebibytes) of all files in the user's currently selected file transfer directory | |
| |FILEMB://<code>// | |Total size (in mebibytes) of all files in the file transfer directory specified by internal-//code//| |
| |FILEMB://<path>// | |Total size (in mebibytes) of all files matching the path/filespec specified in //path//| |
| |FILEGB | |Total size (in gibibytes) of all files in the user's currently selected file transfer directory | |
| |FILEGB://<code>// | |Total size (in gibibytes) of all files in the file transfer directory specified by internal-//code//| |
| |FILEGB://<path>// | |Total size (in gibibytes) of all files matching the path/filespec specified in //path//| |
|FREESPACE | |Free disk space available for uploads (in bytes) | | |FREESPACE | |Free disk space available for uploads (in bytes) | |
|FREESPACEK | |Free disk space available for uploads (in kilobytes) | | |FREESPACEK | |Free disk space available for uploads (in kibibytes) | |
|FULL_VER | |Synchronet full version number (e.g. "3.15a")| | |FULL_VER | |Synchronet full version number (e.g. "3.15a")| |
|GRP | |Current message group short description | | |GRP | |Current message group short description | |
|MSG_LIB | |Synchronet Message Base Library version information | | |MSG_LIB | |Synchronet Message Base Library version information | |
|NOACCESS | |Why user was denied access (last failed ARS check) | | |NOACCESS | |Why user was denied access (last failed ARS check) | |
|NODE | |Number of current node | | |NODE |NN |Number of current node | |
|NODE### | |Status of node number ### | | |NODE//n// | |Status of node number //n// | |
|NUMDIR | |Number of current library and directory | | |NUMDIR | |Number of current library and directory | |
| |ONODES |ONODE, ON |Number of other active nodes (not counting current node) | |
|OS_VER | |Operating system type and version information| | |OS_VER | |Operating system type and version information| |
|PLATFORM | |Platform or operating system name (e.g. "win32", "linux")| | |PLATFORM | |Platform or operating system name (e.g. "win32", "linux")| |
| |PWDAYS | |Maximum age (in days) of user's password before forced-change or "unlimited" | |
|QUESTION | |Current Yes/No question being asked of the user | | |QUESTION | |Current Yes/No question being asked of the user | |
|QWKID | |System's QWK BBS-ID | | |QWKID | |System's QWK BBS-ID | |
|MSG_TAGS | |Current message tags (space-separated, optional)| | |MSG_TAGS | |Current message tags (space-separated, optional)| |
|MSG_DATE | |Current message date/time written | | |MSG_DATE | |Current message date/time written | |
| |MSG_IMP_DATE | |Current message date/time imported | |
|MSG_AGE | |Current message age (e.g. in seconds, minutes, hours, etc.) | | |MSG_AGE | |Current message age (e.g. in seconds, minutes, hours, etc.) | |
|MSG_TIMEZONE | |Current message time zone| | |MSG_TIMEZONE | |Current message timezone written | |
| |MSG_IMP_TIMEZONE | |Current message timezone imported | |
|MSG_ATTR | |Current message attributes| | |MSG_ATTR | |Current message attributes| |
|MSG_AUXATTR | |Current message auxiliary attributes| | |MSG_AUXATTR | |Current message auxiliary attributes| |
|TIMEZONE | |Current system time zone abbreviation or UTC offset| | |TIMEZONE | |Current system time zone abbreviation or UTC offset| |
|TMSG | |Total number of messages on system| | |TMSG | |Total number of messages on system| |
|TNODE | |Total number of Terminal Server nodes | | |TNODES |TNODE,TN |Total number of Terminal Server nodes | |
|TUSER | |Total number of currently active registered users | | |TUSER | |Total number of currently active registered users | |
|UPTIME | |Synchronet uptime details| | |UPTIME | |Synchronet uptime details| |
|ALERTS | |Node activity alerts enabled status (e.g. "On" or "Off") | | |ALERTS | |Node activity alerts enabled status (e.g. "On" or "Off") | |
|ALIAS |NAME, USER |User's alias | | |ALIAS |NAME, USER |User's alias | |
|BAUD |BPS |User's connect rate (DCE) in bps | | |
|BDATE | |User's birth date (in "MM/DD/YY" or "DD/MM/YY" format) | | |BDATE | |User's birth date (in "MM/DD/YY" or "DD/MM/YY" format) | |
|BYTELIMIT | |User's free credits per day | | |BYTELIMIT | |User's free credits per day | |
|DLBYTES | |Total bytes downloaded by user | | |DLBYTES | |Total bytes downloaded by user | |
|DLFILES |DOWNS |Total files downloaded by user | | |DLFILES |DOWNS |Total files downloaded by user | |
|DLKLIMIT | |User's total credits (in kilobytes) | | |DLKLIMIT | |User's total credits (in kibibytes) | |
|DOWNK | |Total kilobytes downloaded by user | | |DOWNK | |Total kibibytes downloaded by user | |
|EMAILADDR | |User's Internet e-mail address on your system | | |EMAILADDR | |User's Internet e-mail address on your system | |
|EXPDATE |EXDATE |User's expiration date (in "MM/DD/YY" or "DD/MM/YY" format) | | |EXPDATE |EXDATE |User's expiration date (in "MM/DD/YY" or "DD/MM/YY" format) | |
|LASTTIMEON | |Time of user's last logon (in "HH:MM am" format) | | |LASTTIMEON | |Time of user's last logon (in "HH:MM am" format) | |
|LASTREAL | |Last word of user's real name | | |LASTREAL | |Last word of user's real name | |
|KBLEFT | |User's total credits (in kilobytes) | | |KBLEFT | |User's total credits (in kibibytes) | |
|KBLIMIT |DLKLIMIT, MAXDK |User's free credits per day (in kilobytes) | | |KBLIMIT |DLKLIMIT, MAXDK |User's free credits per day (in kibibytes) | |
|MAILW | |Number of mail messages waiting for current user (includes SPAM)| | |MAILW | |Number of mail messages waiting for current user (includes SPAM)| |
|MAILW:x | |Number of mail messages waiting for current user #x (x=0 for all users)| | |MAILW://x// |MAILW#//x// |Number of mail messages waiting for current user number //x// (x=0 for all users)| |
|MAILP | |Number of pending mail messages sent by current user| | |MAILP | |Number of pending mail messages sent by current user| |
|MAILP:x | |Number of pending mail messages sent by current user #x| | |MAILP://x// |MAILP#//x// |Number of pending mail messages sent by current user number //x// | |
|MEMO | |Date of user's last password modification | | |
|MSGLEFT |MSGSLEFT |Total number of messages posted by user | | |MSGLEFT |MSGSLEFT |Total number of messages posted by user | |
|MSGREAD | |Number of messages read by user this call | | |MSGREAD | |Number of messages read by user this call | |
|PAGER | |Chat pager enabled status (e.g. "On" or "Off")| | |PAGER | |Chat pager enabled status (e.g. "On" or "Off")| |
|PHONE |HOMEPHONE, DATA, DATAPHONE |Users's phone number | | |PHONE |HOMEPHONE, DATA, DATAPHONE |Users's phone number | |
| |PWAGE | |Age (in days) of the current user's password | |
| |PWDATE |MEMO |Date of user's last password modification (in "MM/DD/YY" or "DD/MM/YY" format) | |
|SEC |SECURITY |User's security level (0-99) | | |SEC |SECURITY |User's security level (0-99) | |
|SINCE | |Date of user's first call (in "MM/DD/YY" or "DD/MM/YY" format)| | |SINCE | |Date of user's first call (in "MM/DD/YY" or "DD/MM/YY" format)| |
|SPAMW | |Number of SPAM messages waiting | | |SPAMW | |Number of SPAM messages waiting | |
|SPAMW:x | |Number of SPAM messages waiting for user #x | | |SPAMW://x// |SPAMW#//x// |Number of SPAM messages waiting for user number //x// | |
|SPLITP | |Split-screen private chat enabled status (e.g. "On" or "Off")| | |SPLITP | |Split-screen private chat enabled status (e.g. "On" or "Off")| |
|STATE | |User's state (from location)| | |STATE | |User's state (from location)| |
|UPBYTES | |Total bytes uploaded by user | | |UPBYTES | |Total bytes uploaded by user | |
|UPFILES |UPS |Total files uploaded by user | | |UPFILES |UPS |Total files uploaded by user | |
|UPK | |Total kilobytes uploaded by user | | |UPK | |Total kibibytes uploaded by user | |
|USERNUM | |User's number (1-based index into user database) | | |USERNUM | |User's number (1-based index into user database) | |
|ZIP | |User's zip/postal code | | |ZIP | |User's zip/postal code | |
| |
^Code ^Aliases ^Description ^ | ^Code ^Aliases ^Description ^ |
| |BPS |BAUD |Current emulated modem (DCE) bit-rate, in bps | |
| |BPS://n// | |Set the current emulated rate to 0 (unlimited), or 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 76800, or 115200 bps| |
|BEEP |BELL |Generate a beep sound on the user's terminal | | |BEEP |BELL |Generate a beep sound on the user's terminal | |
|CLS | |Clear the screen | | |CLS | |Clear the screen | |
|CRLF | |Send a carriage return/line-feed pair | | |CRLF | |Send a carriage return/line-feed pair | |
|CHECKMARK | |Send a check mark symbol appropriate for the user's terminal | | |CHECKMARK | |Send a check mark symbol appropriate for the user's terminal | |
| |COPY | |Send a copyright symbol appropriate for the user's terminal, e.g. "(c)" | |
| |SOUNDCOPY | |Send a sound-copyright symbol appropriate for the user's terminal, e.g. "(P)" | |
| |REGISTERED | |Send a registered mark appropriate for the user's terminal, e.g. "(r)" | |
| |TRADEMARK | |Send a trademark symbol appropriate for the user's terminal, e.g. "(tm)" | |
| |ELLIPSIS | |Send a ellipsis (...) appropriate for the user's terminal | |
| |DEGREE_C | |Send a degree Celsius symbol appropriate for the user's terminal | |
| |DEGREE_F | |Send a degree Fahrenheit symbol appropriate for the user's terminal | |
| |YESCHAR | |Print the character that corresponds with an affirmative "Yes" answer key (e.g. ''Y'') | |
| |NOCHAR | |Print the character that corresponds with an negative "No" answer key (e.g. ''N'') | |
| |QUITCHAR | |Print the character that corresponds with a "quit" command key (e.g. ''Q'') | |
|EOF | |End-of-file (stop parsing/displaying) | | |EOF | |End-of-file (stop parsing/displaying) | |
|PAUSE |MORE |Force a screen pause (hit a key) prompt| | |PAUSE |MORE |Force a screen pause (hit a key) prompt| |
|POFF |NOPAUSE |Toggle automatic screen pause off | | |POFF |NOPAUSE |Toggle automatic screen pause off | |
|RESETPAUSE | |Reset the automatic screen pause line counter | | |RESETPAUSE | |Reset the automatic screen pause line counter | |
| |DELAY://n// | |Wait //n// 10ths of a second before continuing | |
|UP://n// | |Move cursor up //n// rows | | |UP://n// | |Move cursor up //n// rows | |
|DOWN://n// | |Move cursor down //n// rows | | |DOWN://n// | |Move cursor down //n// rows | |
|LEFT://n// | |Move cursor left //n// columns | | |LEFT://n// | |Move cursor left //n// columns | |
|GOTOXY://x,y// | |Move cursor to //x/////y// coordinate (1-based) | | |GOTOXY://x,y// | |Move cursor to //x/////y// coordinate (1-based) | |
| |POS://x// | |Move cursor to column //x// (1-based) | |
|HOME | |Home cursor (to upper left), don't clear| | |HOME | |Home cursor (to upper left), don't clear| |
|CLRLINE | |Clear the current line (cursor to first column)| | |CLRLINE | |Clear the current line (cursor to first column)| |
|CENTER | |Middle-align the remaining text on the line | | |CENTER | |Middle-align the remaining text on the line | |
|SYSONLY | |Toggle off/on visibility for non-sysops | | |SYSONLY | |Toggle off/on visibility for non-sysops | |
| |FILL://text// | |Repeat the specified text, filling the current line (to terminal columns - 1) | |
|WIDE://text// | |Display specified //text// double-wide, using Unicode "fullwidth" characters if possible | | |WIDE://text// | |Display specified //text// double-wide, using Unicode "fullwidth" characters if possible | |
|U+//code// | |Send a Unicode character code point (in hexadecimal) to UTF-8 terminal or an automatic fallback character, if supported((Not all Unicode code points support fallback characters for ASCII/CP437/PETSCII terminals)) | | |U+//code// | |Send a Unicode character code point (in hexadecimal) to UTF-8 terminal or an automatic fallback character, if supported((Not all Unicode code points support fallback characters for ASCII/CP437/PETSCII terminals)) | |
|U+//code/////char// | | Send a Unicode character code point, specifying fallback character value in hexadecimal (or ''0'' for //none//) | | |U+//code//://text// | | Send a Unicode character code point, specifying fallback string | |
| |U+//code//,//char// | | Send a Unicode character code point, specifying fallback character value in hexadecimal (or ''0'' for //none//) | |
|U+//code//!//char// | | Send a Unicode character code point, specifying fallback character only to used when no automatic fallback is available | | |U+//code//!//char// | | Send a Unicode character code point, specifying fallback character only to used when no automatic fallback is available | |
| |
==== Unicode ==== | ==== Unicode ==== |
Only UTF-8 terminals support Unicode. For other terminals (TTY/ASCII, CP437, and PETSCII), an equivalent "fallback" character may be automatically available or explicitly specified in the @-code itself. | Only UTF-8 terminals support Unicode. For other terminals (TTY/ASCII, CP437, and PETSCII), an equivalent "fallback" character may be automatically available or when using the ''U+'' @-codes, explicitly specified in the @-code itself. |
| |
The 'U+' @-code supports additional syntax to allow the sysop to specify the CP437 fallback character: | The 'U+' @-code supports additional syntax to allow the sysop to specify the CP437 fallback character: |
* ''@U+<code>/<char>@'': Send a Unicode character with specified fallback character, in hexadecimal (specify ''0'' to send //no// character to non-UTF-8 terminals) | * ''@U+<code>:<text>@'': Send a Unicode character with specified fallback character sequence (string) |
| * ''@U+<code>,<char>@'': Send a Unicode character with specified fallback character, in hexadecimal (specify ''0'' to send //no// character to non-UTF-8 terminals) |
* ''@U+<code>!<char>@'': Send a Unicode character with specified fallback character to be used //only// when no automatic fallback character is supported | * ''@U+<code>!<char>@'': Send a Unicode character with specified fallback character to be used //only// when no automatic fallback character is supported |
| |
| === Examples === |
| |
| ^ @-code ^ UTF-8 ^ CP437 ^ US-ASCII ^ |
| | WIDE:Test | ''Test'' | ''T e s t'' | ''T e s t'' | |
| | CHECKMARK | ''✓'' | ''√'' | ''+'' | |
| | COPY | ''©'' | ''(C)'' | ''(C)'' | |
| | TRADEMARK | ''™'' | ''(TM)'' | ''(TM)'' | |
| | ELLIPSIS | ''…'' | ''...'' | ''...'' | |
| | U+20AC | ''€'' | | | |
| | U+20AC,24 | ''€'' | ''$'' | ''$'' | |
| | U+2265 | ''≥'' | ''≥'' | ''>'' | |
| | U+2265!a8 | ''≥'' | ''≥'' | ''>'' | |
| | U+2265,a8 | ''≥'' | ''¿'' | ''?'' | |
| | U+1F609 | ''😉'' | | | |
| | U+1F609:;-) | ''😉'' | '';-)'' | '';-)'' | |
| |
| |
===== External Content ===== | ===== External Content ===== |
| |