\hypertarget{g__keyboard_8c}{}\doxysection{dev/usb/gadget/g\+\_\+keyboard.c File Reference}
\label{g__keyboard_8c}\index{dev/usb/gadget/g\_keyboard.c@{dev/usb/gadget/g\_keyboard.c}}
{\ttfamily \#include $<$sys/param.\+h$>$}\newline
{\ttfamily \#include $<$sys/stdint.\+h$>$}\newline
{\ttfamily \#include $<$sys/stddef.\+h$>$}\newline
{\ttfamily \#include $<$sys/queue.\+h$>$}\newline
{\ttfamily \#include $<$sys/systm.\+h$>$}\newline
{\ttfamily \#include $<$sys/kernel.\+h$>$}\newline
{\ttfamily \#include $<$sys/bus.\+h$>$}\newline
{\ttfamily \#include $<$sys/linker\+\_\+set.\+h$>$}\newline
{\ttfamily \#include $<$sys/module.\+h$>$}\newline
{\ttfamily \#include $<$sys/lock.\+h$>$}\newline
{\ttfamily \#include $<$sys/mutex.\+h$>$}\newline
{\ttfamily \#include $<$sys/condvar.\+h$>$}\newline
{\ttfamily \#include $<$sys/sysctl.\+h$>$}\newline
{\ttfamily \#include $<$sys/sx.\+h$>$}\newline
{\ttfamily \#include $<$sys/unistd.\+h$>$}\newline
{\ttfamily \#include $<$sys/callout.\+h$>$}\newline
{\ttfamily \#include $<$sys/malloc.\+h$>$}\newline
{\ttfamily \#include $<$sys/priv.\+h$>$}\newline
{\ttfamily \#include $<$dev/usb/usb.\+h$>$}\newline
{\ttfamily \#include $<$dev/usb/usbdi.\+h$>$}\newline
{\ttfamily \#include $<$dev/usb/usbdi\+\_\+util.\+h$>$}\newline
{\ttfamily \#include $<$dev/usb/usbhid.\+h$>$}\newline
{\ttfamily \#include \char`\"{}usb\+\_\+if.\+h\char`\"{}}\newline
{\ttfamily \#include $<$dev/usb/usb\+\_\+debug.\+h$>$}\newline
{\ttfamily \#include $<$dev/usb/gadget/g\+\_\+keyboard.\+h$>$}\newline
Include dependency graph for g\+\_\+keyboard.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/da6/g__keyboard_8c__incl}
\end{center}
\end{figure}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structg__keyboard__data}{g\+\_\+keyboard\+\_\+data}}
\item 
struct \mbox{\hyperlink{structg__keyboard__softc}{g\+\_\+keyboard\+\_\+softc}}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a927dd6f59caf10a2991dfb564bcbb1e1}{USB\+\_\+\+DEBUG\+\_\+\+VAR}}~g\+\_\+keyboard\+\_\+debug
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_ae210534f396fa3ce3240ea25e4e9bc79}{UPROTO\+\_\+\+BOOT\+\_\+\+KEYBOARD}}~1
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a46f29fcef2e9020de56683250c478e71}{G\+\_\+\+KEYBOARD\+\_\+\+NMOD}}~8 /$\ast$ units $\ast$/
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a37577bae420d0ae4ed8d88a4459e4e7c}{G\+\_\+\+KEYBOARD\+\_\+\+NKEYCODE}}~6 /$\ast$ units $\ast$/
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_ad0e2b6d758ed988fc1f931211d5833fd}{MOD\+\_\+\+CONTROL\+\_\+L}}~0x01
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_ab54b87452b610606baed418afca444c1}{MOD\+\_\+\+CONTROL\+\_\+R}}~0x10
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a44f584545acc93e009d53b56bb90117e}{MOD\+\_\+\+SHIFT\+\_\+L}}~0x02
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a665a4b2b1b77f16d1e3093f10446f4e5}{MOD\+\_\+\+SHIFT\+\_\+R}}~0x20
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a0715e84f6e4ddfe3c7457176008eaa3e}{MOD\+\_\+\+ALT\+\_\+L}}~0x04
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a5d28312e8ab3bb0dd39c75b7d75df9d0}{MOD\+\_\+\+ALT\+\_\+R}}~0x40
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a0f0c5fc4bfefd4040aef864be1ba2087}{MOD\+\_\+\+WIN\+\_\+L}}~0x08
\item 
\#define \mbox{\hyperlink{g__keyboard_8c_a0df0503b3b9fd36b761feb17616a6efe}{MOD\+\_\+\+WIN\+\_\+R}}~0x80
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \{ \mbox{\hyperlink{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06ca22d64fe5ae86a2fffb56a828be6ecab0}{G\+\_\+\+KEYBOARD\+\_\+\+INTR\+\_\+\+DT}}
, \mbox{\hyperlink{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06caaf1206ba1d2bc6f8eb95588ed4797570}{G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER}}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{g__keyboard_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\+\_\+\+\_\+\+FBSDID}} (\char`\"{}\$Free\+BSD\$\char`\"{})
\item 
static \mbox{\hyperlink{g__keyboard_8c_af5567c3688817bab4fb4e409b50f1cb8}{SYSCTL\+\_\+\+NODE}} (\+\_\+hw\+\_\+usb, OID\+\_\+\+AUTO, g\+\_\+keyboard, CTLFLAG\+\_\+\+RW$\vert$CTLFLAG\+\_\+\+MPSAFE, 0, \char`\"{}USB keyboard gadget\char`\"{})
\item 
\mbox{\hyperlink{g__keyboard_8c_a46095de9e433986aa2cc9d5faa9773c4}{SYSCTL\+\_\+\+INT}} (\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard, OID\+\_\+\+AUTO, mode, CTLFLAG\+\_\+\+RWTUN, \&\mbox{\hyperlink{g__keyboard_8c_a9e601e77329904b1e4f425c97d1ed4a8}{g\+\_\+keyboard\+\_\+mode}}, 0, \char`\"{}Mode selection\char`\"{})
\item 
\mbox{\hyperlink{g__keyboard_8c_a38712073f5b43c46228c12fd56b268ea}{SYSCTL\+\_\+\+INT}} (\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard, OID\+\_\+\+AUTO, key\+\_\+press\+\_\+interval, CTLFLAG\+\_\+\+RWTUN, \&\mbox{\hyperlink{g__keyboard_8c_a6bc9790992093f5999a02dd882a76813}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+interval}}, 0, \char`\"{}Key Press Interval in milliseconds\char`\"{})
\item 
\mbox{\hyperlink{g__keyboard_8c_a51988ab6c4b23667bd099636e91055f8}{SYSCTL\+\_\+\+STRING}} (\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard, OID\+\_\+\+AUTO, key\+\_\+press\+\_\+pattern, CTLFLAG\+\_\+\+RW, \mbox{\hyperlink{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}}, sizeof(\mbox{\hyperlink{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}}), \char`\"{}Key Press Patterns\char`\"{})
\item 
\mbox{\hyperlink{g__keyboard_8c_a1a63a8904d5559167619c7d2f08c623f}{DRIVER\+\_\+\+MODULE}} (g\+\_\+keyboard, uhub, \mbox{\hyperlink{g__keyboard_8c_a1a80ad3c65ef0f5fed4deb3202fc2774}{g\+\_\+keyboard\+\_\+driver}}, \mbox{\hyperlink{g__keyboard_8c_a59f4af2872ad590e759c5062813a425e}{g\+\_\+keyboard\+\_\+devclass}}, 0, 0)
\item 
\mbox{\hyperlink{g__keyboard_8c_abefe2af58e828f822bd2b75d3a0b9988}{MODULE\+\_\+\+DEPEND}} (g\+\_\+keyboard, \mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}, 1, 1, 1)
\item 
static void \mbox{\hyperlink{g__keyboard_8c_ab4c820d3612695e46daf68a78c0794ae}{g\+\_\+keyboard\+\_\+timeout}} (void $\ast$arg)
\item 
static void \mbox{\hyperlink{g__keyboard_8c_a472a2de55d895db6d76a5aa25a5a4fa9}{g\+\_\+keyboard\+\_\+timeout\+\_\+reset}} (struct \mbox{\hyperlink{structg__keyboard__softc}{g\+\_\+keyboard\+\_\+softc}} $\ast$sc)
\item 
static int \mbox{\hyperlink{g__keyboard_8c_a75b5b707c168df4f54997bbe4dbef089}{g\+\_\+keyboard\+\_\+probe}} (device\+\_\+t \textbf{ dev})
\item 
static int \mbox{\hyperlink{g__keyboard_8c_ac32a3d5032398ad96fb947c99cf1944e}{g\+\_\+keyboard\+\_\+attach}} (device\+\_\+t \textbf{ dev})
\item 
static int \mbox{\hyperlink{g__keyboard_8c_a53c0d2c7f9f9a33ecb75b73698dbadc2}{g\+\_\+keyboard\+\_\+detach}} (device\+\_\+t \textbf{ dev})
\item 
static uint8\+\_\+t \mbox{\hyperlink{g__keyboard_8c_aada7bab548a84a818d7f285b0272f550}{g\+\_\+keyboard\+\_\+get\+\_\+keycode}} (struct \mbox{\hyperlink{structg__keyboard__softc}{g\+\_\+keyboard\+\_\+softc}} $\ast$sc, int \textbf{ index})
\item 
static void \mbox{\hyperlink{g__keyboard_8c_aa5a713cf7d0f7ad8aee8716b89dcdf86}{g\+\_\+keyboard\+\_\+intr\+\_\+callback}} (struct \mbox{\hyperlink{structusb__xfer}{usb\+\_\+xfer}} $\ast$xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\+\_\+error\+\_\+t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})
\item 
static int \mbox{\hyperlink{g__keyboard_8c_acaa92bc3d0cdbd29e6ee22cdd070afc1}{g\+\_\+keyboard\+\_\+handle\+\_\+request}} (device\+\_\+t \textbf{ dev}, const void $\ast$preq, void $\ast$$\ast$\mbox{\hyperlink{usb__if_8m_a074c17a419327b41805af2dd7cb152e7}{pptr}}, uint16\+\_\+t $\ast$\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}}, uint16\+\_\+t \mbox{\hyperlink{usb__if_8m_ac681806181c80437cfab37335f62ff39}{offset}}, uint8\+\_\+t $\ast$\mbox{\hyperlink{usb__if_8m_a8a16a0091a5793ece040278427496b23}{pstate}})
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static int \mbox{\hyperlink{g__keyboard_8c_a9e601e77329904b1e4f425c97d1ed4a8}{g\+\_\+keyboard\+\_\+mode}} = 0
\item 
static int \mbox{\hyperlink{g__keyboard_8c_a6bc9790992093f5999a02dd882a76813}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+interval}} = 1000
\item 
static char \mbox{\hyperlink{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}} \mbox{[}\mbox{\hyperlink{g__keyboard_8h_aa92958b736497c1ffa0c41e13252d21b}{G\+\_\+\+KEYBOARD\+\_\+\+MAX\+\_\+\+STRLEN}}\mbox{]}
\item 
static device\+\_\+probe\+\_\+t \mbox{\hyperlink{g__keyboard_8c_ad84fe7937d91d2b733e9f063e8240e2b}{g\+\_\+keyboard\+\_\+probe}}
\item 
static device\+\_\+attach\+\_\+t \mbox{\hyperlink{g__keyboard_8c_aa02383ef017727b5e0de1d4dbbf266f4}{g\+\_\+keyboard\+\_\+attach}}
\item 
static device\+\_\+detach\+\_\+t \mbox{\hyperlink{g__keyboard_8c_a431473d67a9f43f454d6000aa797d74b}{g\+\_\+keyboard\+\_\+detach}}
\item 
static usb\+\_\+handle\+\_\+request\+\_\+t \mbox{\hyperlink{g__keyboard_8c_a482399d1ac3841acc38f2cfb4a1bd8d4}{g\+\_\+keyboard\+\_\+handle\+\_\+request}}
\item 
static \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\+\_\+callback\+\_\+t}} \mbox{\hyperlink{g__keyboard_8c_adbe52c4f6d779d05bb8ef80857fbcb7b}{g\+\_\+keyboard\+\_\+intr\+\_\+callback}}
\item 
static devclass\+\_\+t \mbox{\hyperlink{g__keyboard_8c_a59f4af2872ad590e759c5062813a425e}{g\+\_\+keyboard\+\_\+devclass}}
\item 
static device\+\_\+method\+\_\+t \mbox{\hyperlink{g__keyboard_8c_aa26a4ebcfae63912dd037ec2f956d271}{g\+\_\+keyboard\+\_\+methods}} \mbox{[}$\,$\mbox{]}
\item 
static driver\+\_\+t \mbox{\hyperlink{g__keyboard_8c_a1a80ad3c65ef0f5fed4deb3202fc2774}{g\+\_\+keyboard\+\_\+driver}}
\item 
static const struct \mbox{\hyperlink{structusb__config}{usb\+\_\+config}} \mbox{\hyperlink{g__keyboard_8c_a6f394aa39bbc94486a980798f6dbb66e}{g\+\_\+keyboard\+\_\+config}} \mbox{[}\mbox{\hyperlink{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06caaf1206ba1d2bc6f8eb95588ed4797570}{G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER}}\mbox{]}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{g__keyboard_8c_a37577bae420d0ae4ed8d88a4459e4e7c}\label{g__keyboard_8c_a37577bae420d0ae4ed8d88a4459e4e7c}} 
\index{g\_keyboard.c@{g\_keyboard.c}!G\_KEYBOARD\_NKEYCODE@{G\_KEYBOARD\_NKEYCODE}}
\index{G\_KEYBOARD\_NKEYCODE@{G\_KEYBOARD\_NKEYCODE}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{G\_KEYBOARD\_NKEYCODE}{G\_KEYBOARD\_NKEYCODE}}
{\footnotesize\ttfamily \#define G\+\_\+\+KEYBOARD\+\_\+\+NKEYCODE~6 /$\ast$ units $\ast$/}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00094}{94}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a46f29fcef2e9020de56683250c478e71}\label{g__keyboard_8c_a46f29fcef2e9020de56683250c478e71}} 
\index{g\_keyboard.c@{g\_keyboard.c}!G\_KEYBOARD\_NMOD@{G\_KEYBOARD\_NMOD}}
\index{G\_KEYBOARD\_NMOD@{G\_KEYBOARD\_NMOD}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{G\_KEYBOARD\_NMOD}{G\_KEYBOARD\_NMOD}}
{\footnotesize\ttfamily \#define G\+\_\+\+KEYBOARD\+\_\+\+NMOD~8 /$\ast$ units $\ast$/}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00093}{93}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a0715e84f6e4ddfe3c7457176008eaa3e}\label{g__keyboard_8c_a0715e84f6e4ddfe3c7457176008eaa3e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_ALT\_L@{MOD\_ALT\_L}}
\index{MOD\_ALT\_L@{MOD\_ALT\_L}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_ALT\_L}{MOD\_ALT\_L}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+ALT\+\_\+L~0x04}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00102}{102}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a5d28312e8ab3bb0dd39c75b7d75df9d0}\label{g__keyboard_8c_a5d28312e8ab3bb0dd39c75b7d75df9d0}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_ALT\_R@{MOD\_ALT\_R}}
\index{MOD\_ALT\_R@{MOD\_ALT\_R}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_ALT\_R}{MOD\_ALT\_R}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+ALT\+\_\+R~0x40}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00103}{103}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_ad0e2b6d758ed988fc1f931211d5833fd}\label{g__keyboard_8c_ad0e2b6d758ed988fc1f931211d5833fd}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_CONTROL\_L@{MOD\_CONTROL\_L}}
\index{MOD\_CONTROL\_L@{MOD\_CONTROL\_L}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_CONTROL\_L}{MOD\_CONTROL\_L}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+CONTROL\+\_\+L~0x01}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00098}{98}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_ab54b87452b610606baed418afca444c1}\label{g__keyboard_8c_ab54b87452b610606baed418afca444c1}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_CONTROL\_R@{MOD\_CONTROL\_R}}
\index{MOD\_CONTROL\_R@{MOD\_CONTROL\_R}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_CONTROL\_R}{MOD\_CONTROL\_R}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+CONTROL\+\_\+R~0x10}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00099}{99}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a44f584545acc93e009d53b56bb90117e}\label{g__keyboard_8c_a44f584545acc93e009d53b56bb90117e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_SHIFT\_L@{MOD\_SHIFT\_L}}
\index{MOD\_SHIFT\_L@{MOD\_SHIFT\_L}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_SHIFT\_L}{MOD\_SHIFT\_L}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+SHIFT\+\_\+L~0x02}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00100}{100}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a665a4b2b1b77f16d1e3093f10446f4e5}\label{g__keyboard_8c_a665a4b2b1b77f16d1e3093f10446f4e5}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_SHIFT\_R@{MOD\_SHIFT\_R}}
\index{MOD\_SHIFT\_R@{MOD\_SHIFT\_R}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_SHIFT\_R}{MOD\_SHIFT\_R}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+SHIFT\+\_\+R~0x20}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00101}{101}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a0f0c5fc4bfefd4040aef864be1ba2087}\label{g__keyboard_8c_a0f0c5fc4bfefd4040aef864be1ba2087}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_WIN\_L@{MOD\_WIN\_L}}
\index{MOD\_WIN\_L@{MOD\_WIN\_L}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_WIN\_L}{MOD\_WIN\_L}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+WIN\+\_\+L~0x08}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00104}{104}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a0df0503b3b9fd36b761feb17616a6efe}\label{g__keyboard_8c_a0df0503b3b9fd36b761feb17616a6efe}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MOD\_WIN\_R@{MOD\_WIN\_R}}
\index{MOD\_WIN\_R@{MOD\_WIN\_R}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MOD\_WIN\_R}{MOD\_WIN\_R}}
{\footnotesize\ttfamily \#define MOD\+\_\+\+WIN\+\_\+R~0x80}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00105}{105}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_ae210534f396fa3ce3240ea25e4e9bc79}\label{g__keyboard_8c_ae210534f396fa3ce3240ea25e4e9bc79}} 
\index{g\_keyboard.c@{g\_keyboard.c}!UPROTO\_BOOT\_KEYBOARD@{UPROTO\_BOOT\_KEYBOARD}}
\index{UPROTO\_BOOT\_KEYBOARD@{UPROTO\_BOOT\_KEYBOARD}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{UPROTO\_BOOT\_KEYBOARD}{UPROTO\_BOOT\_KEYBOARD}}
{\footnotesize\ttfamily \#define UPROTO\+\_\+\+BOOT\+\_\+\+KEYBOARD~1}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00091}{91}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a927dd6f59caf10a2991dfb564bcbb1e1}\label{g__keyboard_8c_a927dd6f59caf10a2991dfb564bcbb1e1}} 
\index{g\_keyboard.c@{g\_keyboard.c}!USB\_DEBUG\_VAR@{USB\_DEBUG\_VAR}}
\index{USB\_DEBUG\_VAR@{USB\_DEBUG\_VAR}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{USB\_DEBUG\_VAR}{USB\_DEBUG\_VAR}}
{\footnotesize\ttfamily \#define USB\+\_\+\+DEBUG\+\_\+\+VAR~g\+\_\+keyboard\+\_\+debug}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00059}{59}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06c}\label{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06c}} 
\doxysubsubsection{\texorpdfstring{anonymous enum}{anonymous enum}}
{\footnotesize\ttfamily anonymous enum}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{G\_KEYBOARD\_INTR\_DT@{G\_KEYBOARD\_INTR\_DT}!g\_keyboard.c@{g\_keyboard.c}}\index{g\_keyboard.c@{g\_keyboard.c}!G\_KEYBOARD\_INTR\_DT@{G\_KEYBOARD\_INTR\_DT}}}\mbox{\Hypertarget{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06ca22d64fe5ae86a2fffb56a828be6ecab0}\label{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06ca22d64fe5ae86a2fffb56a828be6ecab0}} 
G\+\_\+\+KEYBOARD\+\_\+\+INTR\+\_\+\+DT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{G\_KEYBOARD\_N\_TRANSFER@{G\_KEYBOARD\_N\_TRANSFER}!g\_keyboard.c@{g\_keyboard.c}}\index{g\_keyboard.c@{g\_keyboard.c}!G\_KEYBOARD\_N\_TRANSFER@{G\_KEYBOARD\_N\_TRANSFER}}}\mbox{\Hypertarget{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06caaf1206ba1d2bc6f8eb95588ed4797570}\label{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06caaf1206ba1d2bc6f8eb95588ed4797570}} 
G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER&\\
\hline

\end{DoxyEnumFields}


Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00110}{110}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{g__keyboard_8c_a8c3ef283470a68cd30afe9b8a72cb60f}\label{g__keyboard_8c_a8c3ef283470a68cd30afe9b8a72cb60f}} 
\index{g\_keyboard.c@{g\_keyboard.c}!\_\_FBSDID@{\_\_FBSDID}}
\index{\_\_FBSDID@{\_\_FBSDID}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{\_\_FBSDID()}{\_\_FBSDID()}}
{\footnotesize\ttfamily \+\_\+\+\_\+\+FBSDID (\begin{DoxyParamCaption}\item[{\char`\"{}\$Free\+BSD\$\char`\"{}}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{g__keyboard_8c_a1a63a8904d5559167619c7d2f08c623f}\label{g__keyboard_8c_a1a63a8904d5559167619c7d2f08c623f}} 
\index{g\_keyboard.c@{g\_keyboard.c}!DRIVER\_MODULE@{DRIVER\_MODULE}}
\index{DRIVER\_MODULE@{DRIVER\_MODULE}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{DRIVER\_MODULE()}{DRIVER\_MODULE()}}
{\footnotesize\ttfamily DRIVER\+\_\+\+MODULE (\begin{DoxyParamCaption}\item[{g\+\_\+keyboard}]{,  }\item[{uhub}]{,  }\item[{\mbox{\hyperlink{g__keyboard_8c_a1a80ad3c65ef0f5fed4deb3202fc2774}{g\+\_\+keyboard\+\_\+driver}}}]{,  }\item[{\mbox{\hyperlink{g__keyboard_8c_a59f4af2872ad590e759c5062813a425e}{g\+\_\+keyboard\+\_\+devclass}}}]{,  }\item[{0}]{,  }\item[{0}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{g__keyboard_8c_ac32a3d5032398ad96fb947c99cf1944e}\label{g__keyboard_8c_ac32a3d5032398ad96fb947c99cf1944e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_attach@{g\_keyboard\_attach}}
\index{g\_keyboard\_attach@{g\_keyboard\_attach}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_attach()}{g\_keyboard\_attach()}}
{\footnotesize\ttfamily static int g\+\_\+keyboard\+\_\+attach (\begin{DoxyParamCaption}\item[{device\+\_\+t}]{dev }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00228}{228}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \mbox{\hyperlink{usbdi_8h_source_l00417}{usbd\+\_\+lookup\+\_\+info\+::b\+Iface\+Index}}, \textbf{ dev}, \mbox{\hyperlink{usbdi_8h_source_l00430}{usb\+\_\+attach\+\_\+arg\+::device}}, \mbox{\hyperlink{usb__util_8c_source_l00073}{device\+\_\+set\+\_\+usb\+\_\+desc()}}, \mbox{\hyperlink{umass_8c_source_l00179}{DPRINTF}}, \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}, \mbox{\hyperlink{g__keyboard_8c_source_l00159}{g\+\_\+keyboard\+\_\+config}}, \mbox{\hyperlink{g__keyboard_8c_source_l00132}{g\+\_\+keyboard\+\_\+detach}}, \mbox{\hyperlink{g__keyboard_8h_source_l00033}{G\+\_\+\+KEYBOARD\+\_\+\+MODE\+\_\+\+SILENT}}, \mbox{\hyperlink{g__keyboard_8c_source_l00112}{G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER}}, \mbox{\hyperlink{g__keyboard_8c_source_l00175}{g\+\_\+keyboard\+\_\+timeout\+\_\+reset()}}, \mbox{\hyperlink{usbdi_8h_source_l00426}{usb\+\_\+attach\+\_\+arg\+::info}}, \mbox{\hyperlink{g__keyboard_8c_source_l00117}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+callout}}, \mbox{\hyperlink{g__keyboard_8c_source_l00121}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+mode}}, \mbox{\hyperlink{g__keyboard_8c_source_l00116}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+mtx}}, \mbox{\hyperlink{g__keyboard_8c_source_l00119}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+xfer}}, \mbox{\hyperlink{usbdi_8h_source_l00480}{usb\+\_\+callout\+\_\+init\+\_\+mtx}}, \mbox{\hyperlink{usb__error_8c_source_l00093}{usbd\+\_\+errstr()}}, and \mbox{\hyperlink{usb__transfer_8c_source_l00987}{usbd\+\_\+transfer\+\_\+setup()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_ac32a3d5032398ad96fb947c99cf1944e_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_a53c0d2c7f9f9a33ecb75b73698dbadc2}\label{g__keyboard_8c_a53c0d2c7f9f9a33ecb75b73698dbadc2}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_detach@{g\_keyboard\_detach}}
\index{g\_keyboard\_detach@{g\_keyboard\_detach}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_detach()}{g\_keyboard\_detach()}}
{\footnotesize\ttfamily static int g\+\_\+keyboard\+\_\+detach (\begin{DoxyParamCaption}\item[{device\+\_\+t}]{dev }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00265}{265}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \textbf{ dev}, \mbox{\hyperlink{umass_8c_source_l00179}{DPRINTF}}, \mbox{\hyperlink{g__keyboard_8c_source_l00112}{G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER}}, \mbox{\hyperlink{g__keyboard_8c_source_l00117}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+callout}}, \mbox{\hyperlink{g__keyboard_8c_source_l00116}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+mtx}}, \mbox{\hyperlink{g__keyboard_8c_source_l00119}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+xfer}}, \mbox{\hyperlink{usbdi_8h_source_l00497}{usb\+\_\+callout\+\_\+drain}}, \mbox{\hyperlink{usbdi_8h_source_l00489}{usb\+\_\+callout\+\_\+stop}}, and \mbox{\hyperlink{usb__transfer_8c_source_l01431}{usbd\+\_\+transfer\+\_\+unsetup()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_a53c0d2c7f9f9a33ecb75b73698dbadc2_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_aada7bab548a84a818d7f285b0272f550}\label{g__keyboard_8c_aada7bab548a84a818d7f285b0272f550}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_get\_keycode@{g\_keyboard\_get\_keycode}}
\index{g\_keyboard\_get\_keycode@{g\_keyboard\_get\_keycode}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_get\_keycode()}{g\_keyboard\_get\_keycode()}}
{\footnotesize\ttfamily static uint8\+\_\+t g\+\_\+keyboard\+\_\+get\+\_\+keycode (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structg__keyboard__softc}{g\+\_\+keyboard\+\_\+softc}} $\ast$}]{sc,  }\item[{int}]{index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00285}{285}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \textbf{ index}, \mbox{\hyperlink{g__keyboard_8c_source_l00125}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+pattern}}, and \mbox{\hyperlink{g__keyboard_8c_source_l00123}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+pattern\+\_\+len}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00307}{g\+\_\+keyboard\+\_\+intr\+\_\+callback()}}.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_aada7bab548a84a818d7f285b0272f550_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_acaa92bc3d0cdbd29e6ee22cdd070afc1}\label{g__keyboard_8c_acaa92bc3d0cdbd29e6ee22cdd070afc1}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_handle\_request@{g\_keyboard\_handle\_request}}
\index{g\_keyboard\_handle\_request@{g\_keyboard\_handle\_request}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_handle\_request()}{g\_keyboard\_handle\_request()}}
{\footnotesize\ttfamily static int g\+\_\+keyboard\+\_\+handle\+\_\+request (\begin{DoxyParamCaption}\item[{device\+\_\+t}]{dev,  }\item[{const void $\ast$}]{preq,  }\item[{void $\ast$$\ast$}]{pptr,  }\item[{uint16\+\_\+t $\ast$}]{plen,  }\item[{uint16\+\_\+t}]{offset,  }\item[{uint8\+\_\+t $\ast$}]{pstate }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00380}{380}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \textbf{ dev}, \mbox{\hyperlink{usb__if_8m_source_l00054}{offset}}, \mbox{\hyperlink{usb__if_8m_source_l00053}{plen}}, \mbox{\hyperlink{usb__if_8m_source_l00052}{pptr}}, \mbox{\hyperlink{usb__if_8m_source_l00055}{pstate}}, \mbox{\hyperlink{usb__if_8m_source_l00051}{req}}, \mbox{\hyperlink{g__keyboard_8c_source_l00127}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+led\+\_\+state}}, \mbox{\hyperlink{usbhid_8h_source_l00048}{UR\+\_\+\+SET\+\_\+\+IDLE}}, \mbox{\hyperlink{usbhid_8h_source_l00050}{UR\+\_\+\+SET\+\_\+\+PROTOCOL}}, \mbox{\hyperlink{usbhid_8h_source_l00046}{UR\+\_\+\+SET\+\_\+\+REPORT}}, and \mbox{\hyperlink{usb_8h_source_l00177}{UT\+\_\+\+WRITE\+\_\+\+CLASS\+\_\+\+INTERFACE}}.

