tech-x11 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Xorg keymap and wskbd keymap
> > I'm looking at several sources around Xorg server keyboard driver
> > to switch several orphaned wsfb based ports from xfree86 to xorg.
> >
> > In xsrc/external/mit/xf86-input-keyboard/dist/src/bsd_KbdMap.c
> > There are several wskbd keymaps (translating it to atKeymap?),
> > like wsUsbMap (ukbd), wsXtMap (pckbd), wsAdbMap (akbd) etc.
> >
> > If we are going to add more other ports (like dreamcast, newsmips
> > etc),
> > do we have to add all machine dependent wskbd keymaps in this file
> > as old xfree86 servers have independent keymap sources?
>
> Yes and no. We need to get rid of those MD wsevent codes anyway if we
> ever want keyboard muxes to work properly ( as in - with devices using
> different scancodes on the same mux, like an ADB keyboard and a USB
> keypad. Right now there is no way to tell them apart. )
> They should all emit USB scancodes since that seems to cover pretty
> much everything.
Hmm, then what should actually be done for maple keyboard support?
1) add a map in bsd_KbdMap.c for maple keyboard keycode to convert
it to AT keymap
2) modify maple (and all other) keyboard driver to emit pckbd compatible
keycode in RAWKBD mode, as sys/dev/hpc/hpckbd.c does
3) add a magic to generate a map to translate wskbd keycode to keysym_t
4) or other?
On dreamcast, a kernel can detect keyboard types (jp/us/uk) and
switches keymaps automatically. How should it be handled in
keymap translations in Xserver?
> > Is there any reason why we don't use wskbd(4)'s WSKBDIO_GETMAP ioctl
> > to get keymaps (with modifier) used in kernel?
>
> The Xserver as it works right now would still need to know how to
> interpret them. Or rather, the kbd driver would. The keyboard code
> inherited from xf86 translates everything into something AT-like
> before doing any further processing, that's what these tables are for.
In current wskbd(4) implementation, each wskbd drivers return
raw (device dependent) keycode and translation maps from keycode
to keysym_t can be retrieved by WSKBDIO_GETMAP ioctl
(though there is no document about these exported ioctls).
It looks WSKBDIO_GETMAP returns an array of struct wscons_keymap defined
in <sys/dev/wscons/wsksymvar.h> with device dependent keycode index.
struct wscons_keymap includes Cmd_foo values in the "command" member
and other keysym_t values in "group1[]" and "group2[]" members
(they include ones for normal, SHIFT, ALT, and ALT+SHIFT).
Xserver requires the similar translation maps, so with this ioctl,
I think the only thing we need is a translation map from
wskbd keysym_t (KS_foo) to X KeySyms (XK_foo) to generate keymaps
like one used in
xsrc/xfree/xc/programs/Xserver/hw/netbsd/dreamcast/dreamcastKeymap.c.
Is there any problem to use it in Xserver?
(I'm not sure if we can handle multiple keyboard that return different
MD keycode though)
> > Or simply we should handle it in xkbcomp symbol files as hpcarm W-
> > ZERO3?
> > (I don't know how files in external/mit/xkeyboard-config/dist/symbols
> > should be declared though)
>
> Didn't the xorg people declare xkb deprecated a while ago?
Probably I miss something (xkeyboard-config is not relevant to xkb?),
but Xorg server on hpcarm W-ZERO3 works with keymap files put in
xsrc/external/mit/xkeyboard-config/dist/symbols/sharp_vndr/ws0??sh
without keymaps in bsd_KbdMap.c.
---
Izumi Tsutsui
Home |
Main Index |
Thread Index |
Old Index