unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Peter <emacs@nexoid.at>
Cc: emacs-devel@gnu.org
Subject: Re: Reading from pipes directly with a process-filter
Date: Sat, 14 Jan 2023 08:56:46 +0200	[thread overview]
Message-ID: <83v8l98uz5.fsf@gnu.org> (raw)
In-Reply-To: <87wn5q6r3r.fsf@nexoid.at> (message from Peter on Fri, 13 Jan 2023 22:51:04 +0100)

> From: Peter <emacs@nexoid.at>
> Cc: emacs-devel@gnu.org
> Date: Fri, 13 Jan 2023 22:51:04 +0100
> 
> >> I've been slowly sliding into using Emacs more and more like a Lisp OS,
> >> so one thing that has come up is directly reading data from pipes or
> >> special devices (like /dev/input/event...). I can do that fine by
> >> running `start-process' with `cat /dev/input/event..', however that
> >> seems a bit wasteful. Is there any way to *directly* open such a file
> >> and put a process-filter in front of it?
> >
> > Did you try to use make-pipe-process?
> 
> No, but from my understanding, this will also not read the file
> directly, but run an extra process.

I don't think I understand what you are saying.  make-pipe-process
doesn't create any OS-level process, it creates only an Emacs process
object, similarly to what make-network-process does.

> >> Semi-relatedly, is there any support for `fnctl' or `ioctl' in elisp, so
> >> that I could even *write* to those special devices?
> >
> > Doesn't a simple 'write' (a.k.a. write-region in Emacs) work?  If not,
> > can you show a recipe that fails with all the details?
> 
> For example https://www.kernel.org/doc/html/v4.12/input/uinput.html
> shows how to write events to uinput. The function emit does the writing
> (the encoding can easily be done with bindat in Emacs), however it isn't
> sufficient to just *write* events, but some metadata must be set via
> ioctl (yea, "everything is a file" ... except for so many things...).
> 
> This is not a "normal" use-case for Emacs, however I've been playing
> around with running Emacs on the Pinephone, and this would help with the
> vibrator for notifications, for example.
> 
> Of course this could also be done in C code from a module, but if Emacs
> already somehow has support for doing this "directly", that'd be even
> greater ;)

Sounds like a job for a dynamic module, not for something that has to
be in the Emacs core.



      reply	other threads:[~2023-01-14  6:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-13 19:01 Reading from pipes directly with a process-filter Peter
2023-01-13 19:43 ` Eli Zaretskii
2023-01-13 21:51   ` Peter
2023-01-14  6:56     ` Eli Zaretskii [this message]

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=83v8l98uz5.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=emacs@nexoid.at \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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