Sections:

All contributions in this site reflect the authors' opinions and they are not necessarily endorsed by, or reflect the beliefs of, anarchyinthetubes, as neither do most of the opinions in other sites.

/sys/doc/ Documentation archive

[manual index][section index]

NAME

kbdputc, kbdrepeat, kbdclock, kbdq - keyboard interface to cons (3)

SYNOPSIS

#include keyboard.h

void kbdputc(Queue *q, int c)

void kbdrepeat(int on)

void kbdclock(void)

extern Queue *kbdq;

DESCRIPTION

This is the internal interface between /dev/keyboard of cons(3) and the architecture-dependent keyboard driver. Before calling any of these functions, the global variable kbdq must be initialised; cons(3) does not initialise it. This is usually done during system initialisation by the keyboard driver's kbdinit function , as follows:

kbdq = qopen(4*1024, 0, 0, 0);
qnoblock(kbdq, 1);

Kbdputc puts a 16-bit Unicode character c (ie, a `rune') on the given q, as a sequence of bytes in UTF-8 encoding (see utf(6)). If c is the special value Latin (defined by keyboard.h), kbdputc starts collecting characters, looking for the typeable representations of Unicode characters defined by keyboard(6); at the end of a complete such sequence, kbdputc queues the UTF-8 encoding of the corresponding Unicode character. It is up to the keyboard driver to map a suitable physical keyboard character (or combination of characters) to the code Latin.

Drivers that need to implement repeat of keypresses in software should call

addclock0link(kbdclock);

at the end of kbdinit, to cause kbdclock to be called each clock tick. Kbdrepeat can then be called to enable (on is non-zero) or disable it (on is zero). When repeat is on, kbdclock (when called) will periodically call kbdputc(kbdq,c) where c is the last rune given to kbdputc. The driver is responsible for enabling and disabling repeat appropriately; for instance, function keys and certainly Latin should typically not be repeated.

SOURCE

/os/*/kbd*.c

SEE ALSO

cons(3), utf(6), qio(10.2)

KBDPUTC(10.2) Rev:  Tue Jan 29 13:11:34 GMT 2008
original page
cat.4l77.com