WSKBD(9)               NetBSD Kernel Developer's Manual               WSKBD(9)

NAME
     wskbd, wskbd_input, wskbd_rawinput, wskbd_cnattach, wskbd_cndetach,
     wskbddevprint -- wscons keyboard support

SYNOPSIS
     #include <dev/wscons/wsconsio.h>
     #include <dev/wscons/wskbdvar.h>
     #include <dev/wscons/wsksymdef.h>
     #include <dev/wscons/wsksymvar.h>

     void
     wskbd_input(struct device *kbddev, u_int type, int value);

     void
     wskbd_rawinput(struct device *kbddev, u_char *buf, int len);

     void
     wskbd_cnattach(const struct wskbd_consops *consops, void *conscookie,
         const struct wskbd_mapdata *mapdata);

     void
     wskbd_cndetach();

     int
     wskbddevprint(void *aux, const char *pnp);

DESCRIPTION
     The wskbd module is a component of the wscons(9) framework to provide
     machine-independent keyboard support.  Most of the support is provided by
     the wskbd(4) device driver, which must be a child of the hardware device
     driver.

DATA TYPES
     Keyboard drivers providing support for wscons keyboards will make use of
     the following data types:

     kbd_t    An opaque type describing keyboard properties.

     keysym_t
              The wscons keyboard-independent symbolic representation of the
              keypress.

     struct wskbd_accessops
              A structure used to specify the keyboard access functions.  All
              keyboards must provide this structure and pass it to the
              wskbd(4) child device.  It has the following members:

                      int     (*enable)(void *, int);
                      void    (*set_leds)(void *, int);
                      int     (*ioctl)(void *v, u_long cmd, void *data,
                                      int flag, struct lwp *l);

              The enable member defines the function to be called to enable
              keypress passing to wscons.  The set_leds member defined the
              function to be called to set the LEDs on the keyboard.  The
              ioctl member defines the function to be called to perform key-
              board-specific ioctl calls.

              There is a void * cookie provided by the keyboard driver associ-
              ated with these functions, which is passed to them when they are
              invoked.

     struct wskbd_consops
              A structure used to specify the keyboard console operations.
              All keyboards which can operate as a console must provide this
              structure and pass it to the wskbd(4) child device.  If the key-
              board cannot be a console, it is not necessary to specify this
              structure.  It has the following members:

                      void    (*getc)(void *, u_int *, int *);
                      void    (*pollc)(void *, int);
                      void    (*bell)(void *, u_int, u_int, u_int);

              There is a void * cookie provided by the keyboard driver associ-
              ated with these functions, which is passed to them when they are
              invoked.

     struct wscons_keydesc
              A structure used to describe a keyboard mapping table to convert
              keyboard-specific keycodes to wscons keysyms.  It has the fol-
              lowing members:

                      kbd_t   name;           /* name of this map */
                      kbd_t   base;           /* map this one is based on */
                      int     map_size;       /* size of map */
                      const   keysym_t *map;  /* the map itself */

     struct wskbd_mapdata
              A structure used to describe the keyboard layout and operation
              to interpret the keyboard layout.  it contains the following
              members:

                      const struct wscons_keydesc *keydesc;
                      kbd_t layout;

     struct wskbddev_attach_args
              A structure used to attach the wskbd(4) child device.  It has
              the following members:

                      int console;
                      const struct wskbd_mapdata *keymap;
                      const struct wskbd_accessops *accessops;
                      void *accesscookie;

   Keymaps
     Keymaps are a dense stream of keysym_t.  A declaration has the following
     fields:

     pos [cmd] normal [shift] [altgr] [shift-altgr]

     The fields have the following meanings:

           pos          Always specified as KC(pos) and starts the description
                        of key pos.
           cmd          If the command modifier (KS_Cmd_XXX) is active, the
                        optional command cmd is invoked.
           normal       The keysym if no modifiers are active.
           shift        The keysym if the shift modifier is active.
           altgr        The keysym if the alt-gr modifier is active.
           shift-altgr  The keysym if the shift-alt-gr modifier is active.

     If the keysym after pos is not KS_Cmd_XXX, then cmd is empty.  The shift,
     altgr and shift-altgr fields are determined from previous fields if they
     are not specified.  Therefore, there are four valid keysym declarations:

     pos [cmd] normal

     pos [cmd] normal shift

     pos [cmd] normal shift altgr

     pos [cmd] normal shift altgr shift-altgr

