[bootlin/training-materials updates] master: Kernel input: add input_report/input_sync example (e9c14542)
Michael Opdenacker
michael.opdenacker at bootlin.com
Wed Sep 4 10:15:02 CEST 2019
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/e9c145420fce1c07ed1731e43420642d9a002d4e
>---------------------------------------------------------------
commit e9c145420fce1c07ed1731e43420642d9a002d4e
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date: Wed Sep 4 10:15:02 2019 +0200
Kernel input: add input_report/input_sync example
Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>
>---------------------------------------------------------------
e9c145420fce1c07ed1731e43420642d9a002d4e
slides/kernel-input/kernel-input.tex | 34 ++++++++++++++++++++++++++++++----
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/slides/kernel-input/kernel-input.tex b/slides/kernel-input/kernel-input.tex
index b9488aeb..81b29532 100644
--- a/slides/kernel-input/kernel-input.tex
+++ b/slides/kernel-input/kernel-input.tex
@@ -107,9 +107,8 @@ struct input_dev {
\end{itemize}
\end{frame}
-\begin{frame}[fragile]{Input subsystem API 3/3}
- \begin{itemize}
- \item The events are sent by the driver to the event handler using
+\begin{frame}{Input subsystem API 3/3}
+ The events are sent by the driver to the event handler using
\code{input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);}
\begin{itemize}
\item The event types are documented in \kerneldoctext{input/event-codes.txt}
@@ -122,7 +121,34 @@ struct input_dev {
\item The input subsystem provides other wrappers such as
\kfunc{input_report_key}, \kfunc{input_report_abs}, ...
\end{itemize}
- \end{itemize}
+\end{frame}
+
+
+\begin{frame}[fragile]{Example from drivers/hid/usbhid/usbmouse.c}
+ \begin{block}{}
+ \begin{minted}[fontsize=\scriptsize]{c}
+static void usb_mouse_irq(struct urb *urb)
+{
+ struct usb_mouse *mouse = urb->context;
+ signed char *data = mouse->data;
+ struct input_dev *dev = mouse->dev;
+ ...
+
+ input_report_key(dev, BTN_LEFT, data[0] & 0x01);
+ input_report_key(dev, BTN_RIGHT, data[0] & 0x02);
+ input_report_key(dev, BTN_MIDDLE, data[0] & 0x04);
+ input_report_key(dev, BTN_SIDE, data[0] & 0x08);
+ input_report_key(dev, BTN_EXTRA, data[0] & 0x10);
+
+ input_report_rel(dev, REL_X, data[1]);
+ input_report_rel(dev, REL_Y, data[2]);
+ input_report_rel(dev, REL_WHEEL, data[3]);
+
+ input_sync(dev);
+ ...
+}
+ \end{minted}
+ \end{block}
\end{frame}
\begin{frame}[fragile]{Polled input subclass}
More information about the training-materials-updates
mailing list