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.

porton
fonte

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.

Clueless Guest
fonte
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"
harrymc
fonte
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