FUNCTIONS
     wskbd_input(kbddev, type, value)
              Pass the keypress of value value and type type to wscons key-
              board driver.  Valid values of type are:

              WSCONS_EVENT_KEY_UP
                       Key released.

              WSCONS_EVENT_KEY_DOWN
                       Key pressed.

     wskbd_rawinput(kbddev, buf, len)
              Pass the raw keypress in the buffer buf to the wscons keyboard
              driver.  The buffer is len bytes long.  This function should
              only be called if the kernel option WSDISPLAY_COMPAT_RAWKBD is
              enabled.

     wskbd_cnattach(consops, conscookie, mapdata)
              Attach this keyboard as the console input by specifying the con-
              sole operations consops and the keyboard mapping table informa-
              tion in mapdata.  The functions specified in consops will be
              called with conscookie as the first argument.

     wskbd_cndetach()
              Detach this keyboard as the console input.

     wskbddevprint(aux, pnp)
              The default wskbd printing routine used by config_found().  (see
              autoconf(9)).

AUTOCONFIGURATION
     Keyboard drivers which want to use the wskbd module must be a parent to
     the wskbd(4) device and provide an attachment interface.  To attach the
     wskbd(4) device, the keyboard driver must allocate and populate a
     wskbddev_attach_args structure with the supported operations and call-
     backs and call config_found() to perform the attach (see autoconf(9)).
     The keymap member points to the wskbd_mapdata structure which describes
     the keycode mapping operations.  The accessops member points to the
     wskbd_accessops structure which describes the keyboard access operations.
     The console member is a boolean to indicate to wscons whether this key-
     board will be used for console input.

OPERATION
     If the keyboard belongs to the system console, it must register the
     wskbd_consops structure specifying the console operations via
     wskbd_cnattach() at console attach time.

     When a keypress arrives from the keyboard, the keyboard driver must per-
     form any necessary character decoding to wscons events and pass the
     events to wscons via wskbd_input().  If the kernel is compiled with the
     option WSDISPLAY_COMPAT_RAWKBD, then the keyboard driver must also pass
     the raw keyboard data to wscons via wskbd_rawinput().

     The wscons framework calls back into the hardware driver by invoking the
     functions that are specified in the accessops structure.  The enable()
     and set_leds() functions are relatively simple and self-explanatory.  The
     ioctl() function is called by the wscons interface to perform keyboard-
     specific ioctl operations (see ioctl(2)).  The argument cmd to the
     ioctl() function specifies the specific command to perform using the data
     data.  Valid commands are listed in sys/dev/wscons/wsconsio.h.

CODE REFERENCES
     The wscons subsystem is implemented within the directory sys/dev/wscons.
     The wskbd module itself is implement within the files
     sys/dev/wscons/wskbd.c and sys/dev/wscons/wskbdutil.c.  ioctl(2) opera-
     tions are listed in sys/dev/wscons/wsconsio.h.

SEE ALSO
     ioctl(2), autoconf(9), driver(9), intro(9), wsdisplay(9), wsmouse(9)

NetBSD 6.0.1                   December 20, 2005                  NetBSD 6.0.1

You can also request any man page by name and (optionally) by section:

Command: 
Section: 
Architecture: 
Collection: 
 

Use the DEFAULT collection to view manual pages for third-party software.


©1994 Man-cgi 1.15, Panagiotis Christias <christia@softlab.ntua.gr>
©1996-2014 Modified for NetBSD by Kimmo Suominen