
The libinput input handling library for the Linux desktop on both Wayland and X.Org based systems is rolling out Lua plug-in support. Out today is libinput 1.30-rc1 with the initial infrastructure for supporting plug-ins written in the Lua scripting language.
Back in May we covered libinput’s preparations for a Lua-based plug-in system for more easily modifying devices and input events. Lua was chosen over WebAssembly since it’s very easy to sandbox while fulfilling all of their other design needs. It can allow for new plug-ins to be rather easily created for libinput, for example:

The libinput input handling library for the Linux desktop on both Wayland and X.Org based systems is rolling out Lua plug-in support. Out today is libinput 1.30-rc1 with the initial infrastructure for supporting plug-ins written in the Lua scripting language.
Back in May we covered libinput’s preparations for a Lua-based plug-in system for more easily modifying devices and input events. Lua was chosen over WebAssembly since it’s very easy to sandbox while fulfilling all of their other design needs. It can allow for new plug-ins to be rather easily created for libinput, for example:
libinput 1.29.901 was released today as the first release candidate toward libinput 1.30. Red Hat input expert Peter Hutterer describes the Lua plug-in support as:
“Lua plugins sit logically between libinput and the kernel and can modify the evdev event stream from a device. A plugin may change the capabilities of a device (e.g. enabling/disabling event codes) and/or change selected events. Further more, plugins can disable certain internal libinput features. This allows for custom-tailored behavior for cases where hardware doesn’t match what libinput expects (or is willing to implement), e.g. mice with very specific button debouncing behaviours.
A set of example plugins are available in the plugins/ directory of the libinput source tree. For plugins to work they need to be enabled by the caller via the new libinput_plugin_system_load_plugins() call. Until further notice the meson option -Dautoload-plugins will automatically load plugins if the caller does not do so. This option may be removed in the future.“
Libinput 1.30 is also supporting the custom pointer acceleration method to accelerate high resolution scroll wheel events, detecting virtual devices created by uinput or virtual machines, and various device-specific quirks added.
More details on the changes coming for libinput 1.30 via the mailing list announcement.