Chaves não ligadas no ReadLine


2

Sobre o uso do Readline com o Bash:

$ cat ~/.inputrc 
"\C-[[Z": complete-command
"\C-[[23~": history-search-backward
"\C-[[24~": history-search-forward

Agora no terminal Gnome F11 e F12 histórico de pesquisa chave para trás / frente.

Mas se eu, por acaso, pressionar F10, ele emitirá um sinal sonoro e adicionará til. Eu quero que não adicione til (não tenho certeza se deve bipar ou não fazer nada).

Por favor me ajude a fazer todos teclas não ligadas para não fazer bobagem como a inserção de til.

Respostas:


1

Tanto quanto eu posso dizer, não há como definir um valor para "todas as chaves" em .inputrc. Mas, realisticamente, isso não é realmente necessário em seu caso de uso; Há apenas tantas chaves que você pode acertar por acidente.

Pessoalmente, eu tenho usado um .inputrc originalmente derivado de algumas versões muito antigas do SUSE, mas continuou a funcionar perfeitamente, mesmo depois de copiá-lo para várias outras instalações e distros. Este arquivo tem mapeamentos "nothing" explícitos para teclas de função que não são usadas atualmente pela readline:

#
# Function keys F1 - F12
#
$if term=linux
#
# On console the first five function keys
#
"\e[[A":    prefix-meta
"\e[[B":    undo
"\e[[C":    ""
"\e[[D":    kill-line
"\e[[E":    ""
$else
#
# The first five standard function keys
#
"\e[11~":   prefix-meta
"\e[12~":   undo
"\e[13~":   ""
"\e[14~":   kill-line
"\e[15~":   ""
$endif
"\e[17~":   ""
"\e[18~":   ""
"\e[19~":   ""
"\e[20~":   ""
"\e[21~":   ""
# Note: F11, F12 are identical with Shift_F1 and Shift_F2
"\e[23~":   ""
"\e[24~":   ""

Onde \e[17~ corresponde a F6 e assim por diante.

Mapeando as teclas de função não utilizadas para "" deve evitar o bipe e o til, não importa qual ambiente de área de trabalho você esteja usando. Eu acho que sua melhor aposta é identificar as chaves que você tende a acertar acidentalmente e atribuí-las a "" na tua .inputrc.

Você pode desativar o terminal com set bell-style none, também no seu .inputrc.


1

Para aplicativos gtk-3 como o gnome-terminal e o nautilus, tente isto: Crie (ou edite) o arquivo ~/.config/gtk-3.0/gtk.css com o seguinte conteúdo:

$ cat ~/.config/gtk-3.0/gtk.css
@binding-set NoKeyboardNavigation {
unbind "F10"
}

* {
gtk-key-bindings: NoKeyboardNavigation
}

Para aplicativos gtk-2, adicione isso ~/.gtkrc-2.0 :

binding "NoKeyboardNavigation" {
        unbind "F10"
}

class * binding "NoKeyboardNavigation"

Eu preferiria fazer isso com readline em si.
porton

readline funciona no gnome-terminal.
harrymc

Mas eu quero que ele funcione em outros terminais como o Konsole também
porton

1
O acima aplica-se em teoria para todos os aplicativos gtk-3, e eu adicionei o equivalente para os aplicativos gtk-2. Não há garantia de que isso funcionará todos aplicativos de terminal. Você tem que fechar todos janelas do terminal antes que essas alterações possam entrar em vigor
harrymc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.