From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 11936 invoked from network); 4 Oct 2022 17:52:03 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 4 Oct 2022 17:52:03 -0000 Received: from mail-il1-f170.google.com ([209.85.166.170]) by 9front; Tue Oct 4 13:50:45 -0400 2022 Received: by mail-il1-f170.google.com with SMTP id i9so6935015ilv.9 for <9front@9front.org>; Tue, 04 Oct 2022 10:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mforney.org; s=google; h=content-transfer-encoding:mime-version:to:subject:date:from :message-id:from:to:cc:subject:date; bh=+IjRa4y5wHRb65krxymaeRMwzaA0ag2dQx2nbbcJmaM=; b=1s0vXwO0vTrbKbFZWOQliMsTdkYkfHcYeM9l0Hzq5VTn7oyUw+epj8KZcqxsKpnZKa mXOpxtWPur28U9DzG+gIxukLXeaKF6ERKHjrmK2OqNV4xIhLQ6muHEPk/P3IOs/9cY9e Him1vOOaIhD0ThKfxxtPDSgiEspjjDwa2/fcr1A2tNyzd0AW7iV8jyV2s8SJYG21Jm6f q7lxxLiEIPmQGSHQj6Y1ZWPaXmdI/eK3G6GPX0YAsAdklNkMuENEa1rOi+iEWX7axzxX I+T1nBtpRQq9d14BBECzW42UL2BLcJl0dN7Lb3ZKUVDACjC4jz6atEev7luQuhrmIivi U5pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:to:subject:date:from :message-id:x-gm-message-state:from:to:cc:subject:date; bh=+IjRa4y5wHRb65krxymaeRMwzaA0ag2dQx2nbbcJmaM=; b=EFVA+F/eCEaOVZQAMT5/H+scB/bJ84uZXf4+yAKhSs8zz+PdGVuVE9rhEiLPyBJeKA OH8rv7hR7D8Sa6KDRSvOP+MetaSc4mPV/JKWKn0IAizZf+EbPtFj4F2l0InVLTzvgb3H qrQ5SHVXMzQkQDqUR1tvJ1rsdgrJqP8xQPZ2NyXHZJO8v33xZMcGjY7fQ28StRl+lWnW /gZfG3URBtMb4I8fsFSRIi3strq20vdb6DqkQDbXSXJ5IlDKF3PyPGIuJ2vc3voJzS1n m82JgsX4VTW9UcdzLQ5PVVpZGzSvQM022JgRlkD4Ipmyd8WinROF/vu/bH5JVrwhbdON STRg== X-Gm-Message-State: ACrzQf0ROmijBdVidUQpKf25YOtlD/o9v3yRdJA5e2hcfMgLlrvy9SZw bKY9NN6UbIdv7VTghMA8jtIHrIIond6MlgEY X-Google-Smtp-Source: AMsMyM6Xd+uOnxt0+CqLnMZLcWlptl7nZMkx4w+5x4V+5lo/DujNaOo+SEsFuj8w5kRzcJRnel8g1w== X-Received: by 2002:a05:6e02:1c23:b0:2f9:ec4e:b5be with SMTP id m3-20020a056e021c2300b002f9ec4eb5bemr4524734ilh.274.1664905840898; Tue, 04 Oct 2022 10:50:40 -0700 (PDT) Return-Path: Received: from novus ([64.93.113.86]) by smtp.gmail.com with ESMTPSA id t2-20020a056e02060200b002eae6cf8898sm5046324ils.30.2022.10.04.10.50.39 for <9front@9front.org> (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 04 Oct 2022 10:50:40 -0700 (PDT) Message-ID: <1132EA054DF091104D293E57741F6906@mforney.org> From: Michael Forney Date: Tue, 04 Oct 2022 17:34:50 +0000 To: 9front@9front.org MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: transactional replication database Subject: [9front] [PATCH] vt: fix home/end sequences in xterm mode Reply-To: 9front@9front.org Precedence: bulk According to the ncurses terminfo database, we have $ for k in khome kend; do printf '%s:\t' $k; TERM=xterm tput $k | od -An -tc; done khome: 033 O H kend: 033 O F $ This differs from vt220fk, so add a new xtermfk table with the proper sequences. --- I also noticed that the vt220 definition in ncurses terminfo does not have khome/kend entries, and instead maps the sequences \033[1~ and \033[4~ to kfnd (key_find) and kslt (key_select), so home/end don't work with -2 either. However, there is a "vt220-old" definition that maps them to the same sequences as in the vt220fk table. I'm not a terminal expert so I don't know which is correct, but just thought I'd mention it in case someone knows. diff 7bb34f7d22d90f59eaa3778398ada0b66b0f7b86 e919f465e965129ef3b14003bff5a9c54dcbe8e7 --- a/sys/src/cmd/vt/cons.h +++ b/sys/src/cmd/vt/cons.h @@ -39,7 +39,7 @@ char *sequence; }; extern struct funckey *fk, *appfk; -extern struct funckey ansifk[], ansiappfk[], vt220fk[]; +extern struct funckey ansifk[], ansiappfk[], vt220fk[], xtermfk[]; extern int x, y, xmax, ymax, olines; extern int peekc, attribute; --- a/sys/src/cmd/vt/main.c +++ b/sys/src/cmd/vt/main.c @@ -286,7 +286,7 @@ sysfatal("could not create log file: %s: %r", p); break; case 'x': - fk = vt220fk; + fk = xtermfk; term = "xterm"; break; case 'r': --- a/sys/src/cmd/vt/vt.c +++ b/sys/src/cmd/vt/vt.c @@ -91,6 +91,35 @@ { 0 }, }; +struct funckey xtermfk[] = { + { "insert", "\033[2~", }, + { "delete", "\033[3~", }, + { "home", "\033OH", }, + { "end", "\033OF", }, + { "page up", "\033[5~", }, + { "page down", "\033[6~", }, + + { "up key", "\033[A", }, + { "down key", "\033[B", }, + { "left key", "\033[D", }, + { "right key", "\033[C", }, + + { "F1", "\033OP", }, + { "F2", "\033OQ", }, + { "F3", "\033OR", }, + { "F4", "\033OS", }, + { "F5", "\033[15~", }, + { "F6", "\033[17~", }, + { "F7", "\033[18~", }, + { "F8", "\033[19~", }, + { "F9", "\033[20~", }, + { "F10", "\033[21~", }, + { "F11", "\033[23~", }, + { "F12", "\033[24~", }, + + { 0 }, +}; + char gmap[256] = { ['_'] ' ', /* blank */ ['\\'] '*', /* diamond */