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: Hongyi Zhao
Subject: Re: The correspondence of the command-name and its key-sequence.
Date: Sat, 9 Jan 2021 17:33:39 +0800

On Sat, Jan 9, 2021 at 4:23 PM Omar Polo <op@omarpolo.com> wrote:
>
>
> 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).

Why is the ASCII table designed into this strange layout?

>
> 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.

The `man acsii' says the following:

HT  '\t' (horizontal tab)

Why you describe it as the hard tab?

>
> So it seems that CTRL(key) is (key & 0xDF).

I still don’t quite understand how this is derived.

> (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

Thanks a lot for this interesting and presumably feasible analysis.

Best,
-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Polytechnic University of Science and Technology engineering
NO. 552 North Gangtie Road, Xingtai, China



reply via email to

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