bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: No way to 'bind -x' symbolic character names


From: Chet Ramey
Subject: Re: No way to 'bind -x' symbolic character names
Date: Sat, 30 Nov 2019 12:24:03 -0500
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.1

On 11/30/19 9:57 AM, Dennis Williamson wrote:
> On Fri, Nov 29, 2019, 10:40 AM Nikolaos Kakouros <nkak@kth.se> wrote:
> 
>> Using bash version:
>>
>> GNU bash, version 5.0.11(1)-release (x86_64-pc-linux-gnu)
>>
>>
>> Trying to map Backspace to execute a function, I try to do:
>>
>> bind -x '"Rubout": my_func'
>>
>> This, as expected, binds the string 'Rubout' to the function. Omitting the
>> double quotes makes bind fail. Escaping, like `\Rubout`, works neither.

The answer below, using the standard "\C-?" notation to denote DEL, is the
right one. The symbolic character names were deprecated a number of years
ago. They only work with old APIs.

>> This is important in the case of Backspace, as there is no (to my
>> knowledge) other way to bind the backspace than using Rubout. Using Konsole
>> as my terminal emulator, `C-v Backspace` prints `^?` which I haven't
>> managed to use with bind.
>>
> 
> Backspace is a terminal setting which has precedence. You have to first
> undefine it.
> 
> stty erase undef
> bind -x '"\C-?":my_func'

The `stty erase under' might be overkill, since it affects all programs
using that terminal.

Readline binds the terminal special characters if the variable
`bind-tty-special-chars' is set, and it's set by default. You could unset
that instead of disabling the stty erase character binding.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]