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

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

Re: The correspondence of the command-name and its key-sequence.


From: Omar Polo
Subject: Re: The correspondence of the command-name and its key-sequence.
Date: Sat, 09 Jan 2021 09:23:29 +0100
User-agent: mu4e 1.4.13; emacs 28.0.50

Hongyi Zhao <hongyi.zhao@gmail.com> writes:

> On Sat, Jan 9, 2021 at 2:34 PM Drew Adams <drew.adams@oracle.com> wrote:
>>
>> > But, it's still very hard for me to understand the correspondence of
>> > the command-name and its key-sequence. To summarize, why use C-g to
>> > represent the command keyboard-quit, instead of other more directly
>> > related forms, say, C-q.
>>
>> I think you're asking why `C-g' is used for quitting/canceling an action, 
>> instead of, for example `C-q' (since `q' is mnemonic for "quit").
>
> That's exactly what I mean.

q is also a mnemonic for "quote" which, given the lisp background, seems
appropriate ;)

C-h C-q

> C-q runs the command quoted-insert [...]

>> [.. lots of interesting information about the bell characters ..]
>>
>> "For example, the character or "G", whose ASCII code is 71 in base 10, or 
>> 100 0111 in binary, would be transformed into the binary code 000 0111 (7 in 
>> decimal), which is assigned to the bell character."
>
> I find another may be far-fetched relation based on your above
> notes/hints/comments:
>
> werner@X10DAi:~$ printf "%d %x\n" "'q" "'q"
> 113 71
> werner@X10DAi:~$ printf "%d %x\n" "'G" "'G"
> 71 47
>
> As you can see, the hexadecimal point code of "q" is the same as the
> decimal point code of "G" in form.
>
> BR,

You shouldn't mix the hexadecimal and decimal representation of the
characters.  The ASCII characters 0x01-0x1a (inclusive), i.e. the
characters in the range 1-26 (decimal), are the ctrl- variant of the A-Z
ASCII characters (0x41-0x5a).

I don't remember if the following is right, so please correct me if I'm
wrong, but the keyboards (the old ones I mean) when pressing the ctrl-
key along with a letter would apply a bitmask on that key.  If you look
at this wikipedia page[0], you'll see that the ASCII character 0x01
"Start of Heading" is mapped to C-a.  Now, if you look at the byte
representation of the 'A' character in ASCII it is

   4    1       (decimal)
  0010 0001     (hexadecimal)

and that SOH is

   0    1       (decimal)
  0000 0001     (hexadecimal)


and so on, B is mapped to to STX, C to ETX, ... G to the BELL character,
... I to the hard tab.

So it seems that CTRL(key) is (key & 0xDF).  (Again, correct me if I'm
wrong.  I recall reading something like this time ago, but I couldn't
find the source now)

Now, exactly why C-g was chosen for to the keyboard-quit, is something I
don't know, but the fact that by default it produces a BELL character
(on ttys at least) may be a hint.

[0]:https://en.wikipedia.org/wiki/C0_and_C1_control_codes#Basic_ASCII_control_codes



reply via email to

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