From: Omar Polo <op@omarpolo.com>
To: Hongyi Zhao <hongyi.zhao@gmail.com>
Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
Subject: Re: The correspondence of the command-name and its key-sequence.
Date: Sat, 09 Jan 2021 11:00:20 +0100 [thread overview]
Message-ID: <87h7nqe8gb.fsf@omarpolo.com> (raw)
In-Reply-To: <CAGP6POJXaaq0fp3kyrCxgEX5PmGvYegVp8ed+PdBP8JOU3ZDFg@mail.gmail.com>
Hongyi Zhao <hongyi.zhao@gmail.com> writes:
> On Sat, Jan 9, 2021 at 4:23 PM Omar Polo <op@omarpolo.com> wrote:
>[..]
>>
>> 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 have no clue. I wasn't there when they designed it :)
>> 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?
A Freudian slip. I intended to write horizontal tab :)
>> So it seems that CTRL(key) is (key & 0xDF).
>
> I still don’t quite understand how this is derived.
it clears the 3rd bit (counting from left to right). For instance, for
I <-> tab you get
4 9 (decimal)
0010 1001 (binary)
which becomes
0 9 (decimal)
0000 1001 (binary)
^
this one
As you can see, that bit get cleared. 0xDF is 1101 1111, so it should
"select" every bit but that one.
Note that this works even after the Z. [ (that's right after the Z)
gets mapped to C-[, which is ESC. \ gets mapped to "field separator" etc
( [ is 0011 1010, ESC is 0001 1010 )
>> (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,
next prev parent reply other threads:[~2021-01-09 10:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-09 6:05 The correspondence of the command-name and its key-sequence Hongyi Zhao
2021-01-09 6:32 ` Drew Adams
2021-01-09 7:16 ` Hongyi Zhao
2021-01-09 8:23 ` Omar Polo
2021-01-09 9:33 ` Hongyi Zhao
2021-01-09 10:00 ` Omar Polo [this message]
2021-01-11 8:04 ` Hongyi Zhao
2021-01-11 8:20 ` Omar Polo
2021-01-11 9:51 ` tomas
2021-01-09 17:20 ` Francis Belliveau
2021-01-14 22:21 ` ASCII - Why...? -- as promised Francis Belliveau
2021-01-09 21:21 ` The correspondence of the command-name and its key-sequence Drew Adams
2021-01-09 17:39 ` Kévin Le Gouguec
2021-01-09 18:47 ` Eduardo Ochs
2021-01-09 22:29 ` Kévin Le Gouguec
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87h7nqe8gb.fsf@omarpolo.com \
--to=op@omarpolo.com \
--cc=help-gnu-emacs@gnu.org \
--cc=hongyi.zhao@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).