1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3  <head>
4    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
5    <title>File Index</title>
6    <link href="doxygen.css" rel="stylesheet" type="text/css">
7  </head>
8  <body>
9<!-- Generated by Doxygen 1.7.4 -->
10  <div id="navrow1" class="tabs">
11    <ul class="tablist">
12      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
13      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
14      <li class="current"><a href="files.html"><span>Files</span></a></li>
15    </ul>
16  </div>
17  <div id="navrow2" class="tabs2">
18    <ul class="tablist">
19      <li><a href="files.html"><span>File&#160;List</span></a></li>
20      <li><a href="globals.html"><span>Globals</span></a></li>
21    </ul>
22  </div>
23</div>
24<div id="side-nav" class="ui-resizable side-nav-resizable">
25  <div id="nav-tree">
26    <div id="nav-tree-contents">
27    </div>
28  </div>
29  <div id="splitbar" style="-moz-user-select:none;" 
30       class="ui-resizable-handle">
31  </div>
32</div>
33<script type="text/javascript">
34  initNavTree('usb-keyboard_8c.html','');
35</script>
36<div id="doc-content">
37<div class="header">
38  <div class="summary">
39<a href="#define-members">Defines</a> &#124;
40<a href="#func-members">Functions</a> &#124;
41<a href="#var-members">Variables</a>  </div>
42  <div class="headertitle">
43<div class="title">usb-keyboard.c File Reference</div>  </div>
44</div>
45<div class="contents">
46<div class="textblock"><code>#include &quot;atKeynames.h&quot;</code><br/>
47<code>#include &quot;<a class="el" href="usb-private_8h_source.html">usb-private.h</a>&quot;</code><br/>
48<code>#include &quot;<a class="el" href="usb-keyboard_8h_source.html">usb-keyboard.h</a>&quot;</code><br/>
49<code>#include &lt;xkbsrv.h&gt;</code><br/>
50</div><table class="memberdecls">
51<tr><td colspan="2"><h2><a name="define-members"></a>
52Defines</h2></td></tr>
53<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a6a3bdd45bcb120470819f4ef1ffabc57">USB_KEYBOARD_DEBUG</a>&#160;&#160;&#160;0</td></tr>
54<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a></td></tr>
55<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a837722a322e811d5e42242655f277b87">LOG0</a>(f)&#160;&#160;&#160;dmxLog(dmxDebug,f)</td></tr>
56<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#aab4b3434c36117a2ecdddec40716d97a">LOG1</a>(f, a)&#160;&#160;&#160;dmxLog(dmxDebug,f,a)</td></tr>
57<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a16da5d597d9bfb9e569a9bfb6996382c">LOG2</a>(f, a, b)&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b)</td></tr>
58<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a8247f0bca25789d2ac27674eb26e223f">LOG3</a>(f, a, b, c)&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b,c)</td></tr>
59<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a6bce6020b913db8afe5d94bc63d1b355">FATAL0</a>(f)&#160;&#160;&#160;dmxLog(dmxFatal,f)</td></tr>
60<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a11bcea7c6bc7dbe400a3855f5b8676ce">FATAL1</a>(f, a)&#160;&#160;&#160;dmxLog(dmxFatal,f,a)</td></tr>
61<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a7952c9e9fe9c75be4964fc53a4299183">FATAL2</a>(f, a, b)&#160;&#160;&#160;dmxLog(dmxFatal,f,a,b)</td></tr>
62<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a11a17082bee3b1b8217ce8a12adcf814">MOTIONPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a1279820425966adabf5c77357e4a289c">dmxMotionProcPtr</a></td></tr>
63<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a017080ce5e42667a6582cf858e7185cd">ENQUEUEPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#adbd955b9ddbc5ffe38ff65e3f068f205">dmxEnqueueProcPtr</a></td></tr>
64<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#aa35a985e998ad5e2187e13434dca118a">CHECKPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a838cb45fd92d5cf506e4179b601f7dbc">dmxCheckSpecialProcPtr</a></td></tr>
65<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a52220397ecea855b3a99746e451426e1">BLOCK</a>&#160;&#160;&#160;<a class="el" href="dmxinput_8h.html#a3a7195ab3516c5354bac4ca80b2eedb7">DMXBlockType</a></td></tr>
66<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a6238ada986dd7e452a89773c2252a96d">GLYPHS_PER_KEY</a>&#160;&#160;&#160;4</td></tr>
67<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a6dbb3fc1c4a78ddba8904d186c8b2784">NUM_KEYCODES</a>&#160;&#160;&#160;248</td></tr>
68<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a4204c7bd1b89b76ee0bd11d53741d4e6">MIN_KEYCODE</a>&#160;&#160;&#160;8</td></tr>
69<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#ac769af5d0ea9b1ab3a1cd61572f8f302">MAX_KEYCODE</a>&#160;&#160;&#160;(NUM_KEYCODES + MIN_KEYCODE - 1)</td></tr>
70<tr><td colspan="2"><h2><a name="func-members"></a>
71Functions</h2></td></tr>
72<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#ac5b3c28b56eee8c08253f2c93247c2fb">kbdUSBKeyDown</a> (<a class="el" href="struct__myPrivate.html">myPrivate</a> *priv, int keyCode)</td></tr>
73<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a31da2502826ab88638635abb2b719cae">kbdUSBKeyState</a> (<a class="el" href="struct__myPrivate.html">myPrivate</a> *priv, int type, int keyCode)</td></tr>
74<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a0e9cdd2a76b14cad8a054f2e6e1dbc08">kbdUSBCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
75<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a294cdaa0f31f5f463562c72107b569f2">kbdUSBInit</a> (DevicePtr pDev)</td></tr>
76<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert</a> (DevicePtr pDev, unsigned int scanCode, int value, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
77<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a75d61db123cbd10084ecdee9f18a30bf">kbdUSBRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
78<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#ab1326e68df2758918fd0e9aa06387424">kbdUSBOn</a> (DevicePtr pDev)</td></tr>
79<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap</a> (DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)</td></tr>
80<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a2513592fe5b9c9f0cafcb299c6531d50">kbdUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
81<tr><td colspan="2"><h2><a name="var-members"></a>
82Variables</h2></td></tr>
83<tr><td class="memItemLeft" align="right" valign="top">static KeySym&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-keyboard_8c.html#a2187a19657fb0b38c67dbafc7dd74c4d">map</a> [NUM_KEYCODES *GLYPHS_PER_KEY]</td></tr>
84</table>
85<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
86<div class="textblock"><p>This code implements a low-level device driver for a USB keyboard under Linux. The keymap description is derived from code by Thomas Roell, Orest Zborowski. </p>
87</div><hr/><h2>Define Documentation</h2>
88<a class="anchor" id="a52220397ecea855b3a99746e451426e1"></a><!-- doxytag: member="usb&#45;keyboard.c::BLOCK" ref="a52220397ecea855b3a99746e451426e1" args="" -->
89<div class="memitem">
90<div class="memproto">
91      <table class="memname">
92        <tr>
93          <td class="memname">#define BLOCK&#160;&#160;&#160;<a class="el" href="dmxinput_8h.html#a3a7195ab3516c5354bac4ca80b2eedb7">DMXBlockType</a></td>
94        </tr>
95      </table>
96</div>
97<div class="memdoc">
98
99</div>
100</div>
101<a class="anchor" id="aa35a985e998ad5e2187e13434dca118a"></a><!-- doxytag: member="usb&#45;keyboard.c::CHECKPROC" ref="aa35a985e998ad5e2187e13434dca118a" args="" -->
102<div class="memitem">
103<div class="memproto">
104      <table class="memname">
105        <tr>
106          <td class="memname">#define CHECKPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a838cb45fd92d5cf506e4179b601f7dbc">dmxCheckSpecialProcPtr</a></td>
107        </tr>
108      </table>
109</div>
110<div class="memdoc">
111
112</div>
113</div>
114<a class="anchor" id="a017080ce5e42667a6582cf858e7185cd"></a><!-- doxytag: member="usb&#45;keyboard.c::ENQUEUEPROC" ref="a017080ce5e42667a6582cf858e7185cd" args="" -->
115<div class="memitem">
116<div class="memproto">
117      <table class="memname">
118        <tr>
119          <td class="memname">#define ENQUEUEPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#adbd955b9ddbc5ffe38ff65e3f068f205">dmxEnqueueProcPtr</a></td>
120        </tr>
121      </table>
122</div>
123<div class="memdoc">
124
125</div>
126</div>
127<a class="anchor" id="a6bce6020b913db8afe5d94bc63d1b355"></a><!-- doxytag: member="usb&#45;keyboard.c::FATAL0" ref="a6bce6020b913db8afe5d94bc63d1b355" args="(f)" -->
128<div class="memitem">
129<div class="memproto">
130      <table class="memname">
131        <tr>
132          <td class="memname">#define FATAL0</td>
133          <td>(</td>
134          <td class="paramtype">&#160;</td>
135          <td class="paramname">f</td><td>)</td>
136          <td>&#160;&#160;&#160;dmxLog(dmxFatal,f)</td>
137        </tr>
138      </table>
139</div>
140<div class="memdoc">
141
142</div>
143</div>
144<a class="anchor" id="a11bcea7c6bc7dbe400a3855f5b8676ce"></a><!-- doxytag: member="usb&#45;keyboard.c::FATAL1" ref="a11bcea7c6bc7dbe400a3855f5b8676ce" args="(f, a)" -->
145<div class="memitem">
146<div class="memproto">
147      <table class="memname">
148        <tr>
149          <td class="memname">#define FATAL1</td>
150          <td>(</td>
151          <td class="paramtype">&#160;</td>
152          <td class="paramname">f, </td>
153        </tr>
154        <tr>
155          <td class="paramkey"></td>
156          <td></td>
157          <td class="paramtype">&#160;</td>
158          <td class="paramname">a&#160;</td>
159        </tr>
160        <tr>
161          <td></td>
162          <td>)</td>
163          <td></td><td>&#160;&#160;&#160;dmxLog(dmxFatal,f,a)</td>
164        </tr>
165      </table>
166</div>
167<div class="memdoc">
168
169</div>
170</div>
171<a class="anchor" id="a7952c9e9fe9c75be4964fc53a4299183"></a><!-- doxytag: member="usb&#45;keyboard.c::FATAL2" ref="a7952c9e9fe9c75be4964fc53a4299183" args="(f, a, b)" -->
172<div class="memitem">
173<div class="memproto">
174      <table class="memname">
175        <tr>
176          <td class="memname">#define FATAL2</td>
177          <td>(</td>
178          <td class="paramtype">&#160;</td>
179          <td class="paramname">f, </td>
180        </tr>
181        <tr>
182          <td class="paramkey"></td>
183          <td></td>
184          <td class="paramtype">&#160;</td>
185          <td class="paramname">a, </td>
186        </tr>
187        <tr>
188          <td class="paramkey"></td>
189          <td></td>
190          <td class="paramtype">&#160;</td>
191          <td class="paramname">b&#160;</td>
192        </tr>
193        <tr>
194          <td></td>
195          <td>)</td>
196          <td></td><td>&#160;&#160;&#160;dmxLog(dmxFatal,f,a,b)</td>
197        </tr>
198      </table>
199</div>
200<div class="memdoc">
201
202</div>
203</div>
204<a class="anchor" id="aacf069d346230dd96812d5395728eef2"></a><!-- doxytag: member="usb&#45;keyboard.c::GETPRIV" ref="aacf069d346230dd96812d5395728eef2" args="" -->
205<div class="memitem">
206<div class="memproto">
207      <table class="memname">
208        <tr>
209          <td class="memname">#define GETPRIV</td>
210        </tr>
211      </table>
212</div>
213<div class="memdoc">
214<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="struct__myPrivate.html">myPrivate</a> *priv                            \
215                      = ((<a class="code" href="dmxinput_8h.html#adb148db00fe0adf1938b815b9b934d26">DMXLocalInputInfoPtr</a>)(pDev-&gt;devicePrivate))-&gt;private
216</pre></div>
217<p>Referenced by <a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert()</a>, <a class="el" href="usb-keyboard_8h.html#a0e9cdd2a76b14cad8a054f2e6e1dbc08">kbdUSBCtrl()</a>, <a class="el" href="usb-keyboard_8h.html#ab1326e68df2758918fd0e9aa06387424">kbdUSBOn()</a>, and <a class="el" href="usb-keyboard_8c.html#a75d61db123cbd10084ecdee9f18a30bf">kbdUSBRead()</a>.</p>
218
219</div>
220</div>
221<a class="anchor" id="a6238ada986dd7e452a89773c2252a96d"></a><!-- doxytag: member="usb&#45;keyboard.c::GLYPHS_PER_KEY" ref="a6238ada986dd7e452a89773c2252a96d" args="" -->
222<div class="memitem">
223<div class="memproto">
224      <table class="memname">
225        <tr>
226          <td class="memname">#define GLYPHS_PER_KEY&#160;&#160;&#160;4</td>
227        </tr>
228      </table>
229</div>
230<div class="memdoc">
231
232<p>Referenced by <a class="el" href="lnx-keyboard_8c.html#ad3e8695c18469949e1ed00f7cd8055a5">kbdLinuxGetMap()</a>, <a class="el" href="lnx-keyboard_8c.html#acc3cbed3f7e836f032b2e131baeb4800">kbdLinuxReadKernelMapping()</a>, and <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>.</p>
233
234</div>
235</div>
236<a class="anchor" id="a837722a322e811d5e42242655f277b87"></a><!-- doxytag: member="usb&#45;keyboard.c::LOG0" ref="a837722a322e811d5e42242655f277b87" args="(f)" -->
237<div class="memitem">
238<div class="memproto">
239      <table class="memname">
240        <tr>
241          <td class="memname">#define LOG0</td>
242          <td>(</td>
243          <td class="paramtype">&#160;</td>
244          <td class="paramname">f</td><td>)</td>
245          <td>&#160;&#160;&#160;dmxLog(dmxDebug,f)</td>
246        </tr>
247      </table>
248</div>
249<div class="memdoc">
250
251</div>
252</div>
253<a class="anchor" id="aab4b3434c36117a2ecdddec40716d97a"></a><!-- doxytag: member="usb&#45;keyboard.c::LOG1" ref="aab4b3434c36117a2ecdddec40716d97a" args="(f, a)" -->
254<div class="memitem">
255<div class="memproto">
256      <table class="memname">
257        <tr>
258          <td class="memname">#define LOG1</td>
259          <td>(</td>
260          <td class="paramtype">&#160;</td>
261          <td class="paramname">f, </td>
262        </tr>
263        <tr>
264          <td class="paramkey"></td>
265          <td></td>
266          <td class="paramtype">&#160;</td>
267          <td class="paramname">a&#160;</td>
268        </tr>
269        <tr>
270          <td></td>
271          <td>)</td>
272          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a)</td>
273        </tr>
274      </table>
275</div>
276<div class="memdoc">
277
278</div>
279</div>
280<a class="anchor" id="a16da5d597d9bfb9e569a9bfb6996382c"></a><!-- doxytag: member="usb&#45;keyboard.c::LOG2" ref="a16da5d597d9bfb9e569a9bfb6996382c" args="(f, a, b)" -->
281<div class="memitem">
282<div class="memproto">
283      <table class="memname">
284        <tr>
285          <td class="memname">#define LOG2</td>
286          <td>(</td>
287          <td class="paramtype">&#160;</td>
288          <td class="paramname">f, </td>
289        </tr>
290        <tr>
291          <td class="paramkey"></td>
292          <td></td>
293          <td class="paramtype">&#160;</td>
294          <td class="paramname">a, </td>
295        </tr>
296        <tr>
297          <td class="paramkey"></td>
298          <td></td>
299          <td class="paramtype">&#160;</td>
300          <td class="paramname">b&#160;</td>
301        </tr>
302        <tr>
303          <td></td>
304          <td>)</td>
305          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b)</td>
306        </tr>
307      </table>
308</div>
309<div class="memdoc">
310
311</div>
312</div>
313<a class="anchor" id="a8247f0bca25789d2ac27674eb26e223f"></a><!-- doxytag: member="usb&#45;keyboard.c::LOG3" ref="a8247f0bca25789d2ac27674eb26e223f" args="(f, a, b, c)" -->
314<div class="memitem">
315<div class="memproto">
316      <table class="memname">
317        <tr>
318          <td class="memname">#define LOG3</td>
319          <td>(</td>
320          <td class="paramtype">&#160;</td>
321          <td class="paramname">f, </td>
322        </tr>
323        <tr>
324          <td class="paramkey"></td>
325          <td></td>
326          <td class="paramtype">&#160;</td>
327          <td class="paramname">a, </td>
328        </tr>
329        <tr>
330          <td class="paramkey"></td>
331          <td></td>
332          <td class="paramtype">&#160;</td>
333          <td class="paramname">b, </td>
334        </tr>
335        <tr>
336          <td class="paramkey"></td>
337          <td></td>
338          <td class="paramtype">&#160;</td>
339          <td class="paramname">c&#160;</td>
340        </tr>
341        <tr>
342          <td></td>
343          <td>)</td>
344          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b,c)</td>
345        </tr>
346      </table>
347</div>
348<div class="memdoc">
349
350<p>Referenced by <a class="el" href="usb-keyboard_8c.html#a75d61db123cbd10084ecdee9f18a30bf">kbdUSBRead()</a>.</p>
351
352</div>
353</div>
354<a class="anchor" id="ac769af5d0ea9b1ab3a1cd61572f8f302"></a><!-- doxytag: member="usb&#45;keyboard.c::MAX_KEYCODE" ref="ac769af5d0ea9b1ab3a1cd61572f8f302" args="" -->
355<div class="memitem">
356<div class="memproto">
357      <table class="memname">
358        <tr>
359          <td class="memname">#define MAX_KEYCODE&#160;&#160;&#160;(NUM_KEYCODES + MIN_KEYCODE - 1)</td>
360        </tr>
361      </table>
362</div>
363<div class="memdoc">
364
365<p>Referenced by <a class="el" href="lnx-keyboard_8c.html#ad3e8695c18469949e1ed00f7cd8055a5">kbdLinuxGetMap()</a>, and <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>.</p>
366
367</div>
368</div>
369<a class="anchor" id="a4204c7bd1b89b76ee0bd11d53741d4e6"></a><!-- doxytag: member="usb&#45;keyboard.c::MIN_KEYCODE" ref="a4204c7bd1b89b76ee0bd11d53741d4e6" args="" -->
370<div class="memitem">
371<div class="memproto">
372      <table class="memname">
373        <tr>
374          <td class="memname">#define MIN_KEYCODE&#160;&#160;&#160;8</td>
375        </tr>
376      </table>
377</div>
378<div class="memdoc">
379
380<p>Referenced by <a class="el" href="lnx-keyboard_8c.html#a6338eb254610cdbf7942ad91f23c36fe">kbdLinuxConvert()</a>, <a class="el" href="lnx-keyboard_8c.html#ad3e8695c18469949e1ed00f7cd8055a5">kbdLinuxGetMap()</a>, <a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert()</a>, and <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>.</p>
381
382</div>
383</div>
384<a class="anchor" id="a11a17082bee3b1b8217ce8a12adcf814"></a><!-- doxytag: member="usb&#45;keyboard.c::MOTIONPROC" ref="a11a17082bee3b1b8217ce8a12adcf814" args="" -->
385<div class="memitem">
386<div class="memproto">
387      <table class="memname">
388        <tr>
389          <td class="memname">#define MOTIONPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a1279820425966adabf5c77357e4a289c">dmxMotionProcPtr</a></td>
390        </tr>
391      </table>
392</div>
393<div class="memdoc">
394
395</div>
396</div>
397<a class="anchor" id="a6dbb3fc1c4a78ddba8904d186c8b2784"></a><!-- doxytag: member="usb&#45;keyboard.c::NUM_KEYCODES" ref="a6dbb3fc1c4a78ddba8904d186c8b2784" args="" -->
398<div class="memitem">
399<div class="memproto">
400      <table class="memname">
401        <tr>
402          <td class="memname">#define NUM_KEYCODES&#160;&#160;&#160;248</td>
403        </tr>
404      </table>
405</div>
406<div class="memdoc">
407
408<p>Referenced by <a class="el" href="lnx-keyboard_8c.html#ad3e8695c18469949e1ed00f7cd8055a5">kbdLinuxGetMap()</a>, and <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>.</p>
409
410</div>
411</div>
412<a class="anchor" id="a6a3bdd45bcb120470819f4ef1ffabc57"></a><!-- doxytag: member="usb&#45;keyboard.c::USB_KEYBOARD_DEBUG" ref="a6a3bdd45bcb120470819f4ef1ffabc57" args="" -->
413<div class="memitem">
414<div class="memproto">
415      <table class="memname">
416        <tr>
417          <td class="memname">#define USB_KEYBOARD_DEBUG&#160;&#160;&#160;0</td>
418        </tr>
419      </table>
420</div>
421<div class="memdoc">
422
423</div>
424</div>
425<hr/><h2>Function Documentation</h2>
426<a class="anchor" id="a1bdbc94af66450a58735130ce8b994d0"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBConvert" ref="a1bdbc94af66450a58735130ce8b994d0" args="(DevicePtr pDev, unsigned int scanCode, int value, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)" -->
427<div class="memitem">
428<div class="memproto">
429      <table class="memname">
430        <tr>
431          <td class="memname">static void kbdUSBConvert </td>
432          <td>(</td>
433          <td class="paramtype">DevicePtr&#160;</td>
434          <td class="paramname"><em>pDev</em>, </td>
435        </tr>
436        <tr>
437          <td class="paramkey"></td>
438          <td></td>
439          <td class="paramtype">unsigned int&#160;</td>
440          <td class="paramname"><em>scanCode</em>, </td>
441        </tr>
442        <tr>
443          <td class="paramkey"></td>
444          <td></td>
445          <td class="paramtype">int&#160;</td>
446          <td class="paramname"><em>value</em>, </td>
447        </tr>
448        <tr>
449          <td class="paramkey"></td>
450          <td></td>
451          <td class="paramtype">ENQUEUEPROC&#160;</td>
452          <td class="paramname"><em>enqueue</em>, </td>
453        </tr>
454        <tr>
455          <td class="paramkey"></td>
456          <td></td>
457          <td class="paramtype">CHECKPROC&#160;</td>
458          <td class="paramname"><em>checkspecial</em>, </td>
459        </tr>
460        <tr>
461          <td class="paramkey"></td>
462          <td></td>
463          <td class="paramtype">BLOCK&#160;</td>
464          <td class="paramname"><em>block</em>&#160;</td>
465        </tr>
466        <tr>
467          <td></td>
468          <td>)</td>
469          <td></td><td><code> [static]</code></td>
470        </tr>
471      </table>
472</div>
473<div class="memdoc">
474
475<p>References <a class="el" href="usb-keyboard_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>, <a class="el" href="lnx-keyboard_8c.html#a508da29b3082d7901ebf5c7397bd1a88">kbdLinuxKeyDown()</a>, <a class="el" href="usb-keyboard_8c.html#ac5b3c28b56eee8c08253f2c93247c2fb">kbdUSBKeyDown()</a>, <a class="el" href="usb-keyboard_8c.html#a31da2502826ab88638635abb2b719cae">kbdUSBKeyState()</a>, and <a class="el" href="usb-keyboard_8c.html#a4204c7bd1b89b76ee0bd11d53741d4e6">MIN_KEYCODE</a>.</p>
476
477<p>Referenced by <a class="el" href="usb-keyboard_8c.html#a75d61db123cbd10084ecdee9f18a30bf">kbdUSBRead()</a>.</p>
478
479</div>
480</div>
481<a class="anchor" id="a0e9cdd2a76b14cad8a054f2e6e1dbc08"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBCtrl" ref="a0e9cdd2a76b14cad8a054f2e6e1dbc08" args="(DevicePtr pDev, KeybdCtrl *ctrl)" -->
482<div class="memitem">
483<div class="memproto">
484      <table class="memname">
485        <tr>
486          <td class="memname">void kbdUSBCtrl </td>
487          <td>(</td>
488          <td class="paramtype">DevicePtr&#160;</td>
489          <td class="paramname"><em>pDev</em>, </td>
490        </tr>
491        <tr>
492          <td class="paramkey"></td>
493          <td></td>
494          <td class="paramtype">KeybdCtrl *&#160;</td>
495          <td class="paramname"><em>ctrl</em>&#160;</td>
496        </tr>
497        <tr>
498          <td></td>
499          <td>)</td>
500          <td></td><td></td>
501        </tr>
502      </table>
503</div>
504<div class="memdoc">
505<p>Set the LEDs. </p>
506
507<p>References <a class="el" href="usb-keyboard_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>.</p>
508
509</div>
510</div>
511<a class="anchor" id="a2513592fe5b9c9f0cafcb299c6531d50"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBGetInfo" ref="a2513592fe5b9c9f0cafcb299c6531d50" args="(DevicePtr pDev, DMXLocalInitInfoPtr info)" -->
512<div class="memitem">
513<div class="memproto">
514      <table class="memname">
515        <tr>
516          <td class="memname">void kbdUSBGetInfo </td>
517          <td>(</td>
518          <td class="paramtype">DevicePtr&#160;</td>
519          <td class="paramname"><em>pDev</em>, </td>
520        </tr>
521        <tr>
522          <td class="paramkey"></td>
523          <td></td>
524          <td class="paramtype"><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&#160;</td>
525          <td class="paramname"><em>info</em>&#160;</td>
526        </tr>
527        <tr>
528          <td></td>
529          <td>)</td>
530          <td></td><td></td>
531        </tr>
532      </table>
533</div>
534<div class="memdoc">
535<p>Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </p>
536
537<p>References <a class="el" href="struct__DMXLocalInitInfo.html#a24b09c34e0cf80ec33f093e908206be4">_DMXLocalInitInfo::focusClass</a>, <a class="el" href="struct__DMXLocalInitInfo.html#abb7446114b5bdb0baf52806c9a1d249c">_DMXLocalInitInfo::force</a>, <a class="el" href="struct__DMXLocalInitInfo.html#af19caac0e20a9106b73714c9c7991ce5">_DMXLocalInitInfo::kbdFeedbackClass</a>, <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>, <a class="el" href="struct__DMXLocalInitInfo.html#a214969f0843dcb70d8f7577f58bafa48">_DMXLocalInitInfo::keyboard</a>, <a class="el" href="struct__DMXLocalInitInfo.html#a06626a99542714bbd032e9e12a8c6b55">_DMXLocalInitInfo::keyClass</a>, <a class="el" href="struct__DMXLocalInitInfo.html#a02861e7e9c24381a229567d36e7a68b7">_DMXLocalInitInfo::keySyms</a>, <a class="el" href="struct__DMXLocalInitInfo.html#a2e345080abf875ce6f85e63ed631cbcd">_DMXLocalInitInfo::modMap</a>, and <a class="el" href="struct__DMXLocalInitInfo.html#a92de3dbbb88844f90aa431f93e16ee05">_DMXLocalInitInfo::names</a>.</p>
538
539</div>
540</div>
541<a class="anchor" id="accd75bb2b1ea015ca086fb41c472546b"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBGetMap" ref="accd75bb2b1ea015ca086fb41c472546b" args="(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)" -->
542<div class="memitem">
543<div class="memproto">
544      <table class="memname">
545        <tr>
546          <td class="memname">static void kbdUSBGetMap </td>
547          <td>(</td>
548          <td class="paramtype">DevicePtr&#160;</td>
549          <td class="paramname"><em>pDev</em>, </td>
550        </tr>
551        <tr>
552          <td class="paramkey"></td>
553          <td></td>
554          <td class="paramtype">KeySymsPtr&#160;</td>
555          <td class="paramname"><em>pKeySyms</em>, </td>
556        </tr>
557        <tr>
558          <td class="paramkey"></td>
559          <td></td>
560          <td class="paramtype">CARD8 *&#160;</td>
561          <td class="paramname"><em>pModMap</em>&#160;</td>
562        </tr>
563        <tr>
564          <td></td>
565          <td>)</td>
566          <td></td><td><code> [static]</code></td>
567        </tr>
568      </table>
569</div>
570<div class="memdoc">
571
572<p>References <a class="el" href="usb-keyboard_8c.html#a6238ada986dd7e452a89773c2252a96d">GLYPHS_PER_KEY</a>, <a class="el" href="usb-keyboard_8c.html#a2187a19657fb0b38c67dbafc7dd74c4d">map</a>, <a class="el" href="usb-keyboard_8c.html#ac769af5d0ea9b1ab3a1cd61572f8f302">MAX_KEYCODE</a>, <a class="el" href="usb-keyboard_8c.html#a4204c7bd1b89b76ee0bd11d53741d4e6">MIN_KEYCODE</a>, and <a class="el" href="usb-keyboard_8c.html#a6dbb3fc1c4a78ddba8904d186c8b2784">NUM_KEYCODES</a>.</p>
573
574<p>Referenced by <a class="el" href="usb-keyboard_8h.html#a2513592fe5b9c9f0cafcb299c6531d50">kbdUSBGetInfo()</a>.</p>
575
576</div>
577</div>
578<a class="anchor" id="a294cdaa0f31f5f463562c72107b569f2"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBInit" ref="a294cdaa0f31f5f463562c72107b569f2" args="(DevicePtr pDev)" -->
579<div class="memitem">
580<div class="memproto">
581      <table class="memname">
582        <tr>
583          <td class="memname">void kbdUSBInit </td>
584          <td>(</td>
585          <td class="paramtype">DevicePtr&#160;</td>
586          <td class="paramname"><em>pDev</em></td><td>)</td>
587          <td></td>
588        </tr>
589      </table>
590</div>
591<div class="memdoc">
592<p>Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit</a>. </p>
593
594<p>References <a class="el" href="usb-common_8c.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>, and <a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0ac0ee79f0c48b61dfd08fff502a2752a3">usbKeyboard</a>.</p>
595
596<p>Referenced by <a class="el" href="usb-keyboard_8h.html#ab1326e68df2758918fd0e9aa06387424">kbdUSBOn()</a>.</p>
597
598</div>
599</div>
600<a class="anchor" id="ac5b3c28b56eee8c08253f2c93247c2fb"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBKeyDown" ref="ac5b3c28b56eee8c08253f2c93247c2fb" args="(myPrivate *priv, int keyCode)" -->
601<div class="memitem">
602<div class="memproto">
603      <table class="memname">
604        <tr>
605          <td class="memname">static int kbdUSBKeyDown </td>
606          <td>(</td>
607          <td class="paramtype"><a class="el" href="struct__myPrivate.html">myPrivate</a> *&#160;</td>
608          <td class="paramname"><em>priv</em>, </td>
609        </tr>
610        <tr>
611          <td class="paramkey"></td>
612          <td></td>
613          <td class="paramtype">int&#160;</td>
614          <td class="paramname"><em>keyCode</em>&#160;</td>
615        </tr>
616        <tr>
617          <td></td>
618          <td>)</td>
619          <td></td><td><code> [static]</code></td>
620        </tr>
621      </table>
622</div>
623<div class="memdoc">
624
625<p>References <a class="el" href="struct__myPrivate.html#a35c7b19223e75cef1eebc0467fb2514d">_myPrivate::kbdState</a>, and <a class="el" href="lnx-keyboard_8c.html#a4551482d17e969e4de70a669be3afc74">NUM_STATE_ENTRIES</a>.</p>
626
627<p>Referenced by <a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert()</a>.</p>
628
629</div>
630</div>
631<a class="anchor" id="a31da2502826ab88638635abb2b719cae"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBKeyState" ref="a31da2502826ab88638635abb2b719cae" args="(myPrivate *priv, int type, int keyCode)" -->
632<div class="memitem">
633<div class="memproto">
634      <table class="memname">
635        <tr>
636          <td class="memname">static void kbdUSBKeyState </td>
637          <td>(</td>
638          <td class="paramtype"><a class="el" href="struct__myPrivate.html">myPrivate</a> *&#160;</td>
639          <td class="paramname"><em>priv</em>, </td>
640        </tr>
641        <tr>
642          <td class="paramkey"></td>
643          <td></td>
644          <td class="paramtype">int&#160;</td>
645          <td class="paramname"><em>type</em>, </td>
646        </tr>
647        <tr>
648          <td class="paramkey"></td>
649          <td></td>
650          <td class="paramtype">int&#160;</td>
651          <td class="paramname"><em>keyCode</em>&#160;</td>
652        </tr>
653        <tr>
654          <td></td>
655          <td>)</td>
656          <td></td><td><code> [static]</code></td>
657        </tr>
658      </table>
659</div>
660<div class="memdoc">
661
662<p>References <a class="el" href="struct__myPrivate.html#a35c7b19223e75cef1eebc0467fb2514d">_myPrivate::kbdState</a>, and <a class="el" href="lnx-keyboard_8c.html#a4551482d17e969e4de70a669be3afc74">NUM_STATE_ENTRIES</a>.</p>
663
664<p>Referenced by <a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert()</a>.</p>
665
666</div>
667</div>
668<a class="anchor" id="ab1326e68df2758918fd0e9aa06387424"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBOn" ref="ab1326e68df2758918fd0e9aa06387424" args="(DevicePtr pDev)" -->
669<div class="memitem">
670<div class="memproto">
671      <table class="memname">
672        <tr>
673          <td class="memname">int kbdUSBOn </td>
674          <td>(</td>
675          <td class="paramtype">DevicePtr&#160;</td>
676          <td class="paramname"><em>pDev</em></td><td>)</td>
677          <td></td>
678        </tr>
679      </table>
680</div>
681<div class="memdoc">
682<p>Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </p>
683
684<p>References <a class="el" href="usb-keyboard_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>, and <a class="el" href="usb-keyboard_8c.html#a294cdaa0f31f5f463562c72107b569f2">kbdUSBInit()</a>.</p>
685
686</div>
687</div>
688<a class="anchor" id="a75d61db123cbd10084ecdee9f18a30bf"></a><!-- doxytag: member="usb&#45;keyboard.c::kbdUSBRead" ref="a75d61db123cbd10084ecdee9f18a30bf" args="(DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)" -->
689<div class="memitem">
690<div class="memproto">
691      <table class="memname">
692        <tr>
693          <td class="memname">void kbdUSBRead </td>
694          <td>(</td>
695          <td class="paramtype">DevicePtr&#160;</td>
696          <td class="paramname"><em>pDev</em>, </td>
697        </tr>
698        <tr>
699          <td class="paramkey"></td>
700          <td></td>
701          <td class="paramtype">MOTIONPROC&#160;</td>
702          <td class="paramname"><em>motion</em>, </td>
703        </tr>
704        <tr>
705          <td class="paramkey"></td>
706          <td></td>
707          <td class="paramtype">ENQUEUEPROC&#160;</td>
708          <td class="paramname"><em>enqueue</em>, </td>
709        </tr>
710        <tr>
711          <td class="paramkey"></td>
712          <td></td>
713          <td class="paramtype">CHECKPROC&#160;</td>
714          <td class="paramname"><em>checkspecial</em>, </td>
715        </tr>
716        <tr>
717          <td class="paramkey"></td>
718          <td></td>
719          <td class="paramtype">BLOCK&#160;</td>
720          <td class="paramname"><em>block</em>&#160;</td>
721        </tr>
722        <tr>
723          <td></td>
724          <td>)</td>
725          <td></td><td></td>
726        </tr>
727      </table>
728</div>
729<div class="memdoc">
730<p>Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, check for special keys with the <em>checkspecial</em> function and enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function. </p>
731
732<p>References <a class="el" href="usb-keyboard_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>, <a class="el" href="usb-keyboard_8c.html#a1bdbc94af66450a58735130ce8b994d0">kbdUSBConvert()</a>, and <a class="el" href="usb-keyboard_8c.html#a8247f0bca25789d2ac27674eb26e223f">LOG3</a>.</p>
733
734</div>
735</div>
736<hr/><h2>Variable Documentation</h2>
737<a class="anchor" id="a2187a19657fb0b38c67dbafc7dd74c4d"></a><!-- doxytag: member="usb&#45;keyboard.c::map" ref="a2187a19657fb0b38c67dbafc7dd74c4d" args="[NUM_KEYCODES *GLYPHS_PER_KEY]" -->
738<div class="memitem">
739<div class="memproto">
740      <table class="memname">
741        <tr>
742          <td class="memname">KeySym <a class="el" href="usb-keyboard_8c.html#a2187a19657fb0b38c67dbafc7dd74c4d">map</a>[NUM_KEYCODES *GLYPHS_PER_KEY]<code> [static]</code></td>
743        </tr>
744      </table>
745</div>
746<div class="memdoc">
747
748<p>Referenced by <a class="el" href="lnx-keyboard_8c.html#ad3e8695c18469949e1ed00f7cd8055a5">kbdLinuxGetMap()</a>, <a class="el" href="lnx-keyboard_8c.html#acc3cbed3f7e836f032b2e131baeb4800">kbdLinuxReadKernelMapping()</a>, and <a class="el" href="usb-keyboard_8c.html#accd75bb2b1ea015ca086fb41c472546b">kbdUSBGetMap()</a>.</p>
749
750</div>
751</div>
752</div>
753</div>
754  <div id="nav-path" class="navpath">
755    <ul>
756      <li class="navelem"><a class="el" href="usb-keyboard_8c.html">usb-keyboard.c</a>      </li>
757    <hr>
758    <address>
759      <small>
760        Generated June 29, 2004 for <a
761        href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
762        <a href="http://www.doxygen.org/index.html">doxygen</a>
763        1.3.4.
764      </small>
765    </addres>
766    </hr>
767  </body>
768</html>
769