Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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 Keyboard-
       ctl 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
       associated  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
       /usr/local/plan9/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)

NAME | SYNOPSIS | DESCRIPTION | SOURCE | SEE ALSO | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=keyboard&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help