all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Brian Cully <bjc@spork.org>
To: Po Lu <luangruo@yahoo.com>
Cc: Eli Zaretskii <eliz@gnu.org>,
	rms@gnu.org, larsi@gnus.org, monnier@iro.umontreal.ca,
	emacs-devel@gnu.org
Subject: Re: master 3b41141708: Expose the name of an event's input device to Lisp
Date: Mon, 11 Apr 2022 00:11:48 -0400	[thread overview]
Message-ID: <87ee24z0wv.fsf@ditto.jhoto.spork.org> (raw)
In-Reply-To: <87r16448k0.fsf@yahoo.com>


Po Lu <luangruo@yahoo.com> writes:

> libinput in most cases gets its information from evdev.  What the kernel
> driver exposing the evdev device does is outside its scope.

	From what I can tell it seems like in all cases it gets its
information from evdev, which in turn gets its information from an ioctl
call.

>> 	I am at a loss, then. I do not know why libinput would choose to
>> give your devices unique names but not mine. Does the “Device” line of
>> ‘libinput list-devices’ also show unique names?
>
> It does not.

	I do not understand why libinput would show one device name, yet
X shows another for you. From what I can tell, there is a direct chain
of unmodified names that goes all the way from the kernel, through
evdev, through libinput, and up to X.

> That's a bug in the input driver.  If the input driver works correctly,
> then that will be possible.  If not (like in your case), you lose,
> sorry, but there is no way to fix that problem.  IOW, the devices are
> uniquely named, but from the point of view of Emacs the input driver is
> reporting two devices as a single device.

	My input driver is bog standard. Why do you claim there is a
bug? Is it documented somewhere that the kernel, evdev, or libinput will
present unique names? I have not found such documentation, and I have
found a number of code paths that make no effort at all at making names
unique.

> And as I already explained, devices are nowhere close to self-describing
> in their capabilities.  Joysticks send motion events, foot pedals send
> keyboard events, and so on and so forth.

	We may have different definitions of “self describing” happening
here. Joysticks and Gamepads have explicit usage IDs in the Generic
Desktop Page of the HID Usage Tables. While they present relative motion
like other devices, they are tagged by the USB in order to differentiate
them.

	Most of the commonly used devices have usage table definitions
which adequately describe how they function. But of course there is a
limit to what is even possible to describe automatically without user
intervention. Foot pedals are a good example; they tend to have unique
uses based on their users, and as a result their users are expected to
configure them. It is reasonable for Emacs to do this.

	However, what happens when you plug in two pedals of the same
make and model and they have the same name? You say this is a bug, and
that I lose, but I need to see *why* that’s a bug. In the mean time,
there are other identifiers I might be able to use other than the name,
like the serial number, or Bluetooth device ID, why should those be off
limits to my ability to configure them in Emacs?

	I think names can be useful, but names are not, by themselves,
an adequate solution. I can, seemingly without effort, create name
collisions on a standard Manjaro install. At this point I’m pretty
certain I could do it on any popular Linux distribution.

> It's the only reliable way to do that.  What else would you suggest?

	I would suggest, if we go this route, that the device comes with
more information than a name, or can at least be probed, so that I can
determine which information to use, such as the serial number.

>> prefix the device name with 'pointer:' or 'keyboard:' as appropriate.
>
> This message sort of demonstrates my point.  It is OK for there to be a
> pointer and a keyboard extension device with the same name, because they
> are the same device sending both motion and keyboard events.  But it is
> not correct for there to be more than one physical device with the same
> name.

	My point is that it is not just okay to have a device named the
same thing with multiple functions (indeed, that is how a tremendous
number of devices work), but that it is also okay for them to have the
same name with the same functions, because the name is meant for human
consumption and not computer algorithms.

