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

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
KEYBOARD(3)							   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&manpath=FreeBSD+10.3-RELEASE+and+Ports>

home | help