Por que o XTerm suporta 63 teclas de função?

3

De acordo com esta tabela de emuladores de terminal e seus códigos de teclas , novas versões do XTerm reconhecem a função teclas de F1, F2, F3, ... até F63. A maioria dos teclados só possui teclas de função física no intervalo F1..F12. Qual é o propósito das chaves extras? Existe algum (semi-) mapeamento padrão de teclas físicas ou de pressionamentos de mouse para esses números de teclas de função, e se não, como eles são acionados?

Tenho a impressão de que, no jargão tradicional do terminal, todas as teclas especiais, incluindo as teclas de seta, home / end, etc., eram chamadas de teclas de função (enquanto aqueles que cresceram em PCs considerariam apenas F1..F12 teclas de função). Porém, o XTerm também fala separadamente sobre essas chaves nomeadas (por exemplo, kUP para a tecla de seta para cima na tabela).

    
por Lassi 01.11.2018 / 19:06

3 respostas

4

DEC VTs representam teclas de função e várias teclas de cursor e edição com uma seqüência de controle chamada DECFNK, que é CSI seguida por um ou dois parâmetros seguidos por ~ . O primeiro parâmetro é o número da tecla de função. O segundo parâmetro indica estados da tecla modificadora ativa.

No que diz respeito ao DECFNK, pode haver até 20 teclas de função. Os códigos DECFNK para as teclas de função 1 a 20 são bem definidos e documentados. Havia, afinal, fisicamente 20 teclas de função nos teclados LK. (Mesmo que várias teclas de função geralmente não funcionem, elas potencialmente geram sequências DECFNK, e as seqüências estão no doco DEC.) Aqui está um teclado LK401 para um DEC VT420 :

Comovocêpodevernatabela,osemuladoresqueproduzemasseqüênciasDECFNKoriginaisemitemDECFNK11paraDECFNK34paraessas20chaves.(AlgunsdosnúmerosDECFNKsãoignorados.Curiosamente,osnúmerosignoradoscorrespondemaosespaçosfísicosentreosgruposdeteclasdalinhadatecladefunçãonoteclado.)

OndeascoisasficamcomplexaséondeoPCeoXENIXforamintroduzidos.NomundodoIBMPCe,emparticular,doPC3270,havia24teclasdefunçãonostecladosdoModeloF.OtecladoEnhanceddoPC/ATtinha12teclasdefunção,metadedisso.AquiestáumtecladomodeloF3270:

As convenções de emulação de terminal surgiram quando as teclas de função de F13 para F24 puderam ser acessadas a partir de um teclado PC / AT usando combinações de modificadores. Com as quatro combinações de ⎈ Controle e ⇧ Deslocamento de Nível 2 , as teclas de função mera 12 em um teclado Enhanced podem ser feitas para simular a função 48 chaves. Este foi o caso do console XENIX, que gerou 48 seqüências de controle distintas.

Você observará nas outras colunas da tabela que é isso que está acontecendo. As seqüências de controle para (digamos) F6 , F18 , F30 e F42 são todas DECFNK 17 com valores diferentes para os bitflags modificadores no segundo parâmetro.

Observe também que F1 para F5 não são seqüências de controle DECFNK nas mesmas colunas. Isto é novamente baixo para convenções de emulador em teclados de PC. Nos teclados DEC LK, F1 para F5 fez ter atribuído as seqüências DECFNK e poderiam gerá-las, mas geralmente operadas em um modo "local" em que eles não geraram entrada para o host. Os emuladores não precisavam gerar essas sequências DECFNK e emular F1 para F5 , porque poucas ou nenhuma aplicação dependiam dessas chaves como consequência; mas os emuladores inversamente fizeram precisam emular um conjunto de chaves PF1 para PF4 que estavam no teclado da calculadora em um teclado DEC atual, mas esse PC teclados não tem. Estas chaves não geraram sequências DECFNK, e não foram chaves de função verdadeiras. Eles geraram sequências de controle SS3, como as outras teclas da calculadora.

(Algumas das sequências SS3 são malformadas. "SS" significa "Single Shift" e tais mudanças aplicam-se a um único caractere seguinte. As sequências de controle XTerm que acrescentam parâmetros modificadores ao SS3 não são de fato seqüências SS3 corretamente formadas. Terminais reais DEC não funcionavam dessa forma, não foram relatados modificadores para seqüências de controle de teclas da calculadora.

Isso explica como a seqüência de controle da tecla de função definida para terminais emulados pode chegar a 48 teclas de função. Para explicar 64 seqüências de controle, basta observar o parâmetro modificador nas seqüências do DECFNK. Para as 12 seqüências de controle adicionais, é 3 , que denota o modificador ⎇ Alt .

De fato, existem 8 combinações possíveis de ⎈ Controle , ⇧ Deslocamento de Nível 2 e ⎇ Alt ; os três modificadores reconhecidos pelo protocolo de sequência de controle DEC VT. Assim, pode haver 96 sequências de controle DECFNK diferentes para essas convenções de emulador de terminal de um teclado PC / AT Enhanced e 160 de um teclado DEC LK.

Leitura adicional

por 02.11.2018 / 02:26
2

Tem a ver com os antigos terminais DEC ascii, como o VT220.

link

As teclas de função foram usadas para interagir com programas baseados em texto executados em computadores mainframe.

A conexão entre o terminal e o mainframe era geralmente serial.

Pressionar uma tecla F fez com que o terminal transmitisse uma seqüência de códigos ASCII, geralmente começando com o caractere ESC.

As teclas F eram semelhantes às teclas de atalho no uso moderno do computador.

Por exemplo, F1 pode ser uma tecla que mostra um menu na tela.

A combinação das teclas shift e control juntamente com as teclas F geraria o F21-F64

Por exemplo, F21 seria gerado pressionando shift-F1. (pode ter sido ctrl-F1) F61 seria algo como ctrl-shft-F1

    
por 01.11.2018 / 20:46
2

O xterm na verdade suporta muito mais do que 64 teclas de função (por shift , controle , alt , < em modificadores> meta ). O 64 é o conjunto portátil definido no terminfo (e parte do X / Open Curses ). O primeiro no conjunto é kf0 (o que confunde as pessoas, por isso raramente é usado).

Ele faz isso porque as pessoas queriam ser capazes de distinguir as várias combinações de teclas (nem todo mundo é um usuário do emacs, mas isso ajuda). Sem inventar todo um novo conjunto de recursos de terminfo, estender o xterm para usar os nomes de terminfo 64 predefinidos disponíveis era uma solução suficientemente boa.

Com ncurses ' definido pelo usuário chaves, a descrição do terminal xterm tem mais do que isso, mas ainda menor que o limite real. Multiplicando as combinações, para apenas 12 teclas do teclado do computador, são 8 * 12 ou 16 * 12, dependendo se a sua configuração equivale a alt e meta .

O mesmo conjunto de modificadores aplica-se às 4 teclas do cursor e às 6 teclas de edição.

Os modificadores, por sua vez, podem ser modificados (dando diferentes conjuntos de seqüências de escape). Os vários blocos de construção na fonte terminfo do xterm ilustram esses (como xterm+pcf0 , xterm + pcf1 , etc.), multiplicando as possibilidades.

Mas ninguém está contando ...

A propósito, um VT220 real não fez nada (útil) com as 5 primeiras teclas de função, por padrão. Mas essa é uma história diferente.

Quanto ao PC, usar shift / control / alt para modificadores é antigo. ncurses tem algumas descrições de terminal para OS / 2 usando essa abordagem, bem como SCO (mesmo hardware).

    
por 01.11.2018 / 23:23