Alterar atalho TTY padrão

8

Gostaria de alterar o atalho padrão para alternar para o tty. Por padrão, é ctrl + alt + F #. Eu tentei fazer um atalho personalizado usando as configurações de teclado do Ubuntu, mas ele só funcionou durante o uso da interface gráfica quando eu voltei para tty, não funciona. Então, preciso descobrir como alterar a ligação padrão do atalho ctrl + alt + F # para fazer uma única tecla alternar entre dois TTYs.

era878
fonte
2
Tem certeza que isso não é uma duplicata de askubuntu.com/questions/77982/...
Jacob Tomlinson
O que você quer dizer com "chave única alterna entre dois TTYs?"
Ish
@jacob um pouco, mas talvez não exatamente :)
Rinzwind
Ah sim, entendo, isso está solicitando uma única chave que alterna em vez de um conjunto diferente de chaves.
Jacob Tomlinson

Respostas:

10

Você pode usar bindpara vincular uma chave a alguma função. Aqui está o que eu fiz:

bind '"\ea": ". ~/newScript.sh\n" '

Aqui newScript.shestá o arquivo que altera o tty e \easignifica que sempre que Alt+Aé pressionado, o script é executado.

O conteúdo de newScript.shsão:

#! /bin/bash
ttyNum="$(tty)"
ttyNum=$(echo ${ttyNum##*y})
ttyNum=$(( (ttyNum +1) % 7))
chvt $ttyNum

Note que se você quiser armazenar as associações de teclas permanentemente, poderá armazená-las no seu arquivo `~ / .inputrc '. Para obter mais informações, você pode visitar este link: http://www.techrepublic.com/article/find-and-bind-key-sequences-in-bash/5683375

Atualização: você pode armazenar a bindlinha no seu ~/.bashrcarquivo para não precisar fazer isso novamente.

verde
fonte
Observe que isso não funcionará se você não estiver logado ou se não estiver executando o bash. A solução usando remap.inc (veja minha resposta abaixo) funcionará se você está logado ou não.
janeiro
7

Existe um comando para isso chvt.

chvtcomando significa CHange Virtual Terminal. É necessária uma opção que é um número que informa ao terminal virtual para o qual alternar.

Por exemplo, se você está conectado no primeiro terminal virtual e deseja alternar para o 7º, onde o xserver geralmente exibe a GUI, execute chvto seguinte:

chvt 7

E para retornar ao 1º terminal virtual, digite:

chvt 1

Então, tudo que você precisa fazer é adicionar esse comando a 7 atalhos e você pode alternar.

Rinzwind
fonte
1
Como você faria isso quando pressionasse a tecla enquanto digita tty1?
John S Gruber
@ john: ligá-lo. green7 já explicou isso.
Rinzwind 21/08/2012
5

EDIT: bobo eu! Basta olhar para o arquivo /etc/console-setup/remap.inc

Você encontrará tudo o que precisa nesse arquivo. Em qualquer caso, são dadas explicações abaixo.

Infelizmente, "bind" funcionará apenas com uma sessão shell.

O que você precisa fazer é alterar os mapeamentos do console. Você pode fazer isso usando o programa "loadkeys" (man loadkeys). Primeiro, despeje os mapeamentos atuais para ver como deve ser o formato do arquivo:

dumpkeys > default_keys.txt

Observe que você precisa fazer isso em um console de texto e não no X, então pressione Ctrl-Alt-F1 primeiro para alternar para um!

Aqui está um exemplo de linha desse arquivo:

alt keycode  59 = Console_1

Isso significa que a tecla que gera o código 59, pressionada com o modificador "alt" (definido em outro lugar nesse arquivo), gera um evento "Console_1" - alternando para o console virtual 1.

Como descobrir qual chave gera qual código? Use o programa showkey para isso. Eu inicio o programa e pressione "F1":

komp $ showkey
keycode  59 press
keycode  59 release

A única maneira de sair deste programa é fechar os olhos e contemplar a natureza do código aberto por dez segundos. Ou apenas para não tocar no teclado por dez segundos, isso também funciona. Use este método para descobrir qual linha do arquivo de mapa de chaves você precisaria alterar os mapeamentos de chave.

Digamos, você deseja alternar para o console 1 usando "ctrl 1". Você descobrirá que o código-chave para 1 é 2. Salve a seguinte linha em um arquivo chamado "myownkeys.txt":

control keycode 2 = Console_1

Alterne para um console de texto (se você ainda não o fez) e execute

sudo loadkeys myownkeys.txt

Presto, Ctrl-1 deve mover você agora para o console 1. Adicione mais linhas aos seus arquivos para os seus atalhos. Se você quiser torná-lo permanente, você pode [EDIT] modificar o arquivo /etc/console-setup/remap.inc

A propósito, além do Console_n, você também tem "Decr_console" e "Incr_Console" - alterne para o console à esquerda e o console à direita, respectivamente. Por padrão, eles são vinculados a alt-esquerda e alt-direita.

janeiro
fonte