Onde está o arquivo de configuração para atalhos de teclado do terminal? [fechadas]

2

Eu gostaria de inspecionar / alterar / remapear as combinações de teclas no meu terminal de servidor Ubuntu. (Eu não estou usando nenhuma GUI. Estou me referindo ao terminal básico, TTY1).

Minha pergunta principal é esta:

  • Onde está o arquivo de configuração para as combinações de teclas do terminal?

Contexto: (estou escrevendo este contexto para ajudar os leitores a entender de onde eu estou vindo).

  • Eu gostaria de entender meus atalhos de teclado de terminal "baixo nível" para que eu possa configurar e usar melhor o Byobu.

  • Também gostaria de receber uma resposta:

    • explique a ordem / pilha do processo de como o terminal é iniciado (porque isso me ajudará a entender quais processos estão 'roubando' os atalhos de teclado)

    • esclarecer se estou usando qualquer terminologia incorretamente

por David J. 21.09.2016 / 21:08

2 respostas

4

Resposta curta

Para responder diretamente à pergunta:

  

Onde está o arquivo de configuração para as teclas de atalho do terminal?

No meu caso (Ubuntu 16.04 com bash), a resposta de Serge é útil. (Apesar de eu não ter certeza de que está completo em cobrir todas as ligações de teclas que podem entrar em conflito, é por isso que estou escrevendo esta resposta mais longa.) O Bash configura atalhos de teclado nesses arquivos:

  • ligações de teclas padrão: /etc/inputrc
  • combinações de teclas personalizadas: ~/.inputrc

Resposta longa

Nesta seção, gostaria de ser um pouco mais abrangente. Enquanto o bash e readline afetam as associações de teclas, eles são outros processos envolvidos. Por exemplo, como ALT-2 é ligado a TTY # 2?

Visão geral

Como uma visão geral, aqui estão as partes envolvidas na minha máquina Ubuntu Server 16.04. Eu começo com systemd , o sistema init atual do Ubuntu.

  • systemd começa systemd_logind .
  • systemd_logind inicia o TTY1 com login .
  • login começa bash .
  • bash usa a biblioteca readline .
  • bash runs ~/.bashrc , que finalmente inicia byobu
  • byobu , no meu sistema, usa tmux como um back-end

(Nota: systemd é usado no Ubuntu 15.04 e 16.04. Upstart foi o sistema init para o Ubuntu 6.10 a 15.10, de acordo para link .)

Na prática, os seguintes componentes capturam alguns pressionamentos de tecla:

  • systemd-logind (traps ALT-1 , ALT-2 etc).
  • login
  • bash usando a biblioteca readline
  • tmux
  • byobu
  • o TTY (TODO: não sei se isso faz parte de systemd ou login ?)

systemd-logind

Para o Ubuntu 16.04, systemd-logind é onde o login do usuário é iniciado. De acordo com a página do manual do Ubuntu para systemd-logind .

  

systemd-logind é um serviço do sistema que gerencia logins de usuários. É responsável por:

     
  • Acompanhar usuários e sessões, seus processos e seu estado ocioso
  •   
  • Fornecendo acesso baseado em PolicyKit para usuários a operações como desligamento do sistema ou suspensão
  •   
  • Implementando uma lógica de desligamento / inibição de sono para aplicativos
  •   
  • Manuseio de chaves de hardware de energia / suspensão
  •   
  • Gerenciamento de vários lugares
  •   
  • Gerenciamento do switch de sessão
  •   
  • Gerenciamento de acesso a dispositivos para usuários
  •   
  • Geração automática de logins de texto (gettys) na ativação do console virtual e no gerenciamento de diretório de tempo de execução do usuário
  •   

Veja também a página man do logind.conf . Eu não vi nenhuma menção lá de atalhos no teclado.

Configuração de TTY / teclado

Links relacionados sobre configuração de TTY / teclado:

Ferramentas para layouts de TTY / teclado:

bash (com a biblioteca readline)

A referência de bash do gnu.org tem uma boa documentação sobre o bash e funções readline.

Esses arquivos de configuração afetam as ligações de chave:

  • ligações de teclas padrão: /etc/inputrc
  • combinações de teclas personalizadas: ~/.inputrc

tmux

As associações de chaves do tmux são descritas aqui: link

  

Um arquivo de configuração específico do usuário deve estar localizado em ~ / .tmux.conf, enquanto um arquivo de configuração global deve estar localizado em /etc/tmux.conf.

byobu

O Byobu tem atalhos de teclado padrão que podem ser definidos pelo usuário em /usr/share/byobu/keybindings/ .

Trabalho em andamento

Nota: esta resposta é um trabalho em andamento. Pode haver erros. (Eu acho mais fácil afirmar o que parece ser verdade com base na minha leitura e raciocínio, e corrigi-lo se estiver errado.) Vou atualizar isso e remover este aviso quando estiver mais perto da conclusão.

    
por David J. 22.09.2016 / 01:15
3

De acordo com o manual bash (acessível via linha de comando man bash ), as atalhos de teclado personalizados podem ser configuradas via ~/.inputrc file. Keybindings personalizados são definidos como:

  When using the form keyname:function-name or macro, keyname is the name
   of a key spelled out in English.  For example:

          Control-u: universal-argument
          Meta-Rubout: backward-kill-word
          Control-o: "> output"

Quando o terminal inicia e passa o controle para o seu shell (que é bash normalmente), ele lê os arquivos de configuração, incluindo ~/.inputrc . A biblioteca readline é o que de fato ativa esse comportamento e também permite usar o modo de edição vi ou emacs . Outros shells podem não ter suporte para readline, por exemplo, ksh , então você realmente precisaria usar vi / emacs editing more Nesse caso, os atalhos são os mesmos que para vi e emacs text editores.

O byobu não está realmente relacionado a ~/.inputrc e readline do bash: usa muitas configurações e atalhos de teclado personalizados, que vêm principalmente do backend que está sendo usado - screen ou tmux . Eu sugiro que você leia man pages e tutoriais para entender como eles funcionam.

    
por Sergiy Kolodyazhnyy 21.09.2016 / 23:33