Alt- e Alt- (e possivelmente algumas outras chaves) não estão funcionando no elinks

3

Eu estou correndo elinks (0.12pre5) em uma janela xterm no Openbox em um Debian netinstall (7.8) com alterações mínimas / instalação adicional de software. Eu mudei algumas opções elinks, mas nenhuma que pareça ser relevante para essa questão. Em particular, eu não mudei nenhum dos atalhos de teclado. Eu instalei o pacote terminus-fonts, na chance de que isso seja relevante.

De acordo com man elinkskeys , Alt + < e Alt + > deve saltar para o primeira ou última linha do buffer atual ao editar uma caixa de texto ou mover uma guia para a esquerda ou para a direita, caso contrário. Para mim, eles não fazem nenhuma dessas coisas. Ao editar uma caixa de texto, Alt + < (ou seja, Alt + Deslocamento + , ) gera o caractere ¼ (a versão composta de 1/4) e Alt + > (ou seja, Alt + Shift + . ) gera o caractere ¾ (a versão composta de 3/4). Eu também tentei omitir o Shift ; Alt + , fornece ¬ e Alt + . fornece ® . Quando não está editando uma caixa de texto, nenhuma dessas teclas parece fazer nada.

Em uma nota possivelmente relacionada, a página man indica que, ao editar uma caixa de texto, Ctrl + A e Início "vá para o início da página / linha "e Ctrl + E e End " vai para o final da página / linha. " Na verdade, todos os quatro pressionamentos de teclas vão para o início / fim de uma linha como esperado, mas não movem o cursor entre linhas, mesmo quando atingidos repetidamente ou pressionados. Assim, parece que não tenho como mover verticalmente mais de uma linha por vez dentro de uma caixa de texto.

Tab e Shift + Tab também parecem não fazer nada durante a edição (não espero Alt + Tab para fazer qualquer coisa, já que presumivelmente está sendo impedido pelo Openbox - o que eu quero que seja!). Não tenho certeza se isso é uma consequência da desativação da minha taborder, o que fiz porque ela interage mal com links numerados em determinadas páginas.

    
por Chris Henry 07.04.2015 / 01:01

1 resposta

5
Nos velhos tempos, os homens eram homens de verdade, mulheres eram mulheres reais, pequenas criaturas peludas de Alpha Centauri eram pequenas criaturas peludas de Alpha Centauri, e os programadores anglo-saxões pensavam que 95 caracteres imprimíveis e 33 caracteres de controle eram suficientes para todo o mundo. Bytes eram de 8 bits grandes ao redor, mas 7 bits eram suficientes para todos os caracteres , então cada byte significava representar um personagem tinha um pouco de reposição. Muitos fabricantes de terminais decidiram usar bem esse bit extra. Os terminais geralmente tinham uma tecla modificadora para indicar "Eu quero chamar um comando", em vez de "Eu quero digitar um caractere", chamado Meta . Tantos terminais usaram esse bit sobressalente para indicar “a tecla Meta está inativa”. Por exemplo, pressionar . envia o valor de byte 46 (código ASCII do caractere . ); pressionando Meta + . envia o valor de byte 46 + 128 = 174.

Então, as pessoas que usam idiomas europeus também queriam usar computadores. Eles precisavam ser capazes de escrever em outros alfabetos, e personagens com sinais diacríticos, e falantes de inglês e não-inglês queriam ter mais caracteres de pontuação. então eles projetaram várias codificações de caracteres que estendiam o ASCII para usar o 8º bit . Por exemplo, na codificação ISO 8859-1 (a.k.a. Latin-1), o valor de byte 174 codifica o caractere ® . Nos terminais onde a chave Meta é codificada como configurando o 8º bit do valor do byte, ao executar um aplicativo que espera entrada codificada na ISO 8859-1, pressionando Meta + < kbd>. envia efetivamente o caractere ® .

Alguns europeus começaram a memorizar que Meta + . iria inserir ® , e esse Meta + i iria inserir Meta + é , e assim por diante. Mas isso não ajudou as pessoas que não queriam memorizar. Felizmente, havia outras soluções, como as variantes nacionais do teclado (em que os franceses obtêm uma chave é , e os suecos recebem uma tecla å , e assim por diante), chaves inativas e compor chaves . Em qualquer caso, essa solução não funcionaria para as pessoas que desejavam mais de 256 caracteres diferentes, como falantes da maioria dos idiomas asiáticos.

Enquanto isso, outra convenção mais comum para codificar a chave Meta evoluiu: mande o caractere Escape antes da codificação da chave. Por exemplo, Meta + . envia a mesma sequência de dois bytes como Esc , . . Isso é o que a maioria das aplicações espera hoje em dia.

Ter a chave Meta configurada como o 8º bit é uma decisão tecnológica obsoleta, mas ainda permanece na configuração padrão de alguns sistemas. Teclados de computador não possuem uma chave com o rótulo Meta , mas eles têm uma tecla com o nome Alt no mesmo local e com o mesmo efeito esperado, então onde quer que você leia sobre “ Meta ”, que se aplica a“ Alt ”.

O padrão do Xterm é ter o Meta configurado para o 8º bit, por razões históricas. Para enviar um caractere de escape, você precisa:

  • defina o recurso metaSendsEscape como true (também há altSendsEscape , mas isso só se aplica se você tiver definido o recurso altIsNotMeta como true , o que só é útil se você tiver os dois Alt e Meta no seu teclado); ou
  • defina o recurso eightBitInput como false (apesar do nome, isso não impede a entrada não-ASCII, isso apenas determina o que o Meta + caractere envia) .

Coloque uma das seguintes linhas no arquivo ~/.Xresources :

XTerm.VT100.eightBitInput: false
XTerm.VT100.metaSendsEscape: true

Execute xrdb -merge ~/.Xresources para recarregar este arquivo. A maioria dos ambientes organiza para executar este comando quando você inicia a GUI; se o seu não, adicione-o aos seus scripts de login da GUI.

Você também pode alternar o recurso metaSendsEscape no menu Ctrl + Clicar com o botão esquerdo (“Meta Sends Escape”). Isso afeta apenas a instância do xterm em que você a usa.

Os outros problemas de atalhos de teclado do Links estão relacionados a Links, e não ao terminal.

    
por 07.04.2015 / 02:26