hey aaron,

iirc, when the X server starts up, it registers it's pid and virtual
terminal number with the vc subsystem, right?  if the X server did this
before opening any keyboard/mouse devices, then when those devices are
opened you could check who is opening them (this would probably happen
at the same time that the redirection / re-routing for the devices
happens), and if they are being opened by an X server assocaited with a
virtual terminal then the vc subsystem could record this association.
perhaps this could allow the vc subsystem automate the streams switching
and eliminate the KIOCSDIRECT / KIOCHIDSDIRECT ioctls entirely?  just a
thought...

ed



On Wed, Nov 12, 2008 at 10:23:30AM +0800, Aaron Zang wrote:
> Hi Ed,
>
> I share your thought about we'd hid as much as we can inside
> the VT layer.
>
> To detailing the situation, here is the process.
>
> When Xorg is starting, it opens its keyboard device, by default
> /dev/kbd, or specified from xorg.conf.
>
> When switching to console, if the keyboard device is /dev/kbd,
> it uses KIOCSDIRECT to direct the conskbd input to console,
> if the keyboard is /dev/usb/hidx, it should use a KIOCHIDSDIRECT
> to direct the hid keyboard input to conskbd.
>
> When switching back, it would also use KIOCSDIRECT/KIOCHIDSDIRECT
> with different arguments accordingly to set the input back to it.
>
> I was thinking the way that we can hid the streams switching
> inside VT is to let vtdaemon to do is job. But vtdaemon is lack
> of the context of what/which keyboard device Xorg is using.
> So I guess here, we'd let Xorg do its own job.
>
> And the above talking is just for Xorg 1.3 and earlier. I need
> to investigate more on 1.5.x as Alan said it relies on HAL.
> So stay tuned ;)
>
> Regards,
> Aaron
>
> On 11/11/08 08:39, Edward Pilatowicz wrote:
>> this sounds pretty resonable to me.
>>
>> at first thought, it seems to me that all this should be hidden
>> inside the vt/console/usb layer with no X interraction required.
>>
>> i guess i'd like some details on how you see the subsystems
>> interracting (vt, console, Xorg, usb devices, etc) before
>> i can provide detailed feedback.
>>
>> ed
>>
>> On Fri, Nov 07, 2008 at 05:45:30PM +0800, Aaron Zang wrote:
>>> Hi all,
>>>
>>> During the implementation of Xorg VT (virtual console) support,
>>> a problem has been discovered when Xorg physically opens a USB
>>> keyboard (/dev/usb/hid*).
>>>
>>> By default Xorg on Solaris opens the virtual keyboard device
>>> (/dev/kbd). The virtual keyboard (conskbd) creates two minor nodes
>>> thus has two streams. One is the internal minor node which is linked
>>> under console stream, the other is /dev/kbd which is for the use
>>> of applications.
>>> Say Xorg is running on /dev/vt/7, when /dev/vt/7 is made active,
>>> Xorg uses KIOCSDIRECT to route conskbd IO to /dev/kbd stream.
>>> And it will route the IO back when switching away to consoles.
>>>
>>> HID driver creates two minor nodes for a USB keyboard too.
>>> One minor node is internal used and the stream is plumbed under
>>> conskbd, the other is /dev/usb/hidx.
>>> When Xorg is configured to open /dev/usb/hidx as keyboard device,
>>> the internal stream is unplugged from conskbd automatically.
>>> So when switching from Xorg session back to console session, the
>>> console will not get any input from this keyboard.
>>> And Xorg can not close /dev/usb/hidx, since it has already dropped
>>> the privilege and running as a normal user at this moment. If Xorg
>>> closes /dev/usb/hidx when switching away, it loses the privilege
>>> to reopen the keyboard device when switching back.
>>>
>>> So the proposal here is to add a new ioctl to the hid driver for
>>> keyboard devices which has the similar routing functionality as
>>> KIOCSDIRECT does to conskbd driver.
>>>
>>> Before I am preparing any official documents, I would like to
>>> discuss it with the following purposes:
>>>
>>> 1) Is there any existing way to resolve this?
>>> 2) Is there any better solution?
>>>
>>> Edward and Alan, your comments are more than welcomed.
>>>
>>> Thanks a lot.
>>> Aaron
>>>
>>> --
>>> You know some birds are not meant to be caged, their feathers are just too 
>>> bright.
>
> --
> You know some birds are not meant to be caged, their feathers are just too 
> bright.

Reply via email to