\mbox{\Hypertarget{g__keyboard_8c_aa5a713cf7d0f7ad8aee8716b89dcdf86}\label{g__keyboard_8c_aa5a713cf7d0f7ad8aee8716b89dcdf86}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_intr\_callback@{g\_keyboard\_intr\_callback}}
\index{g\_keyboard\_intr\_callback@{g\_keyboard\_intr\_callback}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_intr\_callback()}{g\_keyboard\_intr\_callback()}}
{\footnotesize\ttfamily static void g\+\_\+keyboard\+\_\+intr\+\_\+callback (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structusb__xfer}{usb\+\_\+xfer}} $\ast$}]{xfer,  }\item[{\mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\+\_\+error\+\_\+t}}}]{error }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00307}{307}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \mbox{\hyperlink{umass_8c_source_l00179}{DPRINTF}}, \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}, \mbox{\hyperlink{g__keyboard_8c_source_l00285}{g\+\_\+keyboard\+\_\+get\+\_\+keycode()}}, \mbox{\hyperlink{g__keyboard_8h_source_l00032}{G\+\_\+\+KEYBOARD\+\_\+\+MAX\+\_\+\+STRLEN}}, \mbox{\hyperlink{g__keyboard_8h_source_l00034}{G\+\_\+\+KEYBOARD\+\_\+\+MODE\+\_\+\+PATTERN}}, \mbox{\hyperlink{g__keyboard_8h_source_l00033}{G\+\_\+\+KEYBOARD\+\_\+\+MODE\+\_\+\+SILENT}}, \mbox{\hyperlink{g__keyboard_8c_source_l00107}{g\+\_\+keyboard\+\_\+data\+::keycode}}, \mbox{\hyperlink{g__keyboard_8c_source_l00118}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+data}}, \mbox{\hyperlink{g__keyboard_8c_source_l00121}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+mode}}, \mbox{\hyperlink{g__keyboard_8c_source_l00122}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+state}}, \mbox{\hyperlink{usbdi_8h_source_l00051}{USB\+\_\+\+ERR\+\_\+\+CANCELLED}}, \mbox{\hyperlink{usbdi_8h_source_l00515}{USB\+\_\+\+GET\+\_\+\+STATE}}, \mbox{\hyperlink{usbdi_8h_source_l00502}{USB\+\_\+\+ST\+\_\+\+SETUP}}, \mbox{\hyperlink{usbdi_8h_source_l00503}{USB\+\_\+\+ST\+\_\+\+TRANSFERRED}}, \mbox{\hyperlink{usb__error_8c_source_l00093}{usbd\+\_\+errstr()}}, \mbox{\hyperlink{usb__transfer_8c_source_l01719}{usbd\+\_\+transfer\+\_\+submit()}}, \mbox{\hyperlink{usb__transfer_8c_source_l02208}{usbd\+\_\+xfer\+\_\+set\+\_\+frame\+\_\+data()}}, \mbox{\hyperlink{usb__transfer_8c_source_l02292}{usbd\+\_\+xfer\+\_\+set\+\_\+frames()}}, \mbox{\hyperlink{usb__transfer_8c_source_l02754}{usbd\+\_\+xfer\+\_\+set\+\_\+stall()}}, \mbox{\hyperlink{usb__transfer_8c_source_l03602}{usbd\+\_\+xfer\+\_\+softc()}}, and \mbox{\hyperlink{usb__transfer_8c_source_l02247}{usbd\+\_\+xfer\+\_\+status()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_aa5a713cf7d0f7ad8aee8716b89dcdf86_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_a75b5b707c168df4f54997bbe4dbef089}\label{g__keyboard_8c_a75b5b707c168df4f54997bbe4dbef089}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_probe@{g\_keyboard\_probe}}
\index{g\_keyboard\_probe@{g\_keyboard\_probe}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_probe()}{g\_keyboard\_probe()}}
{\footnotesize\ttfamily static int g\+\_\+keyboard\+\_\+probe (\begin{DoxyParamCaption}\item[{device\+\_\+t}]{dev }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00210}{210}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \mbox{\hyperlink{usbdi_8h_source_l00414}{usbd\+\_\+lookup\+\_\+info\+::b\+Interface\+Class}}, \mbox{\hyperlink{usbdi_8h_source_l00416}{usbd\+\_\+lookup\+\_\+info\+::b\+Interface\+Protocol}}, \mbox{\hyperlink{usbdi_8h_source_l00415}{usbd\+\_\+lookup\+\_\+info\+::b\+Interface\+Sub\+Class}}, \textbf{ dev}, \mbox{\hyperlink{usbdi_8h_source_l00426}{usb\+\_\+attach\+\_\+arg\+::info}}, \mbox{\hyperlink{usb_8h_source_l00453}{UICLASS\+\_\+\+HID}}, \mbox{\hyperlink{usb_8h_source_l00454}{UISUBCLASS\+\_\+\+BOOT}}, \mbox{\hyperlink{g__keyboard_8c_source_l00091}{UPROTO\+\_\+\+BOOT\+\_\+\+KEYBOARD}}, \mbox{\hyperlink{usbdi_8h_source_l00432}{usb\+\_\+attach\+\_\+arg\+::usb\+\_\+mode}}, and \mbox{\hyperlink{usb_8h_source_l00779}{USB\+\_\+\+MODE\+\_\+\+DEVICE}}.

\mbox{\Hypertarget{g__keyboard_8c_ab4c820d3612695e46daf68a78c0794ae}\label{g__keyboard_8c_ab4c820d3612695e46daf68a78c0794ae}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_timeout@{g\_keyboard\_timeout}}
\index{g\_keyboard\_timeout@{g\_keyboard\_timeout}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_timeout()}{g\_keyboard\_timeout()}}
{\footnotesize\ttfamily static void g\+\_\+keyboard\+\_\+timeout (\begin{DoxyParamCaption}\item[{void $\ast$}]{arg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00190}{190}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \mbox{\hyperlink{g__keyboard_8c_source_l00111}{G\+\_\+\+KEYBOARD\+\_\+\+INTR\+\_\+\+DT}}, \mbox{\hyperlink{g__keyboard_8c_source_l00085}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}}, \mbox{\hyperlink{g__keyboard_8h_source_l00032}{G\+\_\+\+KEYBOARD\+\_\+\+MAX\+\_\+\+STRLEN}}, \mbox{\hyperlink{g__keyboard_8c_source_l00075}{g\+\_\+keyboard\+\_\+mode}}, \mbox{\hyperlink{g__keyboard_8c_source_l00175}{g\+\_\+keyboard\+\_\+timeout\+\_\+reset()}}, \mbox{\hyperlink{g__keyboard_8c_source_l00121}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+mode}}, \mbox{\hyperlink{g__keyboard_8c_source_l00125}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+pattern}}, \mbox{\hyperlink{g__keyboard_8c_source_l00123}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+pattern\+\_\+len}}, \mbox{\hyperlink{g__keyboard_8c_source_l00119}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+xfer}}, and \mbox{\hyperlink{usb__transfer_8c_source_l01948}{usbd\+\_\+transfer\+\_\+start()}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00175}{g\+\_\+keyboard\+\_\+timeout\+\_\+reset()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_ab4c820d3612695e46daf68a78c0794ae_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_ab4c820d3612695e46daf68a78c0794ae_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_a472a2de55d895db6d76a5aa25a5a4fa9}\label{g__keyboard_8c_a472a2de55d895db6d76a5aa25a5a4fa9}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_timeout\_reset@{g\_keyboard\_timeout\_reset}}
\index{g\_keyboard\_timeout\_reset@{g\_keyboard\_timeout\_reset}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_timeout\_reset()}{g\_keyboard\_timeout\_reset()}}
{\footnotesize\ttfamily static void g\+\_\+keyboard\+\_\+timeout\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structg__keyboard__softc}{g\+\_\+keyboard\+\_\+softc}} $\ast$}]{sc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00175}{175}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



