From 491a35faff7e00a7972225fb2c5918262b23ee07 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sun, 14 Jul 2019 14:26:00 -0400 Subject: Add CSI names to shotty -d --- bin/shotty.c | 60 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 22 deletions(-) (limited to 'bin') diff --git a/bin/shotty.c b/bin/shotty.c index c06783b4..978b5e78 100644 --- a/bin/shotty.c +++ b/bin/shotty.c @@ -146,26 +146,38 @@ static char updateNUL(wchar_t ch) { return NUL; } +#define ENUM_CHARS \ + X('?', DEC) \ + X('A', CUU) \ + X('B', CUD) \ + X('C', CUF) \ + X('D', CUB) \ + X('E', CNL) \ + X('F', CPL) \ + X('G', CHA) \ + X('H', CUP) \ + X('J', ED) \ + X('K', EL) \ + X('M', DL) \ + X('P', DCH) \ + X('[', CSI) \ + X('\\', ST) \ + X(']', OSC) \ + X('d', VPA) \ + X('h', SM) \ + X('l', RM) \ + X('m', SGR) + enum { - CSI = '[', - ST = '\\', - OSC = ']', - CUU = 'A', - CUD = 'B', - CUF = 'C', - CUB = 'D', - CNL = 'E', - CPL = 'F', - CHA = 'G', - CUP = 'H', - ED = 'J', - EL = 'K', - DL = 'M', - DCH = 'P', - VPA = 'd', - SM = 'h', - RM = 'l', - SGR = 'm', +#define X(ch, name) name = ch, + ENUM_CHARS +#undef X +}; + +static const char *Name[128] = { +#define X(ch, name) [ch] = #name, + ENUM_CHARS +#undef X }; static char updateESC(wchar_t ch) { @@ -185,7 +197,7 @@ static char updateESC(wchar_t ch) { static char updateCSI(wchar_t ch) { static bool dec; - if (ch == '?') { + if (ch == DEC) { dec = true; return CSI; } @@ -305,11 +317,15 @@ static char updateCSI(wchar_t ch) { } if (debug) { - printf("CSI %s", (dec ? "? " : "")); + printf("CSI %s", (dec ? "DEC " : "")); for (uint i = 0; i < n; ++i) { printf("%s%u ", (i ? "; " : ""), ps[i]); } - printf("%lc\n", ch); + if (ch < 128 && Name[ch]) { + printf("%s\n", Name[ch]); + } else { + printf("%lc\n", ch); + } html(true); } -- cgit 1.4.1 b221753cbf37d163f'/>
path: root/chat.h (unfollow)
Commit message (Collapse)Author
2020-02-12Add C-v and M-vJune McEnroe
I figure there should be some way to scroll without keypad, and apparently this is what emacs offers...
2020-02-12Allow for arguments to open/copy utilitiesJune McEnroe
2020-02-12Handle RPL_AWAYJune McEnroe
2020-02-11Support monochromatic terminalsJune McEnroe
Oops, division by zero!
2020-02-11Add .gz to chroot-man scriptJune McEnroe
2020-02-11Add -R restricted flagJune McEnroe
2020-02-11Add chroot targetJune McEnroe
2020-02-11Exit focus and paste modes on err exitJune McEnroe
2020-02-11Add startup GPLv3 note and URLJune McEnroe
I am a degenerate.
2020-02-11Make sure -D_GNU_SOURCE ends up in CFLAGS on LinuxJune McEnroe
2020-02-11Add note about setting PKG_CONFIG_PATHJune McEnroe
2020-02-11Rename query ID on nick changeJune McEnroe
2020-02-11Call completeClear when closing a windowJune McEnroe
2020-02-11Don't insert color codes for non-mentionsJune McEnroe
2020-02-11Take first two words in colorMentionsJune McEnroe
This lets phrases like "hi june" get colored, but still doesn't get carried away.
2020-02-11Use time_t for save signatureJune McEnroe
It's actually more likely to be 64-bit than size_t anyway, and it eliminates some helper functions. Also don't error when reading an empty save file.
2020-02-11Set self.nick to * initiallyJune McEnroe
Allows removing a bunch of checks that self.nick is set, and it's what the server usually calls you before registration. Never highlight notices as mentions.
2020-02-11Define ColorCap instead of hardcoding 100June McEnroe
2020-02-11Move hash to top of chat.hJune McEnroe
2020-02-11Move base64 out of chat.hJune McEnroe
2020-02-11Move XDG_SUBDIR out of chat.hJune McEnroe
2020-02-11Fix whois idle unit calculationJune McEnroe
Rookie mistake.
2020-02-11Cast towupper to wchar_tJune McEnroe
For some reason it takes and returns wint_t...
2020-02-11Cast set but unused variables to voidJune McEnroe
2020-02-11Declare strlcatJune McEnroe
2020-02-11Check if VDSUSP existsJune McEnroe
2020-02-11Fix completeReplace iterationJune McEnroe
2020-02-11Use pkg(8) to configure on FreeBSDJune McEnroe
2020-02-11Remove legacy codeJune McEnroe
2020-02-11Add INSTALLING section to READMEJune McEnroe