Por que a ligação de tecla .screenrc ^ @ um mapa para ctrl + espaço?

0

No meu .screenrc eu tenho a seguinte estrofe:

# Change command key to ctrl+space
escape ^@a

Eu encontrei este encantamento mágico em um fórum que não consigo mais encontrar; me permite pressionar ctrl + espaço para invocar comandos de tela, então ctrl+space c (ou ctrl+space ctrl+c ) irá criar uma nova janela, e ctrl+space space (ou ctrl+space ctrl+space ) irá mudar para a última janela, etc. p>

Isso é muito útil para evitar o problema de impedir a funcionalidade do terminal de início de linha ctrl+a , é fácil de digitar e não entra em conflito com nenhuma associação de teclas padrão.

Alguém pode explicar por que e como isso funciona? Eu pesquisei através do link para qualquer referência ao caractere @ e não encontrei nada relevante.

    
por cachvico 13.06.2018 / 01:43

1 resposta

1

Com muitos programas de terminal (mas não todos), o controle-SPACE envia o caractere ASCII 00 (NUL).

Você pode ver isso, por exemplo, com od -cx e inserindo control-SPACE, RETURN, control_D. Você verá uma saída semelhante a:

% od -cx
^@
0000000  
% od -cx
^@
0000000  %pre%  \n
           0a00
0000002
\n 0a00 0000002

Control- @ também é o caractere NUL (@ é ASCII 64, então control- @ é ASCII 00).

Portanto, o mapeamento de controle @ tela interna tem o efeito de mapear o controle de espaço ... por causa de como o terminal lida com controle de espaço.

    
por 13.06.2018 / 03:03

Tags