Skip to content

Protocol requirements for multiple input mappers #3

@kermitfrog

Description

@kermitfrog

Let's collect what we need for multiple mappers to work together in this post. Feel free to edit (I don't think I can make it editable for others, so I'll just collect everything in this post (starting in a few days))

We need a way to..

  • generate new events and block existing events;
  • feed the events from one mapper into another mapper, for example to make a foot switch able to function as a ctrl button;
  • deterministically set the order in which one mapper feeds into the other, we don't want that randomized every reboot;
  • add and remove programs to the input-mapping chain and have them interact with each other in the specified order even if they were started in a different order, lest a reboot is needed every time the user experiments with a configuration change;
  • inject some events into the chain from a short-lived script without significant delay, lest xdotool needs to keep a daemon running to be able to occasionally send keys;
  • identify which device has triggered a specific event. (Putting it here so we don't forget the current limitations of libinput seats)

Not strictly necessary for working together, but nice-to-haves:

  • Some way to map to unicode symbols that are not on the current keyboard layout;
  • Some way to map to unicode grapheme clusters;
  • Some way to change the mappings based on the active window.
  • A way to deal with changes in the input chain like configuration change or insert | remove of mapper that happen mid-event.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions