MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit
Sorry for the insistence, but now that xorg-server 1.18 is on its way, I would really appreciate if someone could review this patch series in time for 1.18 release, so it can hopefully appear in next Ubuntu LTS/Debian stable release. However, input handling support in kdrive seems currently unmaintained, am I right? PLEASE NOTE: Xephyr is NOT my preferred approach for single-GPU multi-seat configuration (mainly due to its current evdev-based limited support for handling input devices --- no touchpads, no touchscreens, no joysticks), but it's the easiest one to implement in the moment. The best approach by far (in Linux specifically) would require KMS device node splitting, as proposed in https://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/. Until such a solution is completely implemented and supported by video drivers, the most common approach for single-GPU multi-seat configuration is based on nested X servers, i.e. a bare Xorg server spanning all desired video outputs, on top of which we launch a nested X server for each output. My preferred approach in this case would be Xorg itself with xf86-video-nested driver, but the latter is currently unmaintained, and I have no knowledge about video drivers and no spare time to maintain it. The other approach (historically the most used one) is Xephyr: it's currently actively maintained, it has reasonable graphics performance (compared to xf86-video-nested) and it has a minimal support for input devices (keyboard and mouse only), but it still have some gaps for a more comfortable multi-seat configuration. This patch series intend to fill them. This is the v6 of patch series which provides some missing parts for full single-GPU multi-seat support in Xephyr. The main difference to v5 is that now Xephyr also ignores option "-novtswitch" (passed by default for seat0 in some DMs), so that it can be also used as a seat0 X server in a strict single-GPU dual-seat setup (my previous tests only involve a dual-GPU 3-seat setup, where seat0 X server is completely decoupled from the other ones). Example of Xephyr-based seat configuration in LightDM 1.12 or newer based on this patch series (provided that a bare X server on display number :90, with two outputs named LVDS and VGA, is already running): [Seat:seat-LVDS] xserver-command=Xephyr -dpi 96 -sw-cursor -xkbrules evdev -xkblayout br -xkbmodel abnt2 -host-display :90 -output LVDS [Seat:seat-VGA] xserver-command=Xephyr -dpi 96 -sw-cursor -xkbrules evdev -xkblayout br -xkbmodel abnt2 -host-display :90 -output VGA ** HISTORY ** v5 only builds input-hotplugging for kdrive if one of CONFIG_UDEV or CONFIG_HAL options is enabled. v4 drops explicit option -input-hotplug. Since input hot-plugging support in Xephyr is very unlikely to be used outside multi-seat context, it's now automatically enabled if, and only if, -seat option is passed. v3 includes two patches: one that introduces a new flag to better distinguish between real keyboards and other key input devices (so that kdrive can grab keyboards only), and another one that prevents kdrive evdev driver from deliberately renaming keyboard and pointer devices if they are already named (e.g. from udev), with potential memory leaks. v2 fixes some problems found in v1, like double-free errors for some InputOption objects, and memory corruptions when a USB keyboard or mouse is unplugged and replugged several times, due to the fact that their FDs may not be successfully unregistered when they are unplugged. It also brings new patches for improving NewInputDeviceRequest() implementation in hw/kdrive/src/kinput.c (making use of KdParseKbdOptions() and KdParsePointerOptions() as requested), and some other minor changes. Some patches provide new command-line options to make it easier to launch Xephyr directly from display manager, rather than from within a user session. One of them fixes an issue where Xephyr keyboards' LEDs are not toggled when NumLock, CapsLock, and ScrollLock are pressed. The most significant one introduces input hotplugging support for keyboards and pointers with both hal and udev backends. Laércio de Sousa (9): ephyr: allow passing explictly host X server display number and/or authorization file path kdrive: fix up NewInputDeviceRequest() implementation kdrive: set "evdev" driver for input devices automatically, if available. kdrive: introduce input hot-plugging support for udev and hal backends (#33140) kdrive: add options to set default XKB properties ephyr: ignore "-novtswitch", "-sharevts", and "-layout seatXXX" command-line options ephyr: move host_has_extension() implementation to hostx.c config/udev: better distinguish between real keyboards and other key input devices kdrive: don't let evdev driver overwrite existing device names Mikhail Krivtsov (1): kdrive: update evdev keyboard LEDs (#22302) config/hal.c | 2 +- config/udev.c | 4 + config/wscons.c | 2 +- hw/kdrive/ephyr/ephyr.c | 12 +- hw/kdrive/ephyr/ephyrdriext.c | 4 +- hw/kdrive/ephyr/ephyrglxext.c | 2 +- hw/kdrive/ephyr/ephyrinit.c | 27 ++++ hw/kdrive/ephyr/hostx.c | 16 +- hw/kdrive/ephyr/hostx.h | 2 +- hw/kdrive/linux/evdev.c | 17 +- hw/kdrive/src/Makefile.am | 8 + hw/kdrive/src/kdrive.c | 79 ++++++++++ hw/kdrive/src/kinfo.c | 4 + hw/kdrive/src/kinput.c | 346 +++++++++++++++++++++++++++++++++-------- hw/xfree86/common/xf86Xinput.c | 2 +- include/input.h | 13 +- 16 files changed, 438 insertions(+), 102 deletions(-) -- 2.5.0 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
