Unix/Linux Go Back    


NetBSD 6.1.5 - man page for wskbd_rawinput (netbsd section 9)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


WSKBD(9)			  BSD 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 pro-
	      vide 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 associated 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 keyboard 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 associated 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 following 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 mem-
	      bers:

		      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.	There-
     fore, 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 keyboard 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 console operations
	      consops and the keyboard mapping table information in mapdata.  The functions spec-
	      ified 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 callbacks 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 perform 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 per-
     form 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) operations are listed in sys/dev/wscons/wsconsio.h.

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

BSD					December 20, 2005				      BSD
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 08:23 PM.