References \mbox{\hyperlink{g__keyboard_8c_source_l00080}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+interval}}, \mbox{\hyperlink{g__keyboard_8c_source_l00190}{g\+\_\+keyboard\+\_\+timeout()}}, \mbox{\hyperlink{g__keyboard_8c_source_l00117}{g\+\_\+keyboard\+\_\+softc\+::sc\+\_\+callout}}, \mbox{\hyperlink{usbdi_8h_source_l00481}{usb\+\_\+callout\+\_\+reset}}, and \mbox{\hyperlink{usbdi_8h_source_l00120}{USB\+\_\+\+MS\+\_\+\+TO\+\_\+\+TICKS}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00228}{g\+\_\+keyboard\+\_\+attach()}}, and \mbox{\hyperlink{g__keyboard_8c_source_l00190}{g\+\_\+keyboard\+\_\+timeout()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d0/def/g__keyboard_8c_a472a2de55d895db6d76a5aa25a5a4fa9_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=348pt]{d0/def/g__keyboard_8c_a472a2de55d895db6d76a5aa25a5a4fa9_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{g__keyboard_8c_abefe2af58e828f822bd2b75d3a0b9988}\label{g__keyboard_8c_abefe2af58e828f822bd2b75d3a0b9988}} 
\index{g\_keyboard.c@{g\_keyboard.c}!MODULE\_DEPEND@{MODULE\_DEPEND}}
\index{MODULE\_DEPEND@{MODULE\_DEPEND}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{MODULE\_DEPEND()}{MODULE\_DEPEND()}}
{\footnotesize\ttfamily MODULE\+\_\+\+DEPEND (\begin{DoxyParamCaption}\item[{g\+\_\+keyboard}]{,  }\item[{\mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}}]{,  }\item[{1}]{,  }\item[{1}]{,  }\item[{1}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{g__keyboard_8c_a38712073f5b43c46228c12fd56b268ea}\label{g__keyboard_8c_a38712073f5b43c46228c12fd56b268ea}} 
\index{g\_keyboard.c@{g\_keyboard.c}!SYSCTL\_INT@{SYSCTL\_INT}}
\index{SYSCTL\_INT@{SYSCTL\_INT}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{SYSCTL\_INT()}{SYSCTL\_INT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily SYSCTL\+\_\+\+INT (\begin{DoxyParamCaption}\item[{\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard}]{,  }\item[{OID\+\_\+\+AUTO}]{,  }\item[{key\+\_\+press\+\_\+interval}]{,  }\item[{CTLFLAG\+\_\+\+RWTUN}]{,  }\item[{\&}]{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+interval,  }\item[{0}]{,  }\item[{\char`\"{}Key Press Interval in milliseconds\char`\"{}}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{g__keyboard_8c_a46095de9e433986aa2cc9d5faa9773c4}\label{g__keyboard_8c_a46095de9e433986aa2cc9d5faa9773c4}} 
\index{g\_keyboard.c@{g\_keyboard.c}!SYSCTL\_INT@{SYSCTL\_INT}}
\index{SYSCTL\_INT@{SYSCTL\_INT}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{SYSCTL\_INT()}{SYSCTL\_INT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily SYSCTL\+\_\+\+INT (\begin{DoxyParamCaption}\item[{\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard}]{,  }\item[{OID\+\_\+\+AUTO}]{,  }\item[{mode}]{,  }\item[{CTLFLAG\+\_\+\+RWTUN}]{,  }\item[{\&}]{g\+\_\+keyboard\+\_\+mode,  }\item[{0}]{,  }\item[{\char`\"{}Mode selection\char`\"{}}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{g__keyboard_8c_af5567c3688817bab4fb4e409b50f1cb8}\label{g__keyboard_8c_af5567c3688817bab4fb4e409b50f1cb8}} 
\index{g\_keyboard.c@{g\_keyboard.c}!SYSCTL\_NODE@{SYSCTL\_NODE}}
\index{SYSCTL\_NODE@{SYSCTL\_NODE}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{SYSCTL\_NODE()}{SYSCTL\_NODE()}}
{\footnotesize\ttfamily static SYSCTL\+\_\+\+NODE (\begin{DoxyParamCaption}\item[{\+\_\+hw\+\_\+usb}]{,  }\item[{OID\+\_\+\+AUTO}]{,  }\item[{g\+\_\+keyboard}]{,  }\item[{CTLFLAG\+\_\+\+RW$\vert$}]{CTLFLAG\+\_\+\+MPSAFE,  }\item[{0}]{,  }\item[{\char`\"{}USB keyboard gadget\char`\"{}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{g__keyboard_8c_a51988ab6c4b23667bd099636e91055f8}\label{g__keyboard_8c_a51988ab6c4b23667bd099636e91055f8}} 
\index{g\_keyboard.c@{g\_keyboard.c}!SYSCTL\_STRING@{SYSCTL\_STRING}}
\index{SYSCTL\_STRING@{SYSCTL\_STRING}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{SYSCTL\_STRING()}{SYSCTL\_STRING()}}
{\footnotesize\ttfamily SYSCTL\+\_\+\+STRING (\begin{DoxyParamCaption}\item[{\+\_\+hw\+\_\+usb\+\_\+g\+\_\+keyboard}]{,  }\item[{OID\+\_\+\+AUTO}]{,  }\item[{key\+\_\+press\+\_\+pattern}]{,  }\item[{CTLFLAG\+\_\+\+RW}]{,  }\item[{\mbox{\hyperlink{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}}}]{,  }\item[{sizeof(\mbox{\hyperlink{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}{g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern}})}]{,  }\item[{\char`\"{}Key Press Patterns\char`\"{}}]{ }\end{DoxyParamCaption})}



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{g__keyboard_8c_aa02383ef017727b5e0de1d4dbbf266f4}\label{g__keyboard_8c_aa02383ef017727b5e0de1d4dbbf266f4}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_attach@{g\_keyboard\_attach}}
\index{g\_keyboard\_attach@{g\_keyboard\_attach}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_attach}{g\_keyboard\_attach}}
{\footnotesize\ttfamily device\+\_\+attach\+\_\+t g\+\_\+keyboard\+\_\+attach\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00131}{131}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a6f394aa39bbc94486a980798f6dbb66e}\label{g__keyboard_8c_a6f394aa39bbc94486a980798f6dbb66e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_config@{g\_keyboard\_config}}
\index{g\_keyboard\_config@{g\_keyboard\_config}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_config}{g\_keyboard\_config}}
{\footnotesize\ttfamily const struct \mbox{\hyperlink{structusb__config}{usb\+\_\+config}} g\+\_\+keyboard\+\_\+config\mbox{[}\mbox{\hyperlink{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06caaf1206ba1d2bc6f8eb95588ed4797570}{G\+\_\+\+KEYBOARD\+\_\+\+N\+\_\+\+TRANSFER}}\mbox{]}\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [\mbox{\hyperlink{g__keyboard_8c_adc29c2ff13d900c2f185ee95427fb06ca22d64fe5ae86a2fffb56a828be6ecab0}{G\_KEYBOARD\_INTR\_DT}}] = \{}
\DoxyCodeLine{                .type = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{                .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{                .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{                .flags = \{.ext\_buffer = 1,.pipe\_bof = 1,\},}
\DoxyCodeLine{                .bufsize = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structg__keyboard__data}{g\_keyboard\_data}}),}
\DoxyCodeLine{                .callback = \&\mbox{\hyperlink{g__keyboard_8c_adbe52c4f6d779d05bb8ef80857fbcb7b}{g\_keyboard\_intr\_callback}},}
\DoxyCodeLine{                .frames = 2,}
\DoxyCodeLine{                .usb\_mode = \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806bada6c05f1ad342e782a92990170fca2cc}{USB\_MODE\_DEVICE}},}
\DoxyCodeLine{        \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00159}{159}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00228}{g\+\_\+keyboard\+\_\+attach()}}.

\mbox{\Hypertarget{g__keyboard_8c_a431473d67a9f43f454d6000aa797d74b}\label{g__keyboard_8c_a431473d67a9f43f454d6000aa797d74b}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_detach@{g\_keyboard\_detach}}
\index{g\_keyboard\_detach@{g\_keyboard\_detach}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_detach}{g\_keyboard\_detach}}
{\footnotesize\ttfamily device\+\_\+detach\+\_\+t g\+\_\+keyboard\+\_\+detach\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00132}{132}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00228}{g\+\_\+keyboard\+\_\+attach()}}.

\mbox{\Hypertarget{g__keyboard_8c_a59f4af2872ad590e759c5062813a425e}\label{g__keyboard_8c_a59f4af2872ad590e759c5062813a425e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_devclass@{g\_keyboard\_devclass}}
\index{g\_keyboard\_devclass@{g\_keyboard\_devclass}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_devclass}{g\_keyboard\_devclass}}
{\footnotesize\ttfamily devclass\+\_\+t g\+\_\+keyboard\+\_\+devclass\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00136}{136}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a1a80ad3c65ef0f5fed4deb3202fc2774}\label{g__keyboard_8c_a1a80ad3c65ef0f5fed4deb3202fc2774}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_driver@{g\_keyboard\_driver}}
\index{g\_keyboard\_driver@{g\_keyboard\_driver}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_driver}{g\_keyboard\_driver}}
{\footnotesize\ttfamily driver\+\_\+t g\+\_\+keyboard\+\_\+driver\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}g\_keyboard"{}},}
\DoxyCodeLine{        .methods = \mbox{\hyperlink{g__keyboard_8c_aa26a4ebcfae63912dd037ec2f956d271}{g\_keyboard\_methods}},}
\DoxyCodeLine{        .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structg__keyboard__softc}{g\_keyboard\_softc}}),}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00150}{150}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a482399d1ac3841acc38f2cfb4a1bd8d4}\label{g__keyboard_8c_a482399d1ac3841acc38f2cfb4a1bd8d4}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_handle\_request@{g\_keyboard\_handle\_request}}
\index{g\_keyboard\_handle\_request@{g\_keyboard\_handle\_request}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_handle\_request}{g\_keyboard\_handle\_request}}
{\footnotesize\ttfamily usb\+\_\+handle\+\_\+request\+\_\+t g\+\_\+keyboard\+\_\+handle\+\_\+request\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00133}{133}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_adbe52c4f6d779d05bb8ef80857fbcb7b}\label{g__keyboard_8c_adbe52c4f6d779d05bb8ef80857fbcb7b}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_intr\_callback@{g\_keyboard\_intr\_callback}}
\index{g\_keyboard\_intr\_callback@{g\_keyboard\_intr\_callback}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_intr\_callback}{g\_keyboard\_intr\_callback}}
{\footnotesize\ttfamily \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\+\_\+callback\+\_\+t}} g\+\_\+keyboard\+\_\+intr\+\_\+callback\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00134}{134}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a6bc9790992093f5999a02dd882a76813}\label{g__keyboard_8c_a6bc9790992093f5999a02dd882a76813}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_key\_press\_interval@{g\_keyboard\_key\_press\_interval}}
\index{g\_keyboard\_key\_press\_interval@{g\_keyboard\_key\_press\_interval}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_key\_press\_interval}{g\_keyboard\_key\_press\_interval}}
{\footnotesize\ttfamily int g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+interval = 1000\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00080}{80}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00175}{g\+\_\+keyboard\+\_\+timeout\+\_\+reset()}}.

