From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel,gmane.comp.lib.ncurses.bugs Subject: Re: Emacs difficulties in linux console with ncurses-6.3 caused by kcbt=\E^I. Date: Fri, 6 May 2022 18:49:39 +0000 Message-ID: References: <20220506000102.GA10144@prl-debianold-64.jexium-island.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27657"; mail-complaints-to="usenet@ciao.gmane.io" Cc: bug-ncurses@gnu.org, emacs-devel@gnu.org To: Thomas Dickey Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri May 06 20:51:20 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nn32u-00070Z-F2 for ged-emacs-devel@m.gmane-mx.org; Fri, 06 May 2022 20:51:20 +0200 Original-Received: from localhost ([::1]:40992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nn32r-0003gE-Cb for ged-emacs-devel@m.gmane-mx.org; Fri, 06 May 2022 14:51:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:47212) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nn31a-0002rq-7F for emacs-devel@gnu.org; Fri, 06 May 2022 14:49:58 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:59344 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1nn31X-0003zO-Q1 for emacs-devel@gnu.org; Fri, 06 May 2022 14:49:57 -0400 Original-Received: (qmail 98061 invoked by uid 3782); 6 May 2022 18:49:41 -0000 Original-Received: from acm.muc.de (p4fe1527f.dip0.t-ipconnect.de [79.225.82.127]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 06 May 2022 20:49:41 +0200 Original-Received: (qmail 5696 invoked by uid 1000); 6 May 2022 18:49:39 -0000 Content-Disposition: inline In-Reply-To: <20220506000102.GA10144@prl-debianold-64.jexium-island.net> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:289334 gmane.comp.lib.ncurses.bugs:8544 Archived-At: Hello, Thomas, thanks for the rapid reply. On Thu, May 05, 2022 at 20:01:02 -0400, Thomas Dickey wrote: > On Thu, May 05, 2022 at 06:18:00PM +0000, Alan Mackenzie wrote: > > Hello, ncurses! > > I'm writing as a member of the Emacs development team. > > In the recent change from ncurses-6.2 to ncurses-6.3, the following > > change was make in the linux console terminfo: > > --- Infocmp-linux-6.2 2022-05-04 20:16:01.609557894 +0000 > > +++ infocmp-linux-6.3 2022-05-04 20:09:02.046581014 +0000 > > @@ -14,7 +14,7 @@ > > home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, > > ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, > > initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, > > - kb2=\E[G, kbs=^?, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, > > + kb2=\E[G, kbs=^?, kcbt=\E^I, kcub1=\E[D, kcud1=\E[B, > > kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, > > kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, > > kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, > > We now have kcbt=\E^I. > A bug report got me to verify this, and > shift-tab on the console appeared to send that sequence, > so I documented it in the terminal description. There are many different keyboard layouts used on the linux console. I can't say at the moment how many of these use ESC-TAB on the - key combination, how many on -, and indeed, how many on both. There are around 233 maps in /usr/share/keymaps on my system. > Tracing changes to default keyboard configuration in Linux isn't > as "simple" as control-sequences, but see below (it's "kbd"). > I don't see any that send \E[Z. Having the terminal description > list a key definition that no one uses isn't very useful. No, but it's harmless. Why does the linux console have an entry for kcbt at all? > (I'll allow for some keyboard differences -- who has a "clear" key? -- > but shift-tab has been used for a long time). The point is - has stolen the key code for -. > Just to check: > Debian, Fedora, Mageia, OpenSUSE do this (send \E^I) > Arch, Slackware don't do this (I get just ^I) > I have a few others that I could check, but (CentOS and Scientific Linux) > those are either obsolete or derived from the ones that I listed. There will be people (like me) who set up their own keyboard map files, and these likely have different codes for together with all the modifier keys. It is highly likely that typeing produces the code 0x19, and typing produces 0x09. It is not clear that the user will necessarily want the two-key combination to be transated into . Might it be that terminfo has two different categories of information - that intrinsic to the terminal (like there being 8 colours), and variable information determined by the keyboard layout? > I'm aware that there are (down in the 1% range) still other Linux-based > systems, but generally speaking few/none of those have contributed > in this area, so I don't have a machine to verify bug reports. > fwiw, I noticed some comment in the usual source of misinformation > recently stating that \E[Z originated with Linux in 1995. > That was incorrect (the terminal database shows this for several > AT&T entries and an Ann Arbor Ambassador entry - roughly ten > years earlier). > > In Emacs on the Linux console, our use of terminfo now has the effect of > > replacing the M-tab keysequence with backtab. This make several > > important key-bindings unusable. (The backtab binding is also used, but > > is perhaps a little less important.) > Perhaps that original kcbt was changed to allow the \E^I to work > with Emacs. If that's the case, then it should be something that > I can document in the terminal description. In Emacs typing followed by an "ascii character" must produce the Meta-Char. What I don't see at the moment is why there is a kcbt capability at all. Is there an application which depends on it, and would not work properly without kcbt=\E^I? > All that I have so far is the commit message, which gives no useful > information regarding the intent of the change: > commit 0baa7f071e79bb700b62b1f8507630387cbc4bbb > Author: Alexey Gladkov > Date: Tue May 8 22:55:07 2007 +0400 > Apply patchkbd-1.12-Meta-Tab.diff from SUSE > Convert Shift Tab to Meta_Tab > Signed-off-by: Alexey Gladkov > and this equally non-informative mailing list thread: > https://lists.opensuse.org/archives/list/commit@lists.opensuse.org/message/P3DQHCZB7IWQ7F6VZD3LGXHVOIN6OFE6/ > (which for example doesn't mention Emacs). As you say, it merely records that there has been a change, not why. > > Also, this would seem to be a difficult problem for a normal user to > > diagnose, and difficult also to fix. > > May I ask why this change was made to the linux terminal? Is there any > > possibiliy it might be reverted? > It was a bug report: > # 2021-09-04 > # + modify linux3.0 entry to reflect default mapping of shift-tab by > # kbd 1.14 (report by Jan Engelhardt) -TD > > Is there perhaps some strategy we could use in Emacs (C code) which would > > work around this problem with using ugly ad-hoc code? > I suppose you could tell Emacs to ignore kcbt (termcap kB) for Linux. Sorry, I mistyped there. I meant to write "withOUT using ugly ... code". Eli Zaretskii, the maintainer of Emacs, is against putting in special handling for the linux console's kcbt. For example, is there any facility to modify a terminfo entry for a particular application, or something like that? > non-Emacs users probably would like to use the key. > -- > Thomas E. Dickey > https://invisible-island.net > ftp://ftp.invisible-island.net -- Alan Mackenzie (Nuremberg, Germany).