From 047c22a28cf1ed723791e714b2a5b7c6b4b0e1fc Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 16 Jul 2023 18:39:45 +0800 Subject: docs(term.txt): reorder paragraphs about TUI input (#24367) Make |tui-modifyOtherKeys| and |tui-csiu| tags appear at a better place. Also adapt the || help update from https://github.com/vim/vim/commit/dad4473f02e1fec86d43a2fc094536a4b27d3b25 --- runtime/doc/term.txt | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'runtime/doc/term.txt') diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt index 847b4b6112..ee8a4d8732 100644 --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -108,10 +108,22 @@ and right scroll margins as well. If Nvim detects that the terminal is Xterm, it will make use of this ability to speed up scrolling that is not the full width of the terminal. - *tui-input* + *tui-input* +Historically, terminal emulators could not distinguish between certain control +key modifiers and other keys. For example, and are represented in +the same way, as are and , and , and and . + +Modern terminal emulators are able to distinguish between these pairs of keys +by encoding control modifiers differently. There are two common but distinct +ways of doing this, known as "modifyOtherKeys" and "CSI u". Nvim supports both +encoding methods and at startup will tell the terminal emulator that it +understands these key encodings. If your terminal emulator supports it then +this will allow you to map the key pairs listed above separately. || + Nvim uses libtermkey to convert terminal escape sequences to key codes. |terminfo| is used first, and CSI sequences not in |terminfo| (including -extended keys a.k.a. modifyOtherKeys or "CSI u") can also be parsed. +extended keys a.k.a. "modifyOtherKeys" or "CSI u") can also be parsed. + For example, when running Nvim in tmux, this makes Nvim leave Insert mode and go to the window below: > tmux send-keys 'Escape' [ 2 7 u 'C-W' j @@ -124,42 +136,22 @@ For example, this sequence is recognized by Nvim as : > and can be used differently from in mappings. *tui-modifyOtherKeys* *tui-csiu* -Historically, terminal emulators could not distinguish between certain control -key modifiers and other keys. For example, and are represented the -same way, as are and , and , and and . This -meant that Nvim also could not map these keys separately. - -Modern terminal emulators are able to distinguish between these pairs of keys -by encoding control modifiers differently. There are two common but distinct -ways of doing this, known as "modifyOtherKeys" and "CSI u". Nvim supports both -encoding methods and at startup will tell the terminal emulator that it -understands these key encodings. If your terminal emulator supports it then -this will allow you to map the key pairs listed above separately. - -At startup Nvim will query your terminal to see if it supports the CSI u +At startup Nvim will query your terminal to see if it supports the "CSI u" encoding by writing the sequence > - CSI ? u CSI c - If your terminal emulator responds with > - CSI ? u - -this means your terminal supports the CSI u encoding and Nvim will tell your +this means your terminal supports the "CSI u" encoding and Nvim will tell your terminal to enable it by writing the sequence > - CSI > 1 u - -If your terminal does not support CSI u then Nvim will instead enable the +If your terminal does not support "CSI u" then Nvim will instead enable the "modifyOtherKeys" encoding by writing the sequence > - CSI > 4 ; 2 m When Nvim exits cleanly it will send the corresponding sequence to disable the special key encoding. If Nvim does not exit cleanly then your terminal emulator could be in a bad state. If this happens, simply run "reset". - *tui-colors* Nvim uses 256 colours by default, ignoring |terminfo| for most terminal types, including "linux" (whose virtual terminals have had 256-colour support since -- cgit From 54daf022ce989bb8ea34084f947ab85c045b690f Mon Sep 17 00:00:00 2001 From: "Dr. Matthew Swabey" Date: Fri, 29 Sep 2023 11:57:02 -0400 Subject: docs(term): use tic -x for better compatibility with old ncurses (#25421) Use `tic -x` instead of `tic` to include any unknown capabilities in a modern `terminfo.src` as user-defined ones, instead of dropping them. Modern ncurses behavior with `tic -x` will not change. --- runtime/doc/term.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/doc/term.txt') diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt index ee8a4d8732..8ef8675d13 100644 --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -31,7 +31,7 @@ a non-superuser: > curl -LO https://invisible-island.net/datafiles/current/terminfo.src.gz gunzip terminfo.src.gz - tic terminfo.src + tic -x terminfo.src < *$TERM* The $TERM environment variable must match the terminal you are using! -- cgit