\mbox{\Hypertarget{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}\label{g__keyboard_8c_ada22a854814f8c9d0a92df14ead5a52e}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_key\_press\_pattern@{g\_keyboard\_key\_press\_pattern}}
\index{g\_keyboard\_key\_press\_pattern@{g\_keyboard\_key\_press\_pattern}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_key\_press\_pattern}{g\_keyboard\_key\_press\_pattern}}
{\footnotesize\ttfamily char g\+\_\+keyboard\+\_\+key\+\_\+press\+\_\+pattern\mbox{[}\mbox{\hyperlink{g__keyboard_8h_aa92958b736497c1ffa0c41e13252d21b}{G\+\_\+\+KEYBOARD\+\_\+\+MAX\+\_\+\+STRLEN}}\mbox{]}\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00085}{85}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00190}{g\+\_\+keyboard\+\_\+timeout()}}.

\mbox{\Hypertarget{g__keyboard_8c_aa26a4ebcfae63912dd037ec2f956d271}\label{g__keyboard_8c_aa26a4ebcfae63912dd037ec2f956d271}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_methods@{g\_keyboard\_methods}}
\index{g\_keyboard\_methods@{g\_keyboard\_methods}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_methods}{g\_keyboard\_methods}}
{\footnotesize\ttfamily device\+\_\+method\+\_\+t g\+\_\+keyboard\+\_\+methods\mbox{[}$\,$\mbox{]}\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        }
\DoxyCodeLine{        DEVMETHOD(\mbox{\hyperlink{usb__handle__request_8c_acd7ff252b93f3bd9e87d0f8b3eb3ffa5}{usb\_handle\_request}}, \mbox{\hyperlink{g__keyboard_8c_a482399d1ac3841acc38f2cfb4a1bd8d4}{g\_keyboard\_handle\_request}}),}
\DoxyCodeLine{}
\DoxyCodeLine{        }
\DoxyCodeLine{        DEVMETHOD(device\_probe, \mbox{\hyperlink{g__keyboard_8c_ad84fe7937d91d2b733e9f063e8240e2b}{g\_keyboard\_probe}}),}
\DoxyCodeLine{        DEVMETHOD(device\_attach, \mbox{\hyperlink{g__keyboard_8c_aa02383ef017727b5e0de1d4dbbf266f4}{g\_keyboard\_attach}}),}
\DoxyCodeLine{        DEVMETHOD(device\_detach, \mbox{\hyperlink{g__keyboard_8c_a431473d67a9f43f454d6000aa797d74b}{g\_keyboard\_detach}}),}
\DoxyCodeLine{}
\DoxyCodeLine{        DEVMETHOD\_END}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00138}{138}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

