1 cfa37a7b 2004-04-10 devnull .TH KEYBOARD 3
3 cfa37a7b 2004-04-10 devnull initkeyboard, ctlkeyboard, closekeyboard \- keyboard control
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
7 cfa37a7b 2004-04-10 devnull #include <u.h>
9 cfa37a7b 2004-04-10 devnull #include <libc.h>
11 cfa37a7b 2004-04-10 devnull #include <thread.h>
13 cfa37a7b 2004-04-10 devnull #include <keyboard.h>
16 cfa37a7b 2004-04-10 devnull Keyboardctl *initkeyboard(char *file)
19 cfa37a7b 2004-04-10 devnull int ctlkeyboard(Keyboardctl *kc, char *msg)
22 cfa37a7b 2004-04-10 devnull void closekeyboard(Keyboard *kc)
23 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
24 cfa37a7b 2004-04-10 devnull These functions access and control a keyboard interface
25 cfa37a7b 2004-04-10 devnull for character-at-a-time I/O in a multi-threaded environment, usually in combination with
26 bf8a59fa 2004-04-11 devnull .IR mouse (3).
27 cfa37a7b 2004-04-10 devnull They use the message-passing
28 cfa37a7b 2004-04-10 devnull .B Channel
29 cfa37a7b 2004-04-10 devnull interface in the threads library
31 bf8a59fa 2004-04-11 devnull .IR thread (3));
32 cfa37a7b 2004-04-10 devnull programs that wish a more event-driven, single-threaded approach should use
33 bf8a59fa 2004-04-11 devnull .IR event (3).
35 cfa37a7b 2004-04-10 devnull .I Initkeyboard
36 cfa37a7b 2004-04-10 devnull opens a connection to the keyboard and returns a
37 cfa37a7b 2004-04-10 devnull .B Keyboardctl
38 cfa37a7b 2004-04-10 devnull structure:
41 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Channel 'u +\w'consfd; 'u
42 cfa37a7b 2004-04-10 devnull typedef struct Keyboardct Keyboardctl;
43 cfa37a7b 2004-04-10 devnull struct Keyboardctl
45 cfa37a7b 2004-04-10 devnull Channel *c; /* chan(Rune[20]) */
47 cfa37a7b 2004-04-10 devnull char *file;
48 cfa37a7b 2004-04-10 devnull int consfd; /* to cons file */
49 cfa37a7b 2004-04-10 devnull int ctlfd; /* to ctl file */
50 cfa37a7b 2004-04-10 devnull int pid; /* of slave proc */
54 cfa37a7b 2004-04-10 devnull The argument to
55 cfa37a7b 2004-04-10 devnull .I initkeyboard
56 058b0118 2005-01-03 devnull is ignored
57 058b0118 2005-01-03 devnull (on Plan 9, it is the name of the keyboard device).
60 cfa37a7b 2004-04-10 devnull .B Keyboardctl
61 cfa37a7b 2004-04-10 devnull is set up a
62 cfa37a7b 2004-04-10 devnull message containing a
64 cfa37a7b 2004-04-10 devnull will be sent on the
65 cfa37a7b 2004-04-10 devnull .B Channel
66 cfa37a7b 2004-04-10 devnull .B Keyboardctl.c
67 cfa37a7b 2004-04-10 devnull to report each character read from the device.
69 cfa37a7b 2004-04-10 devnull .I Ctlkeyboard
70 058b0118 2005-01-03 devnull is used to set the state of the interface, typically to turn raw mode on and off.
72 058b0118 2005-01-03 devnull .\" .IR cons (3)).
73 cfa37a7b 2004-04-10 devnull It writes the string
75 cfa37a7b 2004-04-10 devnull to the control file associated with the device, which is assumed to be the regular device file name
76 cfa37a7b 2004-04-10 devnull with the string
78 cfa37a7b 2004-04-10 devnull appended.
80 cfa37a7b 2004-04-10 devnull .I Closekeyboard
81 cfa37a7b 2004-04-10 devnull closes the file descriptors associated with the keyboard, kills the slave processes,
82 cfa37a7b 2004-04-10 devnull and frees the
83 cfa37a7b 2004-04-10 devnull .B Keyboardctl
84 cfa37a7b 2004-04-10 devnull structure.
86 cfa37a7b 2004-04-10 devnull .SH SOURCE
87 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/libdraw
88 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
89 bf8a59fa 2004-04-11 devnull .IR graphics (3),
90 bf8a59fa 2004-04-11 devnull .IR draw (3),
91 bf8a59fa 2004-04-11 devnull .IR event (3),
92 bf8a59fa 2004-04-11 devnull .IR thread (3).
94 cfa37a7b 2004-04-10 devnull Because the interface delivers complete runes,
95 cfa37a7b 2004-04-10 devnull there is no way to report lesser actions such as
96 cfa37a7b 2004-04-10 devnull shift keys or even individual bytes.