.TH KEYBOARD 3
.SH NAME
initkeyboard, ctlkeyboard, closekeyboard \- keyboard control
.SH SYNOPSIS
.nf
.B
#include <u.h>
.B
#include <libc.h>
.B
#include <thread.h>
.B
#include <keyboard.h>
.PP
.B
Keyboardctl	*initkeyboard(char *file)
.PP
.B
int			ctlkeyboard(Keyboardctl *kc, char *msg)
.PP
.B
void			closekeyboard(Keyboard *kc)
.SH 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
.IR mouse (3).
They use the message-passing
.B Channel
interface in the threads library
(see
.IR thread (3));
programs that wish a more event-driven, single-threaded approach should use
.IR event (3).
.PP
.I Initkeyboard
opens a connection to the keyboard and returns a
.B Keyboardctl
structure:
.IP
.EX
.ta 6n +\w'Channel 'u +\w'consfd;   'u
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 */
};
.EE
.PP
The argument to
.I initkeyboard
is ignored
(on Plan 9, it is the name of the keyboard device).
.PP
Once the
.B Keyboardctl
is set up a
message containing a
.BR Rune
will be sent on the
.B Channel
.B Keyboardctl.c
to report each character read from the device.
.PP
.I Ctlkeyboard
is used to set the state of the interface, typically to turn raw mode on and off.
.\" (see
.\" .IR cons (3)).
It writes the string
.I msg
to the control file associated with the device, which is assumed to be the regular device file name
with the string
.B ctl
appended.
.PP
.I Closekeyboard
closes the file descriptors associated with the keyboard, kills the slave processes,
and frees the
.B Keyboardctl
structure.
.PP
.SH SOURCE
.B \*9/src/libdraw
.SH SEE ALSO
.IR graphics (3),
.IR draw (3),
.IR event (3),
.IR thread (3).
.SH BUGS
Because the interface delivers complete runes,
there is no way to report lesser actions such as
shift keys or even individual bytes.
