From f2854fd94fbd01d005098868771ce5e6a82f3aae Mon Sep 17 00:00:00 2001 From: adamyg Date: Mon, 9 Sep 2024 01:40:31 +0800 Subject: [PATCH] console/tty management --- macsrc/tty/cygwin.cr | 5 +- macsrc/tty/tty_xterm.h | 7 +- macsrc/tty/xterm.cr | 271 +++++++++++++++++++++------------ macsrc/tty/xterm_gnome.cr | 30 +--- macsrc/tty/xterm_linux.cr | 7 +- macsrc/tty/xterm_mintty.cr | 24 ++- macsrc/tty/xterm_mrxvt.cr | 6 +- macsrc/tty/xterm_msterminal.cr | 127 +++++++++++++++ macsrc/tty/xterm_rxvt.cr | 8 +- macsrc/tty/xterm_sun.cr | 4 +- macsrc/tty/xterm_util.cr | 74 +++++---- 11 files changed, 380 insertions(+), 183 deletions(-) create mode 100644 macsrc/tty/xterm_msterminal.cr diff --git a/macsrc/tty/cygwin.cr b/macsrc/tty/cygwin.cr index a24bae81..5176df26 100644 --- a/macsrc/tty/cygwin.cr +++ b/macsrc/tty/cygwin.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: cygwin.cr,v 1.13 2014/10/22 02:34:39 ayoung Exp $ +/* $Id: cygwin.cr,v 1.14 2024/06/18 16:26:25 cvsuser Exp $ * terminal description for the cygwin window * * @@ -175,7 +175,7 @@ main() /* - * cygwin_colour256 --- + * cygwin_256color --- * Color terminal. * * Usage: @@ -189,3 +189,4 @@ cygwin_256color(void) } + diff --git a/macsrc/tty/tty_xterm.h b/macsrc/tty/tty_xterm.h index 723ddcf0..b2dddf09 100644 --- a/macsrc/tty/tty_xterm.h +++ b/macsrc/tty/tty_xterm.h @@ -1,7 +1,7 @@ #ifndef TTY_TTY_XTERM_H_INCLUDDED #define TTY_TTY_XTERM_H_INCLUDDED /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: tty_xterm.h,v 1.4 2014/10/22 02:34:41 ayoung Exp $ +/* $Id: tty_xterm.h,v 1.5 2024/06/18 16:26:25 cvsuser Exp $ * xterm tty features ... * * @@ -13,11 +13,6 @@ extern void xterm_graphic(void); extern void xterm_color(void); extern void xterm_mono(void); extern void xterm_pccolors(void); -extern void xterm_colour88(void); -extern void xterm_color88(void); -extern void xterm_88colour(void); -extern void xterm_colour256(void); -extern void xterm_color256(void); extern void xterm_256color(void); extern void xterm_88color(void); extern void xterm_standard(void); diff --git a/macsrc/tty/xterm.cr b/macsrc/tty/xterm.cr index cc55c469..fa7fc2a3 100644 --- a/macsrc/tty/xterm.cr +++ b/macsrc/tty/xterm.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; tabs: 8; -*- - * $Id: xterm.cr,v 1.23 2024/05/03 00:13:04 cvsuser Exp $ + * $Id: xterm.cr,v 1.28 2024/08/25 06:02:04 cvsuser Exp $ * terminal description file for the xterm window under X11, an VT-100 like emulator. * * @@ -56,18 +56,18 @@ XTerm*VT100.Translations: #override \ CtrlF10: string(\033[CF10~)\n\ CtrlF11: string(\033[CF11~)\n\ CtrlF12: string(\033[CF12~)\n\ - MetaF1: string(\033[MF1~)\n\ - MetaF2: string(\033[MF2~)\n\ - MetaF3: string(\033[MF3~)\n\ - MetaF4: string(\033[MF4~)\n\ - MetaF5: string(\033[MF5~)\n\ - MetaF6: string(\033[MF6~)\n\ - MetaF7: string(\033[MF7~)\n\ - MetaF8: string(\033[MF8~)\n\ - MetaF9: string(\033[MF9~)\n\ - MetaF10: string(\033[MF10~)\n\ - MetaF11: string(\033[MF11~)\n\ - MetaF12: string(\033[MF12~)\n\ + MetaF1: string(\033[AF1~)\n\ + MetaF2: string(\033[AF2~)\n\ + MetaF3: string(\033[AF3~)\n\ + MetaF4: string(\033[AF4~)\n\ + MetaF5: string(\033[AF5~)\n\ + MetaF6: string(\033[AF6~)\n\ + MetaF7: string(\033[AF7~)\n\ + MetaF8: string(\033[AF8~)\n\ + MetaF9: string(\033[AF9~)\n\ + MetaF10: string(\033[AF10~)\n\ + MetaF11: string(\033[AF11~)\n\ + MetaF12: string(\033[AF12~)\n\ ShiftKP_0: string(\033OP)\n\ ShiftKP_1: string(\033OQ)\n\ ShiftKP_2: string(\033OR)\n\ @@ -119,24 +119,27 @@ XTerm*VT100.Translations: #override \ #include "tty.h" #include "tty_xterm.h" -static void xterm_locale(); +static int xterm_load(string name); +static void xterm_locale(); void -main() +main(void) { - string t_grterm, bterm, ostype, colorterm, sysname; + string bterm, ostype, colorterm, sysname; int datype = -1, daversion = -1; - list bterm_parts; - /* - * Auto-configure with specialised term spec. - */ - t_grterm = getenv("GRTERM"); /* term override */ - if (strlen(t_grterm)) { - bterm_parts = split(t_grterm, "-"); - if (length_of_list(bterm_parts)) { - if ("xterm" == bterm_parts[0]) { - bterm = bterm_parts[1]; /* xterm-rxvt */ + // Auto-configure with specialised term spec. + // + // Note, either GRTERM=xterm or TERM=xterm was set. + // + bterm = lower(getenv("GRTERM")); + if (strlen(bterm)) { + list termpts = split(bterm, "-"); + + bterm = ""; + if (length_of_list(termpts) > 1) { + if ("xterm" == termpts[0]) { /* assume: xterm-xxx, for example xterm-rxvt */ + bterm = termpts[1]; lower(bterm); } } @@ -150,142 +153,193 @@ main() load_macro("tty/xterm_util", FALSE); } - // TERM/GRTERM + // GRTERM/TERM // if (bterm == "gnome" || - (bterm == "" && colorterm == "gnome-terminal")) { - message("xterm_gnome"); - load_macro("tty/xterm_gnome"); + (bterm == "" && colorterm == "gnome-terminal") /*legacy*/) { + xterm_load("xterm-gnome"); return; } -//TODO -// if (bterm == "konsole" || -// getenv("KONSOLE_DCOP") != "") || -// getenv("KONSOLE_DBUS_SESSION") != "") { -// message("xterm_konsole"); -// load_macro("tty/xterm_konsole"); -// return; -// } - if (bterm == "aix" || bterm == "aixterm" || (bterm == "" && sysname == "AIX")) { + // + // xterm-aixterm or AIX host. + // message("xterm_aix"); xterm_arrow(); bterm = "aix"; } else if (bterm == "linux" || (bterm == "" && (ostype == "linux" || ostype == "linux-gnu" || sysname == "Linux"))) { - message("xterm_linux"); + // + // xterm-linux or linux host. + // xterm_locale(); - load_macro("tty/xterm_linux"); + xterm_load("xterm-linux"); return; } else if (bterm == "mrxvt" || (bterm == "rxvt" && getenv("MRXVT_TABTITLE") != "")) { + // + // xterm-mrxvt or xterm-rxvt // // MRXVT_TABTITLE // Set to the initial tab title of each terminal. Notice that its value will not be // altered if the user uses a shortcut or escape sequence to change the tab title; // the user must modify manually after doing so. // - message("xterm-mrxvt"); /* 05/01/10 */ - load_macro("tty/xterm_mrxvt"); + xterm_load("xterm-mrxvt"); return; - } else if (bterm == "rxvt" || colorterm == "rxvt" || colorterm == "rxvt-xpm") { - message("xterm-rxvt"); - load_macro("tty/xterm_rxvt"); + } else if (bterm == "rxvt" || bterm == "urxvt" || + colorterm == "rxvt" || colorterm == "rxvt-xpm") { + // + // term-rxvt, term-urxvt or + // COLORTERM=rxvt/rxvt-xpm + // + xterm_load("xterm-rxvt"); return; - } else if (bterm == "rxvt" || bterm == "urxvt" || bterm == "mintty") { - message("xterm-" + bterm); - if (load_macro("tty/xterm_" + bterm)) { + } else if (bterm == "mrxvt" || bterm == "mintty") { + // + // xterm-mrxvt or xterm-mintty + // + if (xterm_load("xterm_" + bterm)) { return; } } + //TODO/TEST + // COLORTERM=xfce4-terminal + + //TODO/TEST + // if (bterm == "konsole" || + // getenv("KONSOLE_DCOP") != "") || + // getenv("KONSOLE_DBUS_SESSION") != "") { + // message("xterm_konsole"); + // load_macro("tty/xterm_konsole"); + // return; + // } + // Device Attribute Tests // + // DECDA2R (CSI > 65 ; FIRMWARE ; KEYBOARD [; OPTION]* c) + // + // Firmware: + // + // 1 = VT220 + // 2 = VT240 + // 3 = DECmate II + // 18 = VT330 + // 19 = VT340 + // 24 = VT320 + // 28 = DECterm + // 32 = VT382J + // 41 = VTV420 + // 42 = VT1000 + // 44 = VT382T + // 61 = VT510 + // 64 = VT520 + // 65 = VT525 + // 66 = VTStar + // // A number of xterm compatible terminals normally run under the generic TERM // identifier "xterm" yet can be derived using the "VT/XTERM Device Attribute", // these include. // - // Terminal Type Version - // - // gnone-terminal 0/1 >= 1115 - // PuTTY 0/1 136 - // rxvt 82 - // urxvt 83 - // MinTTY 77 - // xterm -2(a) + // Terminal Type Version Example + // ------------------------------------------------------------------------- + // Gnome-terminal (legacy) 1 >= 1115 1;3801;0 + // Gnome-terminal 65 >= 6001 65;6001;1 + // PuTTY 0 136 0;136;0 + // kconsole 0;115;0 + // Terminal.app 1 95 1;95;0 + // iTerm2 0 95 0;95;0 + // minTTY 77(M) 77;20005;0c ("20000" == 2.0.0) + // rxvt 82(R) 82;20703;0c ("20703" == 2.7.3) + // screen 83(S) 83;40500;0 (added "30600" == 3.6.0) + // urxvt 85(U) + // libvterm 0;100;0 + // msterminal 0 10 0;10;1c + // xterm -2(a) // // Notes: - // a) Sourced from XTERM_VERSION not DA values. + // a) Sourced from XTERM_VERSION not DA values. + // + // https://invisible-island.net/xterm/ctlseqs/ctlseqs.pdf // bterm = "xterm"; /* default */ get_term_feature(TF_VT_DATYPE, datype); get_term_feature(TF_VT_DAVERSION, daversion); +#if defined(TF_VT_HARDWARE) + get_term_feature(TF_VT_HARDWARE, dahardware); +#endif if (datype >= 0) { - if ((datype | 1) == 1) { - if (daversion >= 1115) { /* gnome, hopefully */ - message("xterm_gnome"); - load_macro("tty/xterm_gnome"); + switch (datype) { + case 0: + if (daversion == 115) { /* kconsole */ + bterm = "xterm-kconsole"; + + } else if (daversion == 136) { /* PuTTY (mintty) */ + xterm_load("xterm-mintty"); return; - } else if (136 == daversion) { /* MinTTY/PuTTY */ - bterm = "mintty"; + } else { + if (daversion == 10) { + /* https://github.com/microsoft/terminal/pull/6850/files */ + if (getenv("WT_SESSION")) { /* msterminal "0;10;1c" */ + xterm_load("xterm-msterminal"); + return; + } + } + } + break; + + case 1: + if (daversion >= 1115) { /* gnome, hopefully */ + xterm_load("xterm-gnome"); + return; + } + break; - } else if (83 == datype) { /* urxvt */ - message("xterm-urxvt"); -//TODO load_macro("tty/xterm_rxvt"); -// return; + case 61: /* see: https://github.com/GNOME/vte/blob/master/src/vteseq.cc */ + case 65: + if (daversion >= 6001) { + xterm_load("xterm-gnome"); + return; } + break; - } else if (82 == datype) { /* rxvt */ - message("xterm-rxvt"); - load_macro("tty/xterm_rxvt"); - return; + case 77: /* minTTY (ASCII=M) */ + xterm_load("xterm-mintty"); + return; + + case 82: /* rxvt (ASCII=R) */ + xterm_load("xterm-rxvt"); + return; - } else if (77 == datype) { /* MinTTY */ - bterm = "mintty"; + case 83: /* TODO/screen (ASCII=S) */ + bterm = "xterm-screen"; + break; + case 85: /* TODO/urxvt (ASCII=U) */ + bterm = "xterm-urxvt"; + break; } } set_term_feature(TF_NAME, bterm); xterm_graphic(); - if ("mintty" == bterm) { - if (load_macro("tty/xterm_mintty")) { - return; - } - } - if (-2 == datype) { - if (daversion > 0 && daversion < 166) { + if (daversion > 0 && daversion < 166) { /* legacy unicode */ set_term_feature(TF_UNICODE_VERSION, "3.0.0"); } xterm_locale(); } - /* - * Color suffix - */ - if (index(colorterm, "-256") > 0 || colorterm == "truecolor") { - xterm_256color(); /* 256[color] */ - - } else if (index(colorterm, "-88") > 0) { - xterm_88color(); /* 88[color] */ - - } else if (index(colorterm, "-m") > 0) { - xterm_mono(); /* m[ono] */ - - } else { - xterm_color(); /* 16 colour by default */ - } - xterm_standard(); /* @@ -313,9 +367,9 @@ main() "\x1b[CF9~", "\x1b[CF10~", "\x1b[CF11~", "\x1b[CF12~"), ALT_F1_F12, quote_list( /* VT100.Trans */ - "\x1b[MF1~", "\x1b[MF2~", "\x1b[MF3~", "\x1b[MF4~", - "\x1b[MF5~", "\x1b[MF6~", "\x1b[MF7~", "\x1b[MF8~", - "\x1b[MF9~", "\x1b[MF10~", "\x1b[MF11~", "\x1b[MF12~"), + "\x1b[AF1~", "\x1b[AF2~", "\x1b[AF3~", "\x1b[AF4~", + "\x1b[AF5~", "\x1b[AF6~", "\x1b[AF7~", "\x1b[AF8~", + "\x1b[AF9~", "\x1b[AF10~", "\x1b[AF11~", "\x1b[AF12~"), ALT_A_Z, quote_list( /* X.Org (7bit) (lower case) */ "\xC3\xA1", "\xC3\xA2", "\xC3\xA3", "\xC3\xA4", "\xC3\xA5", @@ -428,6 +482,21 @@ main() } +static int +xterm_load(string name) +{ + string macroname; + + macroname = "tty/" + name; + macroname = re_translate(SF_GLOBAL, "[ -]+", "_", macroname); + + message(name); + set_term_feature(TF_NAME, name); + + return load_macro(macroname); +} + + static void xterm_locale() { @@ -445,3 +514,5 @@ xterm(void) { /*NOTHING*/ } + +/*end*/ diff --git a/macsrc/tty/xterm_gnome.cr b/macsrc/tty/xterm_gnome.cr index f959366a..6eb5170d 100644 --- a/macsrc/tty/xterm_gnome.cr +++ b/macsrc/tty/xterm_gnome.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_gnome.cr,v 1.7 2014/10/22 02:34:43 ayoung Exp $ +/* $Id: xterm_gnome.cr,v 1.8 2024/06/18 16:26:25 cvsuser Exp $ * terminal description file for the xterm window under Gnome-terminal. * * @@ -24,7 +24,7 @@ main(void) * drawing windows. */ xterm_graphic(); - xterm_colour256(); /* full 256 color is available */ + xterm_256color(); /* full 256 color is available */ /* * Define escape sequences used for special optimisations on output. @@ -143,28 +143,4 @@ gnome(void) /*gnome*/ } - - - - - - - - - - - - - - - - - - - - - - - - - +/*end*/ diff --git a/macsrc/tty/xterm_linux.cr b/macsrc/tty/xterm_linux.cr index 438bc86b..6a8951a3 100644 --- a/macsrc/tty/xterm_linux.cr +++ b/macsrc/tty/xterm_linux.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_linux.cr,v 1.23 2021/07/11 08:26:12 cvsuser Exp $ +/* $Id: xterm_linux.cr,v 1.25 2024/07/12 16:33:22 cvsuser Exp $ * terminal description file for the xterm window under X11/Linux. * * @@ -72,6 +72,9 @@ main() * Define keyboard layout for non-ascii characters. */ set_term_keyboard( + // + // Function keys + // F1_F12, quote_list( "\x1bOP", "\x1bOQ", "\x1bOR", "\x1bOS", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", @@ -189,3 +192,5 @@ linux_standard() set_term_feature(TF_GRAPHIC_MODE, "\x1B(0"); /* Enter graphics mode. */ set_term_feature(TF_TEXT_MODE, "\x1B(B"); /* Exit graphics mode. */ } + +/*end*/ diff --git a/macsrc/tty/xterm_mintty.cr b/macsrc/tty/xterm_mintty.cr index 71116776..a28c8ccb 100644 --- a/macsrc/tty/xterm_mintty.cr +++ b/macsrc/tty/xterm_mintty.cr @@ -1,6 +1,7 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_mintty.cr,v 1.5 2021/07/11 08:26:12 cvsuser Exp $ +/* $Id: xterm_mintty.cr,v 1.8 2024/08/25 06:02:04 cvsuser Exp $ * Mintty terminal profile. + * See: https://github.com/mintty/mintty/wiki/CtrlSeqs * * * @@ -26,14 +27,15 @@ main() */ xterm_standard(); xterm_graphic(); - xterm_colour256(); /* full 256 color is available */ - - /*UTF8*/ + xterm_256color(); /* full 256 color is available */ /* * Terminal map */ set_term_keyboard( + // + // Function keys + // F1_F12, quote_list( /* xterm */ "\x1bOP", "\x1bOQ", "\x1bOR", "\x1bOS", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", @@ -54,6 +56,7 @@ main() "\x1b[17;6~", "\x1b[18;6~", "\x1b[19;6~", "\x1b[20;6~", "\x1b[21;6~", "\x1b[23;6~", "\x1b[24;6~"), + // // , , , , , // , , , , , // , , , , , @@ -77,6 +80,7 @@ main() "\x1bU", "\x1bV", "\x1bW", "\x1bX", "\x1bY", "\x1bZ"), + // // Ins/0 End/1 Down/2 PgDn/3 Left/4 // 5 Right/6 Home/7 Up/8 PgUp/9 // Del/. Plus Minus Star Divide @@ -105,10 +109,17 @@ main() CTRL_KEYPAD_0_9, quote_list( /* mintty */ NULL, "\x1b[1;5F", "\x1b[1;5B", "\x1b[6;5~", "\x1b[1;5D", NULL, "\x1b[1;5C", "\x1b[1;5H", "\x1b[1;5A", "\x1b[5;5~", - "\x1b[3;5~", NULL, NULL, "\x1b[1;5j", NULL, + "\x1b[1;5n", NULL, NULL, "\x1b[1;5j", NULL, NULL, "\x1b[1;5M", "\x1c", NULL, NULL, NULL), + ALT_KEYPAD_0_9, quote_list( /* mintty */ + "\x1b[1;3p", "\x1b[1;2F", "\x1b[1;3B", "\x1b[6;3~", "\x1b[1;3D", + NULL, "\x1b[1;3C", "\x1b[1;3H", "\x1b[1;3A", "\x1b[5;3~", + "\x1b[1;3n", NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL), + // Miscellous keys // BACK_TAB, "\x1b[Z", @@ -123,3 +134,6 @@ mintty(void) /*NOTHING*/ } +/*end*/ + + diff --git a/macsrc/tty/xterm_mrxvt.cr b/macsrc/tty/xterm_mrxvt.cr index 0d43c7de..1656e38b 100644 --- a/macsrc/tty/xterm_mrxvt.cr +++ b/macsrc/tty/xterm_mrxvt.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_mrxvt.cr,v 1.4 2021/07/11 08:26:12 cvsuser Exp $ +/* $Id: xterm_mrxvt.cr,v 1.6 2024/07/12 16:33:22 cvsuser Exp $ * mrxvt terminal * * The mrxvt program is a terminal emulator for X Window System. It provides DEC VT102 @@ -76,6 +76,9 @@ main() * keyboard for non-ascii characters. */ set_term_keyboard( /* Function keys */ + // + // Function keys + // SHIFT_F1_F12, quote_list( "\x1b[11;2~", "\x1b[12;2~", "\x1b[13;2~", "\x1b[14;2~", "\x1b[15;2~", "\x1b[17;2~", "\x1b[18;2~", "\x1b[19;2~", "\x1b[20;2~", "\x1b[21;2~", @@ -183,3 +186,4 @@ mrxvt() /*NOTHING*/ } +/*end*/ diff --git a/macsrc/tty/xterm_msterminal.cr b/macsrc/tty/xterm_msterminal.cr new file mode 100644 index 00000000..0cdd0fa0 --- /dev/null +++ b/macsrc/tty/xterm_msterminal.cr @@ -0,0 +1,127 @@ +/* -*- mode: cr; indent-width: 4; -*- */ +/* $Id: xterm_msterminal.cr,v 1.2 2024/08/25 06:02:04 cvsuser Exp $ + * msterminal terminal profile. + * https://learn.microsoft.com/en-us/windows/terminal/ + * + * + */ + +#include "tty.h" +#include "tty_xterm.h" + + +void +main() +{ + /* + * Load support functions + */ + set_term_feature(TF_NAME, "xterm-msterminal"); + if (inq_macro("xterm_util") <= 0) { + load_macro("tty/xterm_util", FALSE); + } + + /* + * Basic/common configuration + */ +// set_term_feature(TF_INIT, "\x1b="); /* DECKPAM Enable Keypad Application Mode */ +// set_term_feature(TF_INIT, "\x1b[?1h"); /* DECCKM - Enable Cursor Keys Application Mode */ +// set_term_feature(TF_RESET, "\x1b>"); /* DECKPNM Enable Keypad Numeric Mode */ + +// set_term_feature(TF_INIT, "\x1b[?9001h"); /* enable win32-input-mode */ +// set_term_feature(TF_RESET, "\x1b[?9001l"); /* disable win32-input-mode */ + + xterm_graphic(); + xterm_256color(); /* full 256 color is available */ + + /* + * Terminal map + */ + set_term_keyboard( + // + // Function keys + // + F1_F12, quote_list( /* xterm */ + "\x1bOP", "\x1bOQ", "\x1bOR", "\x1bOS", "\x1b[15~", + "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", + "\x1b[23~", "\x1b[24~"), + + SHIFT_F1_F12, quote_list( /* xterm */ + "\x1b[1;2P", "\x1b[1;2Q", "\x1b[1;2R", "\x1b[1;2S", "\x1b[15;2~", + "\x1b[17;2~", "\x1b[18;2~", "\x1b[19;2~", "\x1b[20;2~", "\x1b[21;2~", + "\x1b[23;2~", "\x1b[24;2~"), + + CTRL_F1_F12, quote_list( /* xterm */ + "\x1b[1;5P", "\x1b[1;5Q", "\x1b[1;5R", "\x1b[1;5S", "\x1b[15;5~", + "\x1b[17;5~", "\x1b[18;5~", "\x1b[19;5~", "\x1b[20;5~", "\x1b[21;5~", + "\x1b[23;5~", "\x1b[24;5~"), + + CTRLSHIFT_F1_F12, quote_list( /* msterminal/mintty */ + "\x1b[1;6P", "\x1b[1;6Q", "\x1b[1;6R", "\x1b[1;6S", "\x1b[15;6~", + "\x1b[17;6~", "\x1b[18;6~", "\x1b[19;6~", "\x1b[20;6~", "\x1b[21;6~", + "\x1b[23;6~", "\x1b[24;6~"), + + ALT_F1_F12, quote_list( /* msterminal */ + "\x1b[1;3P", "\x1b[1;3Q", "\x1b[1;3R", "\x1b[1;3S", "\x1b[15;3~", + "\x1b[17;3~", "\x1b[18;3~", "\x1b[19;3~", "\x1b[20;3~", "\x1b[21;3~", + "\x1b[23;3~", "\x1b[24;3~"), + + // + // Ins/0 End/1 Down/2 PgDn/3 Left/4 + // 5 Right/6 Home/7 Up/8 PgUp/9 + // Del/. Plus Minus Star Divide + // Equals Enter Pause PrtSc Scroll + // NumLock + // + KEYPAD_0_9, quote_list( /* Standard (Application mode) */ + "\x1b[2~", "\x1bOF", "\x1bOB", "\x1b[6~", "\x1bOD", + "\x1bOE", "\x1bOC", "\x1bOH", "\x1bOA", "\x1b[5~", + "\x1b[3~", "\x1bOk", "\x1bOm", "\x1bOj", "\x1bOo", + NULL, "\x1bOM"), + + // + // Ins, End, Down, PgDn, Left, + // 5, Right, Home, Up, PgUp, + // Del, Plus, Minus, Star, Divide, + // Equals, Enter, Pause, PrtSc, Scroll, + // NumLock + // + SHIFT_KEYPAD_0_9, quote_list( /* msterminal */ + NULL, "\x1b[1;2F", "\x1b[1;2B", "\x1b[6;2~", "\x1b[1;2D", + NULL, "\x1b[1;2C", "\x1b[1;2H", "\x1b[1;2A", "\x1b[5;2~", + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL), + + CTRL_KEYPAD_0_9, quote_list( /* msterminal */ + NULL, "\x1b[1;5F", "\x1b[1;5B", "\x1b[6;5~", "\x1b[1;5D", + NULL, "\x1b[1;5C", "\x1b[1;5H", "\x1b[1;5A", "\x1b[5;5~", + "\x1b[3;5~", NULL, NULL, "\x1b[1;5j", NULL, + NULL, "\x1b[1;5M", "\x1c", NULL, NULL, + NULL), + + // + // Miscellous keys + // + ALT_KEYPAD_2, "\x1b[1;3B", /* Alt-Down */ + ALT_KEYPAD_4, "\x1b[1;3D", /* Alt-Left */ + ALT_KEYPAD_6, "\x1b[1;3C", /* Alt-Right */ + ALT_KEYPAD_8, "\x1b[1;3A", /* Alt-Up */ + + BACK_TAB, "\x1b[Z", + KEY_BACKSPACE, "\x7f" + ); + + xterm_altmeta_keys(); +} + + +void +msterminal(void) +{ + /*NOTHING*/ +} + +/*end*/ + + diff --git a/macsrc/tty/xterm_rxvt.cr b/macsrc/tty/xterm_rxvt.cr index 4c9eec0d..f61c6876 100644 --- a/macsrc/tty/xterm_rxvt.cr +++ b/macsrc/tty/xterm_rxvt.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_rxvt.cr,v 1.10 2021/07/11 08:26:12 cvsuser Exp $ +/* $Id: xterm_rxvt.cr,v 1.12 2024/07/12 16:33:22 cvsuser Exp $ * rxvt is a very popular xterm replacement. @@ -185,6 +185,9 @@ main() * Define keyboard layout for non-ascii characters. */ set_term_keyboard( /* Function keys */ + // + // Function keys + // SHIFT_F1_F12, quote_list( "\x1b[23~", "\x1b[24~", "\x1b[25~", "\x1b[26~", "\x1b[28~", "\x1b[29~", "\x1b[31~", "\x1b[32~", "\x1b[33~", "\x1b[34~", @@ -211,6 +214,7 @@ main() "\x1b\xda", NULL, NULL, NULL, NULL, NULL), + // // Ins/0 End/1 Down/2 PgDn/3 Left/4 // 5 Right/6 Home/7 Up/8 PgUp/9 // Del/. Plus Minus Star Divide @@ -281,3 +285,5 @@ rxvt() /*NOTHING*/ } +/*end*/ + diff --git a/macsrc/tty/xterm_sun.cr b/macsrc/tty/xterm_sun.cr index 28f81989..ca48fbb2 100644 --- a/macsrc/tty/xterm_sun.cr +++ b/macsrc/tty/xterm_sun.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_sun.cr,v 1.11 2014/10/22 02:34:43 ayoung Exp $ +/* $Id: xterm_sun.cr,v 1.13 2024/07/12 16:33:22 cvsuser Exp $ * terminal description file for the xterm window under X11 which is a VT-100 like emulator * * @@ -93,3 +93,5 @@ main() ); } +/*end*/ + diff --git a/macsrc/tty/xterm_util.cr b/macsrc/tty/xterm_util.cr index ab8656ff..3bc78bd7 100644 --- a/macsrc/tty/xterm_util.cr +++ b/macsrc/tty/xterm_util.cr @@ -1,5 +1,5 @@ /* -*- mode: cr; indent-width: 4; -*- */ -/* $Id: xterm_util.cr,v 1.10 2014/10/22 02:34:43 ayoung Exp $ +/* $Id: xterm_util.cr,v 1.12 2024/07/12 16:33:22 cvsuser Exp $ * Standard Xterm features ... * * @@ -80,6 +80,14 @@ void xterm_altmeta_keys(void) { set_term_keyboard( + // + // , , , , , + // , , , , , + // , , , , , + // , , , , , + // , , , , , + // + // ALT_A_Z, quote_list( /*lower case*/ "\x1ba", "\x1bb", "\x1bc", "\x1bd", "\x1be", "\x1bf", "\x1bg", "\x1bh", "\x1bi", "\x1bj", @@ -139,67 +147,35 @@ xterm_altmeta_keys(void) /* - * xterm_colour256 --- + * xterm_256color --- * Color terminal. * * Usage: - * GRTERM=xterm-colour256 - * GRTERM=xterm-color256 * GRTERM=xterm-256color */ void -xterm_colour256(void) +xterm_256color(void) { set_term_feature(TF_COLOR, TRUE); /* Terminal supports color. */ set_term_feature(TF_COLORDEPTH, 256); /* using a colour depth of 256. */ } -void -xterm_color256(void) -{ - xterm_colour256(); -} - - -void -xterm_256color(void) -{ - xterm_colour256(); -} - - /* - * xterm_colour88 --- + * xterm_88color * Color terminal. * * Usage: - * GRTERM=xterm-colour88 - * GRTERM=xterm-color88 * GRTERM=xterm-88colour */ void -xterm_colour88(void) +xterm_88color(void) { set_term_feature(TF_COLOR, TRUE); /* terminal supports color. */ set_term_feature(TF_COLORDEPTH, 88); /* using a colour depth of 88. */ } -void -xterm_color88(void) -{ - xterm_colour88(); -} - - -void -xterm_88color(void) -{ - xterm_colour88(); -} - - /* * xterm_pccolours --- * Enforce a standard (PC style) colour map. @@ -215,6 +191,13 @@ xterm_pccolours(void) } +/* + * xterm_pccolors + * Color terminal attribute. + * + * Usage: + * GRTERM=xterm-pccolors + */ void xterm_pccolors(void) { @@ -222,13 +205,27 @@ xterm_pccolors(void) } +/* + * xterm_unicode + * Unicode terminal. + * + * Usage: + * GRTERM=xterm-unicode + */ +void +xterm_unicode(void) +{ + //TODO + //set_term_feature(TF_UNICODE_VERSION, "15.0.0"); +} + + /* * xterm_mono --- * Mono terminal. * * Usage: * GRTERM=xterm-mono - * GRTERM=xterm-m */ void xterm_mono(void) @@ -404,4 +401,3 @@ xterm_mouse(void) } /*end*/ -