Como fazer com que o tty reconheça o shift-F2 (e outras combinações de teclas)?

2

Em primeiro lugar, desculpas se a minha pergunta ou terminologia não faz sentido - eu ainda estou enrolando minha cabeça em torno de terminal, console, shell, etc.

Eu posso usar o atalho Shift + F2 em um aplicativo em um terminal rodando na área de trabalho, mas não posso usá-lo em um terminal tty. Alguns outros atalhos também não funcionam, como Ctrl + F6 . Usando Ctrl + V seguido por F1 para imprimir seu valor de caractere, eu posso ver que eles diferem - em um terminal de desktop com TERM=xterm-256color , Shift + F2 retorna ^[[1;2Q enquanto que em tty1 com TERM=linux retorna ^[[26~ . Definir tty para aparecer como xterm com export TERM=xterm-256color faz com que as teclas F retornem letras (sem pressionar nem antes Ctrl + V ), e pressionando < kbd> Shift + F2 simplesmente imprime ~ .

Existe alguma maneira de os terminais virtuais tty reconhecerem os mesmos atalhos e combinações de teclas que o terminal X faz?

    
por otah007 11.11.2017 / 22:31

1 resposta

2

Primeiro, você não deve definir TERM=xterm-256color no console do Linux, a maioria dos aplicativos não funcionará corretamente. Ficar com TERM=linux .

Segundo, vamos esclarecer que alterar o valor de TERM não altera as seqüências de escape geradas pelo pressionamento de tecla. O emulador gráfico, ou o kernel do Linux, caso você esteja usando o console, não pode ver se você altera a variável de ambiente no processo que está executando "dentro" do emulador de terminal; na verdade, pode haver vários processos em execução nesse terminal (sua entrada padrão conectada) com diferentes variáveis TERM . A alteração de TERM pode mudar na forma como um aplicativo reage nesses pressionamentos de tecla.

  

Existe alguma maneira de os terminais virtuais tty reconhecerem os mesmos atalhos e combinações de teclas que o terminal X faz?

Emuladores de terminal não reconhecem essas sequências que você está falando. Eles os emitem, e os aplicativos baseados em terminal (editores de texto, gerenciadores de arquivos, etc.) reconhecem-nos.

Execute infocmp (ou infocmp [terminal-name] , como, por exemplo, infocmp linux ) para listar os recursos / recursos de um terminal, incluindo as seqüências geradas pelas teclas de função. Procure por kf2 para F2 e kf14 para Shift + F2 . Geralmente Shift deve resultar em um deslocamento de 12.

Tanto quanto me lembro de alguns anos atrás, alguns dos mapas de teclado no console do Linux têm um deslocamento de 10, e essa discrepância pode causar todo tipo de mau comportamento em vários aplicativos.

Você não mencionou como (por exemplo, em qual aplicativo) está tentando capturar esses pressionamentos de tecla. Se você está configurando um software existente que requer sequências concretas, você provavelmente terá que ensinar (pelo menos) dois valores diferentes, um para xterm e amigos, e um para linux .

Se você estiver desenvolvendo seu próprio aplicativo e não quiser ter sequências de escape codificadas ou especificadas em um arquivo de configuração, você provavelmente deve confiar em libtinfo para ler os recursos do terminfo ou usar um desenho de tela e um teclado de nível superior biblioteca de manipulação, como ncurses ou slang .

    
por egmont 11.11.2017 / 22:58