On Wed, Oct 12, 2011 at 12:47:54PM -0700, patrick keshishian wrote:
> On Wed, Oct 12, 2011 at 11:26 AM, Alexandr Shadchin
> <[email protected]> wrote:
> > On Wed, Oct 12, 2011 at 02:15:45AM -0700, patrick keshishian wrote:
> >> On Wed, Oct 12, 2011 at 1:40 AM, Alexandr Shadchin
> >> <[email protected]> wrote:
> >> > On Wed, Oct 12, 2011 at 2:29 PM, Alexandr Shadchin
> >> > <[email protected]> wrote:
> >> >> On Wed, Oct 12, 2011 at 1:59 PM, patrick keshishian
> >> >> <[email protected]> wrote:
> >> >>> On Tue, Oct 11, 2011 at 2:09 PM, Philip Guenther <[email protected]>
> >> >>> wrote:
> >> >>>> On Tue, Oct 11, 2011 at 12:34 PM, S V <[email protected]> wrote:
> >> >>>>> I have one pretty specific problem, i have two USB keyboards
> >> >>>>> attached to the samsung nc10 laptop. And then i want to
> >> >>>>> attach different layouts to each i
> >> >>>>> stumble into one problem.
> >> >>>>>
> >> >>>>> $ xinput -list
> >> >>>> ...
> >> >>>>> So i can't separate each keyboard from others by device ids...
> >> >>>>> Can anybody help me to find where source of this behavior
> >> >>>>> lie and how i can fix it?
> >> >>>
> >> >>> this is interesting to me, because I wondered about this a few days
> >> >>> ago.
> >> >>>
> >> >>>> The multiplexing of the two keyboards to one input is done here, I
> >> >>>> believe, in the wscons layer. ?If so, it should be possible to use
> >> >>>> wsconsctl to set the mappings of the two independently. ?For example,
> >> >>>> on my laptop, when docked with a USB keyboard plugged in, wsconsctl
> >> >>>> shows entries for "keyboard.map" (the built-in keyboard) and
> >> >>>> "keyboard1.map" (the USB keyboard).
> >> >>>
> >> >>> I have a netbook where I have:
> >> >>>
> >> >>> $ grep keyboard /etc/wsconsctl.conf ?| grep -v ^#
> >> >>> keyboard.encoding=us.swapctrlcaps
> >> >>>
> >> >>> Then I want to connect a Sun keyboard (with the Control key in its
> >> >>> proper location) via USB connection.
> >> >>>
> >> >>> $ sudo wsconsctl | grep keyboard | grep -e encoding -e type
> >> >>> wsconsctl: Use explicit arg to view keyboard.map.
> >> >>> wsconsctl: Use explicit arg to view keyboard1.map.
> >> >>> keyboard.type=pc-xt
> >> >>> keyboard.encoding=us.swapctrlcaps
> >> >>> keyboard1.type=usb
> >> >>> keyboard1.encoding=us
> >> >>>
> >> >>> In the virtual terminal (this is -current-ish amd64) each keyboard
> >> >>> acts independently with their respective encoding. On the netbook
> >> >>> keyboard, CapsLock acts as the Control key, while on the Sun keyboard,
> >> >>> Control acts as Control (as it should). Enabling caps-lock on the
> >> >>> netbook keyboard, does not affect the Sun keyboard and vice versa (as
> >> >>> expected).
> >> >>>
> >> >>> However, in X11, both keyboards act as if swapctrlcaps are enabled.
> >> >>> Pressing Control on the Sun keyboard turns on caps-lock on both
> >> >>> keyboards.
> >> >>>
> >> >>> I attempted to play with xorg.conf to see if I can define a separate
> >> >>> InputDevice section for the Sun keyboard, but gave up after a few
> >> >>> permutations. The X documentation (man-pages) pretty much suck.
> >> >>>
> >> >>> I wasn't going to post on this topic, but since it has been brought
> >> >>> up, might has well ask: Is what I want to do possible in Xorg?
> >> >>>
> >> >>> Cheers,
> >> >>> --patrick
> >> >>>
> >> >>>
> >> >>
> >> >> X use /dev/wskbd (it is mux) on default. it is one keyboard for X.
> >> >>
> >> >> for separate settings need to define section "InputDevice" for every
> >> >> keyboards (/dev/wskbdX)
> >> >>
> >> >> as example xorg.conf:Section "ServerLayout"? ? ...? ? InputDevice
> >> >> "Kb1" "CoreKeyboard"? ? InputDevice "Kb2" "SendCoreEvents"EndSection
> >> >> Section "ServerFlags"? ? # This off auto configure, therefore need
> >> >> configure mouse manualy? ? Option "AutoAddDevices" "False"EndSection
> >> >> Section "InputDevice"? ? Identifer "Kb1"? ? Driver "kbd"? ? Option
> >> >> "Device" "/dev/wskbd0"? ? Option "XkbLayout" "..."? ? ...EndSection
> >> >> Section "InputDevice"? ? Identifer "Kb2"? ? Driver "kbd"? ? Option
> >> >> "Device" "/dev/wskbd1"? ? Option "XkbLayout" "..."? ? ...EndSection
> >> >> --
> >> >> Alexandr Shadchin
> >> >>
> >> >
> >> > Errr, sorry. bad web gmail.
> >> >
> >> > See http://koba.devio.us/distfiles/xorg.conf
> >>
> >> umm.... following that example, got the me to a state where the
> >> netbook keyboard was generate "gibberish". I couldn't log in. In
> >> console mode it worked just fine.
> >>
> >> Reverting the changes made to xorg.conf and restarting X didn't fix
> >> the problem, which is the weird part. I restarted X (actually xdm)
> >> multiple times, but something must have gotten cached somewhere,
> >> because the problem persisted.
> >>
> >> Note that switching to console mode the keyboard functioned fine. I
> >> had to reboot to get the netbook's keyboard working in X again.
> >>
> >> --patrick
> >
> > I examined the issue in more detail. Now there is no way to assign
> > different layouts for keyboards in X. X works only with /dev/wskbd
> > (i.e. mux)
>
> Any idea why reverting xorg.conf to previous working version and
> restarting xdm/X retained the "broken" keyboard state?
>
> --patrick
Yes, I found the reason for this behavior:
1 - /dev/wskbd (mux for /dev/wskbd0 and /dev/wskbd1)
2 - open direct wskbd0, wskbd0 removed from mux (wskbd - only wskbd1)
3 - close wskbd0, but wskbd0 not returned to mux (wskbd - only wskbd1)
If also open and close wskbd1, then wskbd - 0 devices.
I'll try to fix it.
--
Alexandr Shadchin