[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: readline: How to unbind _all_ keys
From: |
Dennis Williamson |
Subject: |
Re: readline: How to unbind _all_ keys |
Date: |
Tue, 21 May 2019 16:33:38 -0500 |
On Tue, May 21, 2019 at 3:04 AM Henning <xaoxx@t-online.de> wrote:
> On 20/05/2019 15:38, Chet Ramey wrote:
> > On 5/19/19 10:43 AM, Henning wrote:
> >> I don't like to have dozens of key bindings I never use. Currently I
> >> am issuing lots of lots of bind -r/-u commands to get rid of the
> >> default bindings. This slows down console startup unnecessarily.
> >>
> >> I would really like to have an inputrc command like $removeall or
> >> something like bind -r/-u all.
> >> Or is there something undocumented for this purpose?
> >
> > There is not, and I don't see much point to adding one. If you want to
> > remove the bindings for all keys, something like this should work:
>
> Sorry, the subject of my mail should have been "... all non-self-insert
> kes.
>
> >
> > for ((f=0; f < 256; f++ ))
> > do
> > bind -r \\$(printf "%03o" $f)
> > done
> >
>
> smiling ...
>
> The following variant does what I want:
>
> K=( ' ' ! '\"' \# $ % \& \' \( \) \* + , - . /
> 0 1 2 3 4 5 6 7 8 9 : \; \< = \> \?
> @ A B C D E F G H I J K L M N O
> P Q R S T U V W X Y Z \[ '\\' \] ^ _
> \` a b c d e f g h i j k l m n o
> p q r s t u v w x y z \{ \| \} \~ )
>
> for ((k=0; k<95; k++)); do
> bind -r "\e${K[k]}"
> bind -r "\e\C-${K[k]}"
> bind -r "\C-x\C-${K[k]}"
> bind -r "\C-x${K[k]}"
> bind -r "\C-${K[k]}"
> done
>
> for k in O{A,B,C,D,H,F} \\e [200; do
> bind -r "\e$k"
> done
>
> bind -f /0/e/inputrc
>
> unset k K
>
> But this means nearly 500 bind -r commands. And that was the reason for
> my original mail, the question, if there is a less expensive way to get
> what I want.
>
> And another problem: after removing all \C-x sequences I used bind -x
> to bind a shell command to \C-x proper. The result, when hitting \C-x,
> is the following error message:
>
> bash_execute_unix_command: cannot find keymap for command
>
> Using a sequence other than \C-x works as expected.
> My guess is that \C-x can't be used alone. And that this can only be
> changed in the source code.
>
> Henning
>
>
>
Why don't you unbind the keystrokes that are actually bound?
while read -r b; do bind -r "$b"; done < <(bind -p | awk -F ':' '/./
&& !/self-insert|accept-line|^#/ {gsub("\"", "", $1); print $1}')
On my system, that takes 0.011 seconds to run and it's not iterating
through a bunch of key sequences that aren't there.
It does seem to leave behind a few, some of which match cchars (control
characters) in stty -a
"\C-?": backward-delete-char
"\C-v": quoted-insert
"\C-@": set-mark
"\e ": set-mark
"\C-u": unix-line-discard
"\C-w": unix-word-rubout
I haven't made any effort to troubleshoot that.

As an alternative, just put all the (un)bindings in ~/.inputrc, for example:
"\C-s": ""
To automate that:
bind -p | awk -F ':' '/./ && !/self-insert|accept-line|^#/ {print $1 ":
\"\""}' >> ~/.inputrc
Run that once from a shell with all the default bindings in place, edit the
file to remove any that conflict with your own custom bindings and you're
done. There will still be a small shell startup time cost, but I'm betting
it's very small.
Frankly, I'd have to dislike key bindings A LOT to go to the trouble of
doing all this unbinding.
> But I can not remove bindings with key-sequences my terminal does not
produce like \eO[ABCDFH]
But then you show a script that purports to do exactly that.
This inquiry would have been better suited for help-bash rather than
bug-bash.
--
Visit serverfault.com to get your system administration questions answered.
- Re: readline: How to unbind _all_ keys, (continued)
- Re: readline: How to unbind _all_ keys, Chet Ramey, 2019/05/20
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/21
- Re: readline: How to unbind _all_ keys, Chet Ramey, 2019/05/21
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/22
- Re: readline: How to unbind _all_ keys, Chet Ramey, 2019/05/22
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/24
- Re: readline: How to unbind _all_ keys, Chet Ramey, 2019/05/24
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/25
- previous/next-screen-line (was: readline: How to unbind _all_ keys), Henning, 2019/05/28
- Re: readline: How to unbind _all_ keys,
Dennis Williamson <=
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/22
- Re: readline: How to unbind _all_ keys, Koichi Murase, 2019/05/22
- Re: readline: How to unbind _all_ keys, Henning, 2019/05/22
- Re: readline: How to unbind _all_ keys, Chet Ramey, 2019/05/22