From: Po Lu <luangruo@yahoo.com>
To: Cecilio Pardo <cpardo@imayhem.com>
Cc: emacs-devel@gnu.org
Subject: Re: Physical keyboard events
Date: Mon, 04 Nov 2024 17:35:52 +0800 [thread overview]
Message-ID: <871pzrl4sn.fsf@yahoo.com> (raw)
In-Reply-To: <19ab52d0-88bd-4378-8fa8-8603e01233e3@imayhem.com> (Cecilio Pardo's message of "Mon, 4 Nov 2024 09:03:58 +0100")
Cecilio Pardo <cpardo@imayhem.com> writes:
> On 04/11/2024 1:21, Po Lu wrote:
>
>> Thank you. A number of comments: this is simply unacceptable, as Emacs
>> must not depend on XKB for such a basic feature.
>
> Ok.
>
>> ??? Code producing such events should not relay modifier keysyms
>> verbatim, but ought to detect the virtual modifiers to which they are
>> mapped, and convert them into Emacs modifiers, namely, meta, alt, ctrl,
>> hyper, super, and shift. Otherwise, Lisp will find it impossible
>> reliably to establish a correspondence between "physical key events" and
>> modifiers.
>
> This is about keys, not modifiers. For the use case of binding
> commands to keys, this remapping would be counterproductive. I can
> provide a function to make that conversion if needed.
I must disagree. When Emacs has enough information to decide which
modifiers are produced by physical keys it receives, as it does here, it
should not confuse Lisp programmers with a view of the keyboard state
that runs contrary to their expectations, not to mention that the
disparity between X keysyms and X modifiers is very great, and users who
swap the positions of the Shift and Ctrl modifiers will not expect to
receive raw keyboard events which disregard their keyboard
configuration.
BTW, if the intention is to forward just modifier key events to Lisp,
don't let's refer to them as "physical keyboard events", but in more
specific terms.
>> Please find some means of generating such events by saving them into the
>> keyboard event buffer defined in handle_ome_xevent.
>
> Ok.
>
>> x_filter_events is not the proper location for this call. It is only
>> invoked to filter an event through the active GTK or X input method
>> context, and it is not invoked if Emacs is configured not to open input
>> method contexts, or they are unavailable by happenstance.
>> This call is properly placed in handle_one_xevent, beneath the
>> labels
>> for KeyPress, KeyRelease, XI_KeyPress, XI_KeyRelease, and the GTK
>> keyboard callbacks in gtkutil.c. Pay attention to the different manners
>> in which the key codes are converted into keysyms and the keysyms into
>> modifiers, and imitate them closely or reuse them if possible.
>> Lastly, you must decide whether to capture modifier key events
>> before
>> they are filtered by the input method, or after. Input methods have
>> complete discretion over disposing of these events and will either
>> discard them entirely or resend a possibly modified event to Emacs. In
>> the latter scenario, you will receive duplicates of one and the same
>> event, and in principle it is impossible to distinguish between the
>> duplicates and the originals. Equally unsatisfactory is the option of
>> generating these events after they are filtered by the input method,
>> since none will be generated if the IM takes the other course.
>> These are the same concerns that led me not to implement raw
>> modifier
>> key events when this feature was proposed some years ago.
>
> Then probably this should only support X11+gtk and pgtk. Do those look
> ok? Is it acceptable to have support for nonfree systems in this case?
It's not acceptable only to support X11+GTK and PGTK, whether or not
non-free systems are also supported, because there are numerous severe
deficiencies with those configurations, and with them we are at the
mercy of an upstream that is uncooperative at best. And above all, what
I said applies just as well to the GTK configurations.
next prev parent reply other threads:[~2024-11-04 9:35 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-28 23:15 Physical keyboard events Cecilio Pardo
2024-10-29 13:40 ` Eli Zaretskii
2024-10-29 15:07 ` Cecilio Pardo
2024-10-29 15:38 ` Peter Feigl
2024-10-29 17:54 ` Cecilio Pardo
2024-10-29 23:41 ` James Thomas
2024-10-29 16:44 ` Eli Zaretskii
2024-10-29 16:55 ` Yuri Khan
2024-10-29 17:46 ` Eli Zaretskii
2024-10-30 2:56 ` Max Nikulin
2024-10-30 6:28 ` Yuri Khan
2024-10-30 6:39 ` Peter Feigl
2024-10-30 15:27 ` Eli Zaretskii
2024-10-30 17:13 ` Yuri Khan
2024-10-30 17:37 ` Eli Zaretskii
2024-10-30 19:26 ` Dov Grobgeld
2024-10-30 19:36 ` Juri Linkov
2024-10-30 19:55 ` Eli Zaretskii
2024-10-31 6:13 ` Yuri Khan
2024-10-30 15:21 ` Eli Zaretskii
2024-10-30 16:59 ` Max Nikulin
2024-10-29 17:56 ` Cecilio Pardo
2024-10-29 17:52 ` Cecilio Pardo
2024-10-29 17:13 ` Alan Mackenzie
2024-10-29 18:20 ` Cecilio Pardo
2024-10-29 19:31 ` Alan Mackenzie
2024-10-29 21:45 ` Cecilio Pardo
2024-10-30 6:02 ` Yuri Khan
2024-10-30 15:23 ` Eli Zaretskii
2024-10-30 16:51 ` Yuri Khan
2024-10-30 17:25 ` Eli Zaretskii
2024-10-30 3:27 ` Eli Zaretskii
2024-11-03 23:44 ` Cecilio Pardo
2024-11-04 0:21 ` Po Lu
2024-11-04 8:03 ` Cecilio Pardo
2024-11-04 9:35 ` Po Lu [this message]
2024-11-04 11:11 ` Cecilio Pardo
2024-11-04 11:49 ` Po Lu
2024-11-04 11:59 ` Cecilio Pardo
2024-11-04 13:29 ` Eli Zaretskii
2024-11-04 13:46 ` Cecilio Pardo
2024-11-04 13:54 ` Po Lu
2024-11-04 13:24 ` Eli Zaretskii
2024-11-04 14:09 ` Po Lu
2024-11-04 16:46 ` Eli Zaretskii
2024-11-05 1:31 ` Po Lu
2024-11-05 7:15 ` Cecilio Pardo
2024-11-05 9:03 ` Po Lu
2024-11-05 9:20 ` Cecilio Pardo
2024-11-05 12:21 ` Po Lu
2024-11-05 13:30 ` Eli Zaretskii
2024-11-05 14:27 ` Cecilio Pardo
2024-11-06 0:10 ` Po Lu
2024-11-06 12:49 ` Po Lu
2024-11-06 13:31 ` Eli Zaretskii
2024-11-07 0:25 ` Po Lu
2024-11-07 6:41 ` Eli Zaretskii
2024-11-07 14:36 ` Po Lu
2024-11-07 15:47 ` Eli Zaretskii
2024-11-07 16:58 ` Cecilio Pardo
2024-11-08 0:36 ` Po Lu
2024-11-05 13:13 ` Eli Zaretskii
2024-11-04 13:18 ` Eli Zaretskii
2024-11-04 14:37 ` Po Lu
2024-11-04 16:49 ` Eli Zaretskii
2024-11-05 1:03 ` Po Lu
2024-11-05 7:09 ` Cecilio Pardo
2024-11-05 13:06 ` Eli Zaretskii
2024-11-04 12:27 ` Eli Zaretskii
2024-11-04 13:09 ` Po Lu
2024-11-04 13:33 ` Eli Zaretskii
2024-11-16 8:42 ` Cecilio Pardo
2024-11-17 0:05 ` Po Lu
2024-11-18 20:35 ` bug#74423: Low level key events Cecilio Pardo
2024-11-18 23:49 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-23 12:08 ` Cecilio Pardo
2024-11-19 15:29 ` Eli Zaretskii
2024-11-19 16:43 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-19 20:05 ` Cecilio Pardo
2024-11-20 4:21 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-02 16:54 ` Cecilio Pardo
2024-12-04 20:01 ` Eli Zaretskii
2024-12-04 21:25 ` Cecilio Pardo
2024-12-05 5:41 ` Eli Zaretskii
2024-12-06 1:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-07 21:52 ` Cecilio Pardo
2024-12-13 22:55 ` Cecilio Pardo
2024-12-14 1:16 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-14 9:26 ` Cecilio Pardo
2024-12-14 11:14 ` Eli Zaretskii
2024-12-18 10:59 ` Cecilio Pardo
2024-12-22 4:31 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-18 20:38 ` Physical keyboard events Cecilio Pardo
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871pzrl4sn.fsf@yahoo.com \
--to=luangruo@yahoo.com \
--cc=cpardo@imayhem.com \
--cc=emacs-devel@gnu.org \
/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.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.