-bjc



  reply	other threads:[~2022-04-11  4:11 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <164933858147.29834.15050766441005536059@vcs2.savannah.gnu.org>
     [not found] ` <20220407133623.9C209C009A8@vcs2.savannah.gnu.org>
2022-04-07 14:05   ` master 3b41141708: Expose the name of an event's input device to Lisp Stefan Monnier
2022-04-07 23:31     ` Po Lu
2022-04-07 23:41       ` Stefan Monnier
2022-04-08  0:07         ` Po Lu
2022-04-08  6:02         ` Eli Zaretskii
2022-04-08  6:08           ` Po Lu
2022-04-08  6:26             ` Eli Zaretskii
2022-04-08  7:36               ` Po Lu
2022-04-08 11:12                 ` Eli Zaretskii
2022-04-08 11:31                   ` Po Lu
2022-04-08 12:12                     ` Eli Zaretskii
2022-04-08 12:35                       ` Po Lu
2022-04-09  6:48                         ` Eli Zaretskii
2022-04-09  9:06                           ` Po Lu
2022-04-09  9:09                             ` Lars Ingebrigtsen
2022-04-09  9:30                             ` Eli Zaretskii
2022-04-09 10:03                               ` Po Lu
2022-04-09 11:03                                 ` Eli Zaretskii
2022-04-09 11:44                                   ` Po Lu
2022-04-09 14:04                                     ` Eli Zaretskii
2022-04-09 16:33                                       ` Stefan Monnier
2022-04-09 16:41                                         ` Lars Ingebrigtsen
2022-04-09 17:06                                           ` Eli Zaretskii
2022-04-09 17:16                                             ` Eli Zaretskii
2022-04-09 17:52                                             ` Brian Cully
2022-04-09 19:18                                               ` Eli Zaretskii
2022-04-10  0:54                                               ` Po Lu
2022-04-10  1:46                                                 ` Brian Cully
2022-04-10  2:11                                                   ` Po Lu
2022-04-10  2:45                                                     ` Brian Cully
2022-04-10  3:30                                                       ` Po Lu
2022-04-10  0:37                                           ` Po Lu
2022-04-10  5:49                                             ` Eli Zaretskii
2022-04-10  6:09                                               ` Po Lu
2022-04-10  6:44                                                 ` Eli Zaretskii
2022-04-10  7:31                                                   ` Po Lu
2022-04-10  8:28                                                     ` Eli Zaretskii
2022-04-10  8:50                                                       ` Po Lu
2022-04-10  9:17                                                         ` Eli Zaretskii
2022-04-10  9:25                                                           ` Po Lu
2022-04-10 11:15                                                             ` Po Lu
2022-04-10 15:16                                                               ` Stefan Monnier
2022-04-11  1:02                                                                 ` Po Lu
2022-04-10 11:46                                                   ` Lars Ingebrigtsen
2022-04-10 11:41                                             ` Lars Ingebrigtsen
2022-04-10  0:48                                       ` Po Lu
2022-04-10  6:04                                         ` Eli Zaretskii
2022-04-10  6:17                                           ` Po Lu
2022-04-10  6:49                                             ` Eli Zaretskii
2022-04-10  7:01                                               ` Po Lu
2022-04-10  8:24                                                 ` Eli Zaretskii
2022-04-10  8:42                                                   ` Po Lu
2022-04-10  9:13                                                     ` Eli Zaretskii
2022-04-10 12:51                                                       ` Brian Cully
2022-04-10 13:21                                                         ` Po Lu
2022-04-10 18:08                                                           ` Brian Cully
2022-04-11  0:58                                                             ` Po Lu
2022-04-11  1:08                                                               ` Brian Cully
2022-04-11  2:00                                                                 ` Po Lu
2022-04-11  2:03                                                                   ` Po Lu
2022-04-11  2:21                                                                   ` Brian Cully
2022-04-11  3:12                                                                     ` Po Lu
2022-04-11  4:11                                                                       ` Brian Cully [this message]
2022-04-11  5:20                                                                         ` Po Lu
2022-04-11 11:33                                                                           ` Brian Cully
2022-04-11 14:09                                                                             ` Po Lu
2022-04-11 16:26                                                                               ` Brian Cully
2022-04-11 10:10                                                             ` Lars Ingebrigtsen
2022-04-10 12:44                                                     ` Brian Cully
2022-04-10 13:14                                                       ` Po Lu
2022-04-08 14:27         ` Stefan Monnier
2022-04-09  0:24           ` Po Lu
2022-04-09  2:52             ` Stefan Monnier
2022-04-09  3:17               ` Po Lu
2022-04-09 13:31                 ` Stefan Monnier
2022-04-09 13:37                   ` Po Lu
2022-04-09 14:20                     ` Stefan Monnier
2022-04-10  0:58                       ` Po Lu
2022-04-09 14:31                     ` Eli Zaretskii
2022-04-10  0:56                       ` Po Lu
2022-04-10  6:11                         ` Eli Zaretskii
2022-04-10  6:23                           ` Po Lu
2022-04-10  6:52                             ` Eli Zaretskii
2022-04-10  7:37                               ` Po Lu
2022-04-10  8:12                                 ` Eli Zaretskii
2022-04-09  6:22             ` Eli Zaretskii

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=87ee24z0wv.fsf@ditto.jhoto.spork.org \
    --to=bjc@spork.org \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    --cc=luangruo@yahoo.com \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@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.