home | help
KEYBOARD(3)		    Library Functions Manual		     KEYBOARD(3)

NAME
     initkeyboard, ctlkeyboard, closekeyboard - keyboard control

SYNOPSIS
     #include <u.h>
     #include <libc.h>
     #include <thread.h>
     #include <keyboard.h>

     Keyboardctl    *initkeyboard(char *file)

     int	    ctlkeyboard(Keyboardctl *kc, char *msg)

     void	    closekeyboard(Keyboard *kc)

DESCRIPTION
     These functions access and control a keyboard interface for character-at-a-
     time  I/O	in  a  multi-threaded  environment,  usually in combination with
     mouse((3)).  They use the message-passing Channel interface in the  threads
     library  (see thread((3))); programs that wish a more event-driven, single-
     threaded approach should use event((3)).

     Initkeyboard opens a connection to the keyboard and returns  a  Keyboardctl
     structure:

	    typedef struct Keyboardct Keyboardctl;
	    struct Keyboardctl
	    {
		  Channel *c;	    /* chan(Rune[20]) */

		  char	  *file;
		  int	  consfd;   /* to cons file */
		  int	  ctlfd;    /* to ctl file */
		  int	  pid;	    /* of slave proc */
	    };

     The  argument  to initkeyboard is ignored (on Plan 9, it is the name of the
     keyboard device).

     Once the Keyboardctl is set up a message containing a Rune will be sent  on
     the Channel Keyboardctl.c to report each character read from the device.

     Ctlkeyboard  is  used  to set the state of the interface, typically to turn
     raw mode on and off.  It writes the string msg to the control file  associ-
     ated  with  the device, which is assumed to be the regular device file name
     with the string ctl appended.

     Closekeyboard closes the file descriptors	associated  with  the  keyboard,
     kills the slave processes, and frees the Keyboardctl structure.

SOURCE
     /src/libdraw

SEE ALSO
     graphics((3)), draw((3)), event((3)), thread((3)).

BUGS
     Because  the  interface  delivers complete runes, there is no way to report
     lesser actions such as shift keys or even individual bytes.

								     KEYBOARD(3)

home | help