<p><br>
On Jan 8, 2013 2:28 AM, "Peter Hutterer" <<a href="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</a>> wrote:<br>
><br>
> On Mon, Jan 07, 2013 at 01:43:16PM +0100, Michal Suchanek wrote:<br>
> > On 7 January 2013 05:08, Peter Hutterer <<a href="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</a>> wrote:<br>
> > > On Sat, Jan 05, 2013 at 07:06:05PM +0100, Samuel Thibault wrote:<br>
> > >> Michal Suchanek, le Sat 05 Jan 2013 18:55:28 +0100, a écrit :<br>
> > >> > On 5 January 2013 02:10, Samuel Thibault <<a href="mailto:sthibault@debian.org">sthibault@debian.org</a>> wrote:<br>
> > >> > > Alan Coopersmith, le Mon 31 Dec 2012 17:46:47 -0800, a écrit :<br>
> > >> > >> On 12/31/12 05:36 PM, Samuel Thibault wrote:<br>
> > >> > >> > Michal Suchanek, le Mon 31 Dec 2012 19:22:13 +0100, a écrit :<br>
> > >> > >> >> why is that patch needed?<br>
> > >> > >> >><br>
> > >> > >> >> It is quite non-obvious why would dummy driver require a console under<br>
> > >> > >> >> any circumstances. It does not render anything anywhere so does not<br>
> > >> > >> >> use console for anything.<br>
> > >> > >> ><br>
> > >> > >> > The console *is* needed for keyboard input.<br>
> > >> > >> ><br>
> > >> > >> > Again, the use case is blind people who have use of possessing an actual<br>
> > >> > >> > screen, and thus don't have any, and thus have to use the dummy driver.<br>
> > >> > >><br>
> > >> > >> So it sounds like that should be handled by the input driver, not the<br>
> > >> > >> output driver.<br>
> > >> > ><br>
> > >> > > Ok, that makes sense. Input drivers however don't currently have a way<br>
> > >> > > to request the core to callxf86OpenConsole, similar to the absence of<br>
> > >> > > the HW_SKIP_CONSOLE flag in the case of video drivers.<br>
> > >> > ><br>
> > >> > > What do you recommend to add to the InputDriverRec? A driverFunc method<br>
> > >> > > like video drivers? Something else?<br>
> > >> ><br>
> > >> > I still don't understand the problem. The evdev driver opens the evdev<br>
> > >> > device when loaded and reads input there. That happens even with dummy<br>
> > >> > video driver so long as you do not carefully prevent the evdev driver<br>
> > >> > from loading, does it not?<br>
> > >><br>
> > >> It does not. See for instance the attached xorg.conf, then I run from<br>
> > >> vt1<br>
> > >><br>
> > >> xinit /usr/bin/fvwm -- :1<br>
> > >><br>
> > >> there is no VT switch, and pressing ^C 5s later kills the server (while<br>
> > >> we'd want ^C to just go to the server). The resulting Xorg.1.log is<br>
> > >> attached.<br>
> > ><br>
> > > while it shows the issue, this is not a good example. the config section for<br>
> > > the keyboard isn't referenced from the layout so it doesn't apply, and the<br>
> > > config for the mouse is ignored because input hotplugging is enabled. so<br>
> > > only the dummy driver section applies, the rest of this config has no effect.<br>
> > ><br>
> > >> What I understand is that evedev does open things, but since no VT was<br>
> > >> allocated, the evdev driver does not eat keypresses, i.e. from its point<br>
> > >> of view it's as if we had switched away from an allocated VT.<br>
> > ><br>
> > > evdev reads data off /dev/input/eventX and it doesn't need a console.<br>
> > ><br>
> > > but without xf86OpenConsole() and ioctl(KDSKBMODE), the events are also<br>
> > > sent to the console. this is your real problem, since both get the event and<br>
> > > you can kill your server. we've had this issue years back after switching to<br>
> > > evdev as standard driver, and then when we removed the EVIOCGRAB from evdev.<br>
> > ><br>
> > >> So what Alan suggested is that the evdev driver simply tells the core<br>
> > >> that it needs a VT to work properly. I'm now just asking which way that<br>
> > >> should be done.<br>
> > ><br>
> > > I'm not sure this is the right approach. evdev doesn't need a VT to work<br>
> > > properly, I've got a use-case here (automated testing) that works perfectly<br>
> > > well without a VT. plus, with hotplugging you don't actually know if and<br>
> > > when an evdev device will be added.<br>
> > ><br>
> > > so the solution here would be to only call xf86OpenConsole() when a keyboard<br>
> > > device comes up. on the plus side, if the evdev driver is broken this would<br>
> > > allow you to Ctrl+C the server. On the minus side, there's a window where<br>
> > > you can Ctrl+C the server until the device has been added.<br>
> > ><br>
> > > your use-case (or mine, depending on your POV) seems to need not a console<br>
> > > switch but an option to enable/disable keyboard input from being sent to the<br>
> > > console. this is the solution we should be looking at, imo.<br>
> ><br>
> > The evdev driver is loaded and can tell anything to the X server only<br>
> > when an evdev device is detected.<br>
> ><br>
> > Note that on x86 it is always loaded to handle acpi button but on<br>
> > other platforms it may be loaded only when an actual input device is<br>
> > attached.<br>
> ><br>
> > So even with hotpulg if it was the evdev driver telling the X server<br>
> > it would tell it only when a device actually exists.<br>
> ><br>
> > Also it is not sufficient to grab the terminal when a keyboard<br>
> > appears. Mice are also used by the terminal and arbitrary action can<br>
> > be performed by terminal program receiving the mouse input. I am not<br>
> > sure how this is arbitrated but since there is no problem now the<br>
> > current code in X server presumably takes care of that also when<br>
> > invoked.<br>
> ><br>
> > Note that almost every input driver except void requires that the X<br>
> > server prevents the terminal form reciving input including kbd,<br>
> > synaptics, wacom, .. Only complex pointing devices that do not have<br>
> > mouse-compatible fallback do not require that. I am not sure the X<br>
> > server supports any at this time.<br>
><br>
> fwiw, the reason synaptics and wacom stop the terminal from receiving input<br>
> is a side-effect and not a primary motivation. the grab we put on the device is to<br>
> avoid duplicate devices in X (e.g. device added with /dev/input/wacom and<br>
> /dev/input/event0 both being added as separate devices), not so much any<br>
> worry about the console. we're at a point where both drivers work just fine<br>
> without the grab - at least in the default configurations.<br>
><br>
> Cheers,<br>
>    Peter</p>
<p> <br>
Maybe I'm missing something, auto detecting if VT switch is needed means introducing an inconsistencty. Dummy and evdev can both work without allocating a VT, and there are cases where that may be useful, such as debugging a server or input driver.</p>

<p>Would an explict -forcetty or -forcevtalloc be an option? There are already distro specific configuration scripts for setting up Linux for blind user, could they add this option when they configure the dummy output?<br>
</p>