\mbox{\Hypertarget{g__keyboard_8c_a9e601e77329904b1e4f425c97d1ed4a8}\label{g__keyboard_8c_a9e601e77329904b1e4f425c97d1ed4a8}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_mode@{g\_keyboard\_mode}}
\index{g\_keyboard\_mode@{g\_keyboard\_mode}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_mode}{g\_keyboard\_mode}}
{\footnotesize\ttfamily int g\+\_\+keyboard\+\_\+mode = 0\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00075}{75}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.



Referenced by \mbox{\hyperlink{g__keyboard_8c_source_l00190}{g\+\_\+keyboard\+\_\+timeout()}}.

\mbox{\Hypertarget{g__keyboard_8c_ad84fe7937d91d2b733e9f063e8240e2b}\label{g__keyboard_8c_ad84fe7937d91d2b733e9f063e8240e2b}} 
\index{g\_keyboard.c@{g\_keyboard.c}!g\_keyboard\_probe@{g\_keyboard\_probe}}
\index{g\_keyboard\_probe@{g\_keyboard\_probe}!g\_keyboard.c@{g\_keyboard.c}}
\doxysubsubsection{\texorpdfstring{g\_keyboard\_probe}{g\_keyboard\_probe}}
{\footnotesize\ttfamily device\+\_\+probe\+\_\+t g\+\_\+keyboard\+\_\+probe\hspace{0.3cm}{\ttfamily [static]}}



Definition at line \mbox{\hyperlink{g__keyboard_8c_source_l00130}{130}} of file \mbox{\hyperlink{g__keyboard_8c_source}{g\+\_\+keyboard.\+c}}.

