help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: Does code exist to check if a key sequence is valid for Emacs runnin


From: Pierre Rouleau
Subject: Re: Does code exist to check if a key sequence is valid for Emacs running in terminal mode?
Date: Fri, 12 Jul 2024 10:41:00 -0400

On Fri, Jul 12, 2024 at 10:35 AM Pierre Rouleau <prouleau001@gmail.com>
wrote:

>
>
> On Fri, Jul 12, 2024 at 9:11 AM Yuri Khan <yuri.v.khan@gmail.com> wrote:
>
>> On Fri, 12 Jul 2024 at 19:15, Pierre Rouleau <prouleau001@gmail.com>
>> wrote:
>>
>> > Does Emacs already have a predicate function that can be used to check
>> if
>> > the specified key sequence is valid for Emacs running in terminal mode?
>> >
>> > For example, "C-;" is not accessible on Emacs running in terminal mode
>> > because this is not an ASCII control character. It's available for Emacs
>> > running in graphical environment, but not in terminal mode.
>>
>> This is probably not solvable because an advanced terminal can
>> implement a protocol extension that represents arbitrary keys as
>> escape sequences that can then be turned into Emacs key events using
>> input-decode-map.
>>
>> You are correct, it depends on the terminal being used.
> I was thinking of writing a function that would call describe-key
> but setup the scope to output into a temporary buffer that it
> would discard and catch error if the key described is not a
> valid one.
>
> It would therefore like to distinguish the 3 potential cases:
> - the key sequence is bound
> - the key sequence is not defined.
>    Like "C-| is undefined" when tried in Emacs running in graphical mode.
> - the key sequence is not defined, but reported via an error.
>     Like "C-;" when tried under Emacs running in terminal mode
>     inside a terminal that does not remap the C-; to some other escape
> sequence.
>
> That sounds feasible.  No?
>
>

The code can determine if Emacs is running a GUI mode or in a terminal
mode.
In GUI mode it would assume that everything is possible.
In terminal mode the issue is being able to distinguish
whether the key sequence can be bound or not.

The real reason I want to do that is to prevent reporting key binding
clashes in code that tries to use the same key binding for 2 different
global key bindings
when that key binding is not even possible because Emacs will not be able
to react to it.


-- 
/Pierre


reply via email to

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