Blame


1 cfa37a7b 2004-04-10 devnull .TH KEYBOARD 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull initkeyboard, ctlkeyboard, closekeyboard \- keyboard control
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .nf
6 cfa37a7b 2004-04-10 devnull .B
7 cfa37a7b 2004-04-10 devnull #include <u.h>
8 cfa37a7b 2004-04-10 devnull .B
9 cfa37a7b 2004-04-10 devnull #include <libc.h>
10 cfa37a7b 2004-04-10 devnull .B
11 cfa37a7b 2004-04-10 devnull #include <thread.h>
12 cfa37a7b 2004-04-10 devnull .B
13 cfa37a7b 2004-04-10 devnull #include <keyboard.h>
14 cfa37a7b 2004-04-10 devnull .PP
15 cfa37a7b 2004-04-10 devnull .B
16 cfa37a7b 2004-04-10 devnull Keyboardctl *initkeyboard(char *file)
17 cfa37a7b 2004-04-10 devnull .PP
18 cfa37a7b 2004-04-10 devnull .B
19 cfa37a7b 2004-04-10 devnull int ctlkeyboard(Keyboardctl *kc, char *msg)
20 cfa37a7b 2004-04-10 devnull .PP
21 cfa37a7b 2004-04-10 devnull .B
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 d32deab1 2020-08-16 rsc .MR 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
30 cfa37a7b 2004-04-10 devnull (see
31 d32deab1 2020-08-16 rsc .MR thread (3) );
32 cfa37a7b 2004-04-10 devnull programs that wish a more event-driven, single-threaded approach should use
33 d32deab1 2020-08-16 rsc .MR event (3) .
34 cfa37a7b 2004-04-10 devnull .PP
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:
39 cfa37a7b 2004-04-10 devnull .IP
40 cfa37a7b 2004-04-10 devnull .EX
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
44 cfa37a7b 2004-04-10 devnull {
45 cfa37a7b 2004-04-10 devnull Channel *c; /* chan(Rune[20]) */
46 cfa37a7b 2004-04-10 devnull
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 */
51 cfa37a7b 2004-04-10 devnull };
52 cfa37a7b 2004-04-10 devnull .EE
53 cfa37a7b 2004-04-10 devnull .PP
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).
58 cfa37a7b 2004-04-10 devnull .PP
59 cfa37a7b 2004-04-10 devnull Once the
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
63 cfa37a7b 2004-04-10 devnull .BR Rune
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.
68 cfa37a7b 2004-04-10 devnull .PP
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.
71 058b0118 2005-01-03 devnull .\" (see
72 058b0118 2005-01-03 devnull .\" .IR cons (3)).
73 cfa37a7b 2004-04-10 devnull It writes the string
74 cfa37a7b 2004-04-10 devnull .I msg
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
77 cfa37a7b 2004-04-10 devnull .B ctl
78 cfa37a7b 2004-04-10 devnull appended.
79 cfa37a7b 2004-04-10 devnull .PP
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.
85 cfa37a7b 2004-04-10 devnull .PP
86 cfa37a7b 2004-04-10 devnull .SH SOURCE
87 c3674de4 2005-01-11 devnull .B \*9/src/libdraw
88 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
89 d32deab1 2020-08-16 rsc .MR graphics (3) ,
90 d32deab1 2020-08-16 rsc .MR draw (3) ,
91 d32deab1 2020-08-16 rsc .MR event (3) ,
92 d32deab1 2020-08-16 rsc .MR thread (3) .
93 cfa37a7b 2004-04-10 devnull .SH BUGS
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.