1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
\documentclass{beamer}
\usepackage[utf8x]{inputenc}
% \usetheme[secheader]{Boadilla}
% \usetheme[secheader]{Goettingen}
\usetheme{Malmoe}
\definecolor{myblue}{RGB}{55,69,104}
\usecolortheme[named=myblue]{structure}
\useinnertheme{circles}
\usepackage{hyperref}
\usepackage{ngerman}
\newenvironment{slide}[1]{\begin{frame}[containsverbatim]{#1}}{\end{frame}}
\usepackage{color}
\usepackage{listings}
\usepackage{pgfpages}
\definecolor{mylightgray}{rgb}{0.91,0.91,0.91}
\lstset{
basicstyle=\ttfamily\tiny,
language=,
showstringspaces=false,
numbers=none,
numberstyle=\tiny,
stepnumber=2,
emptylines=*1,
breaklines=false,
frame=none,
columns=fixed,
% escapechar={},
% extendedchars=true,
commentstyle=\it\color{gray},
directivestyle=\color{green},
stringstyle=\color{red},
backgroundcolor=\color{mylightgray},
keywordstyle=\bf\color{black}
}
\title{xf86-input-joystick}
\author{\textbf{Sascha Hlusiak}}
\logo{\includegraphics[width=1cm,height=1cm]{pics/X_Org_Logo.png}}
\titlegraphic{\includegraphics[width=4cm,height=4cm]{pics/logitech_1.png}}
%\institute{}
%\date{}%{}
%% ABSTRACT
%The joystick input module was part of the old XFree86 distribution, but the
%driver was in a bad state until 2007, when development was pushed forward. It
%first supported the Linux joystick kernel device only, later on support for
%evdev devices was added, which added support for the driver to be hotplugged
%by hal enabled server. A FreeBSD kernel backend is available as well, but
%like Solaris, this is not a prominent system on workstations. Today the
%joystick driver is well hotpluggable using udev and supports many features
%and configuration possibilities, like generating mouse button events, pointer
%movement or key strokes. Enabling the driver to act as both, a pointer and a
%keyboard device, was particularly challenging. Having a second keyboard
%device with a different keyboard layout was a problem too, but situation
%improved with recent servers and XI2/MPX. Support for properties enable 3rd
%party programs to be written that change the configuration of the device on
%demand. Prominent target platforms are Linux on the PS3 or the XBox.
\begin{document}
\maketitle
\section*{Overview}
\subsection*{Abstract}
\begin{slide}{Abstract}
\structure{xf86-input-joystick?}
\begin{itemize}
\item input module for the X.Org server to handle joystick devices
\item can emit cursor movement and key events
\item \textbf{control the cursor with a joystick}
\end{itemize}
\end{slide}
\begin{slide}{Overview}
\tableofcontents
\end{slide}
\section{Basics}
\begin{slide}{joysticks}
\begin{itemize}
\item easily 6 or more axes, different types
\begin{itemize}
\item directional pad
\item hat switch
\item analog sticks
\end{itemize}
\item bunch of buttons, easily 10 and more
\item sometimes force feedback
\end{itemize}
\begin{center}
\includegraphics[width=4cm,height=4cm]{pics/logitech_1.png}
\end{center}
\end{slide}
\begin{slide}{why a joystick input module?}
\begin{itemize}
\item \textbf{xf86-input-evdev} maps directly to mouse/keyboard events
\item evdev only in Linux
\item joysticks send absolute axis data \\
$ \Rightarrow $ direct mapping useless \\
$ \Rightarrow $ want smooth, relative cursor movement \\
\item joystick specific event transformation:
\end{itemize}
\scriptsize \vspace{1cm}
$$
\underbrace{
\left (
\begin{matrix}
\text{absolute axes} \\
\text{buttons} \\
\end{matrix}
\right )
}_{\text{joystick data}}
\Rightarrow
\underbrace{
px(a_i) = \int_{t} f(a_i) \frac{\mathrm{px}}{\mathrm{s}}
}_{\text{transformation}}
\Rightarrow
\underbrace{
\left (
\begin{matrix}
\text{cursor} \\
\text{buttons} \\
\text{keys} \\
\end{matrix}
\right )
}_{\text{X events}}
$$
\end{slide}
\begin{slide}{joysticks on kernel level}
\structure{kernel device}
\begin{itemize}
\item usually Plug \& Play (USB)
\item event driven $ \Rightarrow $ no polling
\end{itemize}
\structure{Linux}
\begin{itemize}
\item \texttt{/dev/input/js0} (joydev)
\item \texttt{/dev/input/event0} (evdev)
\end{itemize}
\structure{FreeBSD}
\begin{itemize}
\item \texttt{/dev/input/js0} (linux-js)
\item \texttt{/dev/uhid0} (usbhid)
\end{itemize}
$ \Rightarrow $ supported through lightweight abstraction layer
\end{slide}
\section{Backends}
\section{Hotplugging}
\section{Main Features}
\section{Properties}
\section{Future}
\end{document}
|