>sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/input/inputmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/input/inputmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/input/inputmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/input/inputmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/input/inputmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/pt_BR/input/inputmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/input/inputmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h4This data file has been placed in the public domain.h]h4This data file has been placed in the public domain.}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhho/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txthKubh)}(hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .h]hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsubstitution_definition)}(h*.. |amp| unicode:: U+00026 .. AMPERSANDh]h&}hhsbah}(h]h ]h"]ampah$]h&]uh1hhhhKhhhhubh)}(h+.. |apos| unicode:: U+00027 .. APOSTROPHEh]h'}hhsbah}(h]h ]h"]aposah$]h&]uh1hhhhKhhhhubh)}(h).. |ast| unicode:: U+0002A .. ASTERISKh]h*}hhsbah}(h]h ]h"]astah$]h&]uh1hhhhK hhhhubh)}(h+.. |brvbar| unicode:: U+000A6 .. BROKEN BARh]h¦}hjsbah}(h]h ]h"]brvbarah$]h&]uh1hhhhK hhhhubh)}(h0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUSh]h\}hjsbah}(h]h ]h"]bsolah$]h&]uh1hhhhK hhhhubh)}(h*.. |cent| unicode:: U+000A2 .. CENT SIGNh]h¢}hj#sbah}(h]h ]h"]centah$]h&]uh1hhhhK hhhhubh)}(h&.. |colon| unicode:: U+0003A .. COLONh]h:}hj2sbah}(h]h ]h"]colonah$]h&]uh1hhhhK hhhhubh)}(h&.. |comma| unicode:: U+0002C .. COMMAh]h,}hjAsbah}(h]h ]h"]commaah$]h&]uh1hhhhKhhhhubh)}(h... |commat| unicode:: U+00040 .. COMMERCIAL ATh]h@}hjPsbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hj_sbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hjnsbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hj}sbah}(h]h ]h"]darrah$]h&]uh1hhhhKhhhhubh)}(h,.. |deg| unicode:: U+000B0 .. DEGREE SIGNh]h°}hjsbah}(h]h ]h"]degah$]h&]uh1hhhhKhhhhubh)}(h... |divide| unicode:: U+000F7 .. DIVISION SIGNh]h÷}hjsbah}(h]h ]h"]divideah$]h&]uh1hhhhKhhhhubh)}(h,.. |dollar| unicode:: U+00024 .. DOLLAR SIGNh]h$}hjsbah}(h]h ]h"]dollarah$]h&]uh1hhhhKhhhhubh)}(h,.. |equals| unicode:: U+0003D .. EQUALS SIGNh]h=}hjsbah}(h]h ]h"]equalsah$]h&]uh1hhhhKhhhhubh)}(h1.. |excl| unicode:: U+00021 .. EXCLAMATION MARKh]h!}hjsbah}(h]h ]h"]exclah$]h&]uh1hhhhKhhhhubh)}(h9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjsbah}(h]h ]h"]frac12ah$]h&]uh1hhhhKhhhhubh)}(h<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTERh]h¼}hjsbah}(h]h ]h"]frac14ah$]h&]uh1hhhhKhhhhubh)}(h;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTHh]h⅛}hjsbah}(h]h ]h"]frac18ah$]h&]uh1hhhhKhhhhubh)}(h?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERSh]h¾}hjsbah}(h]h ]h"]frac34ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHSh]h⅜}hjsbah}(h]h ]h"]frac38ah$]h&]uh1hhhhKhhhhubh)}(h=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHSh]h⅝}hj"sbah}(h]h ]h"]frac58ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHSh]h⅞}hj1sbah}(h]h ]h"]frac78ah$]h&]uh1hhhhKhhhhubh)}(h2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGNh]h>}hj@sbah}(h]h ]h"]gtah$]h&]uh1hhhhKhhhhubh)}(h9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjOsbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hj^sbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hjmsbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hj|sbah}(h]h ]h"]iexclah$]h&]uh1hhhhK#hhhhubh)}(h7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARKh]h¿}hjsbah}(h]h ]h"]iquestah$]h&]uh1hhhhK$hhhhubh)}(hJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARKh]h«}hjsbah}(h]h ]h"]laquoah$]h&]uh1hhhhK%hhhhubh)}(h0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROWh]h←}hjsbah}(h]h ]h"]larrah$]h&]uh1hhhhK&hhhhubh)}(h3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKETh]h{}hjsbah}(h]h ]h"]lcubah$]h&]uh1hhhhK'hhhhubh)}(h;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARKh]h“}hjsbah}(h]h ]h"]ldquoah$]h&]uh1hhhhK(hhhhubh)}(h).. |lowbar| unicode:: U+0005F .. LOW LINEh]h_}hjsbah}(h]h ]h"]lowbarah$]h&]uh1hhhhK)hhhhubh)}(h1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESISh]h(}hjsbah}(h]h ]h"]lparah$]h&]uh1hhhhK*hhhhubh)}(h4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKETh]h[}hjsbah}(h]h ]h"]lsqbah$]h&]uh1hhhhK+hhhhubh)}(h;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARKh]h‘}hjsbah}(h]h ]h"]lsquoah$]h&]uh1hhhhK,hhhhubh)}(h/.. |lt| unicode:: U+0003C .. LESS-THAN SIGNh]h<}hjsbah}(h]h ]h"]ltah$]h&]uh1hhhhK-hhhhubh)}(h+.. |micro| unicode:: U+000B5 .. MICRO SIGNh]hµ}hj!sbah}(h]h ]h"]microah$]h&]uh1hhhhK.hhhhubh)}(h+.. |middot| unicode:: U+000B7 .. MIDDLE DOTh]h·}hj0sbah}(h]h ]h"]middotah$]h&]uh1hhhhK/hhhhubh)}(h/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACEh]h }hj?sbah}(h]h ]h"]nbspah$]h&]uh1hhhhK0hhhhubh)}(h).. |not| unicode:: U+000AC .. NOT SIGNh]h¬}hjNsbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hj]sbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hjlsbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hj{sbah}(h]h ]h"]ordfah$]h&]uh1hhhhK4hhhhubh)}(h<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATORh]hº}hjsbah}(h]h ]h"]ordmah$]h&]uh1hhhhK5hhhhubh)}(h-.. |para| unicode:: U+000B6 .. PILCROW SIGNh]h¶}hjsbah}(h]h ]h"]paraah$]h&]uh1hhhhK6hhhhubh)}(h-.. |percnt| unicode:: U+00025 .. PERCENT SIGNh]h%}hjsbah}(h]h ]h"]percntah$]h&]uh1hhhhK7hhhhubh)}(h*.. |period| unicode:: U+0002E .. FULL STOPh]h.}hjsbah}(h]h ]h"]periodah$]h&]uh1hhhhK8hhhhubh)}(h*.. |plus| unicode:: U+0002B .. PLUS SIGNh]h+}hjsbah}(h]h ]h"]plusah$]h&]uh1hhhhK9hhhhubh)}(h0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGNh]h±}hjsbah}(h]h ]h"]plusmnah$]h&]uh1hhhhK:hhhhubh)}(h+.. |pound| unicode:: U+000A3 .. POUND SIGNh]h£}hjsbah}(h]h ]h"]poundah$]h&]uh1hhhhK;hhhhubh)}(h... |quest| unicode:: U+0003F .. QUESTION MARKh]h?}hjsbah}(h]h ]h"]questah$]h&]uh1hhhhKhhhhubh)}(h1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROWh]h→}hj sbah}(h]h ]h"]rarrah$]h&]uh1hhhhK?hhhhubh)}(h4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKETh]h}}hj/sbah}(h]h ]h"]rcubah$]h&]uh1hhhhK@hhhhubh)}(h<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARKh]h”}hj>sbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hjMsbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hj\sbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjksbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjzsbah}(h]h ]h"]rsquoah$]h&]uh1hhhhKEhhhhubh)}(h-.. |sect| unicode:: U+000A7 .. SECTION SIGNh]h§}hjsbah}(h]h ]h"]sectah$]h&]uh1hhhhKFhhhhubh)}(h*.. |semi| unicode:: U+0003B .. SEMICOLONh]h;}hjsbah}(h]h ]h"]semiah$]h&]uh1hhhhKGhhhhubh)}(h,.. |shy| unicode:: U+000AD .. SOFT HYPHENh]h­}hjsbah}(h]h ]h"]shyah$]h&]uh1hhhhKHhhhhubh)}(h(.. |sol| unicode:: U+0002F .. SOLIDUSh]h/}hjsbah}(h]h ]h"]solah$]h&]uh1hhhhKIhhhhubh)}(h,.. |sung| unicode:: U+0266A .. EIGHTH NOTEh]h♪}hjsbah}(h]h ]h"]sungah$]h&]uh1hhhhKJhhhhubh)}(h0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONEh]h¹}hjsbah}(h]h ]h"]sup1ah$]h&]uh1hhhhKKhhhhubh)}(h0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWOh]h²}hjsbah}(h]h ]h"]sup2ah$]h&]uh1hhhhKLhhhhubh)}(h2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREEh]h³}hjsbah}(h]h ]h"]sup3ah$]h&]uh1hhhhKMhhhhubh)}(h4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGNh]h×}hjsbah}(h]h ]h"]timesah$]h&]uh1hhhhKNhhhhubh)}(h0.. |trade| unicode:: U+02122 .. TRADE MARK SIGNh]h™}hjsbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hjsbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hj.sbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hj=sbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(h Introductionh]h Introduction}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjNhhh9/var/lib/git/docbuild/linux/Documentation/input/input.rsthKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(h Copyrighth]h Copyright}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjihjahKubh field_body)}(hE|copy| 1999-2001 Vojtech Pavlik - Sponsored by SuSE h]h paragraph)}(hD|copy| 1999-2001 Vojtech Pavlik - Sponsored by SuSEh](h©}(hjhhhNhNubh 1999-2001 Vojtech Pavlik <}(hjhhhNhNubh reference)}(hvojtech@ucw.czh]hvojtech@ucw.cz}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:vojtech@ucw.czuh1jhjubh> - Sponsored by SuSE}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhj~ubah}(h]h ]h"]h$]h&]uh1j|hjiubeh}(h]h ]h"]h$]h&]uh1jghjahKhjdhhubah}(h]h ]h"]h$]h&]uh1jbhjNhhhjahKubjM)}(hhh](jR)}(h Architectureh]h Architecture}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahK ubj)}(hInput subsystem is a collection of drivers that is designed to support all input devices under Linux. Most of the drivers reside in drivers/input, although quite a few live in drivers/hid and drivers/platform.h]hInput subsystem is a collection of drivers that is designed to support all input devices under Linux. Most of the drivers reside in drivers/input, although quite a few live in drivers/hid and drivers/platform.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK hjhhubj)}(hThe core of the input subsystem is the input module, which must be loaded before any other of the input modules - it serves as a way of communication between two groups of modules:h]hThe core of the input subsystem is the input module, which must be loaded before any other of the input modules - it serves as a way of communication between two groups of modules:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubjM)}(hhh](jR)}(hDevice driversh]hDevice drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahKubj)}(hThese modules talk to the hardware (for example via USB), and provide events (keystrokes, mouse movements) to the input module.h]hThese modules talk to the hardware (for example via USB), and provide events (keystrokes, mouse movements) to the input module.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubeh}(h]device-driversah ]h"]h$]device driversah&]uh1jLhjhhhjahK referencedKubjM)}(hhh](jR)}(hEvent handlersh]hEvent handlers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahKubj)}(hThese modules get events from input core and pass them where needed via various interfaces - keystrokes to the kernel, mouse movements via a simulated PS/2 interface to GPM and X, and so on.h]hThese modules get events from input core and pass them where needed via various interfaces - keystrokes to the kernel, mouse movements via a simulated PS/2 interface to GPM and X, and so on.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubeh}(h]event-handlersah ]h"]h$]event handlersah&]uh1jLhjhhhjahKjKubeh}(h] architectureah ]h"] architectureah$]h&]uh1jLhjNhhhjahK ubjM)}(hhh](jR)}(h Simple Usageh]h Simple Usage}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjBhhhjahK#ubj)}(hFor the most usual configuration, with one USB mouse and one USB keyboard, you'll have to load the following modules (or have them built in to the kernel)::h]hFor the most usual configuration, with one USB mouse and one USB keyboard, you’ll have to load the following modules (or have them built in to the kernel):}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK%hjBhhubh literal_block)}(hJinput mousedev usbcore uhci_hcd or ohci_hcd or ehci_hcd usbhid hid_generich]hJinput mousedev usbcore uhci_hcd or ohci_hcd or ehci_hcd usbhid hid_generic}hjcsbah}(h]h ]h"]h$]h&]hhuh1jahjahK)hjBhhubj)}(hAfter this, the USB keyboard will work straight away, and the USB mouse will be available as a character device on major 13, minor 63::h]hAfter this, the USB keyboard will work straight away, and the USB mouse will be available as a character device on major 13, minor 63:}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK0hjBhhubjb)}(h;crw-r--r-- 1 root root 13, 63 Mar 28 22:45 miceh]h;crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice}hjsbah}(h]h ]h"]h$]h&]hhuh1jahjahK3hjBhhubj)}(hcThis device is usually created automatically by the system. The commands to create it by hand are::h]hbThis device is usually created automatically by the system. The commands to create it by hand are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK5hjBhhubjb)}(h,cd /dev mkdir input mknod input/mice c 13 63h]h,cd /dev mkdir input mknod input/mice c 13 63}hjsbah}(h]h ]h"]h$]h&]hhuh1jahjahK8hjBhhubj)}(hAfter that you have to point GPM (the textmode mouse cut&paste tool) and XFree to this device to use it - GPM should be called like::h]hAfter that you have to point GPM (the textmode mouse cut&paste tool) and XFree to this device to use it - GPM should be called like:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj8ubh is the generic input event interface. It passes the events generated in the kernel straight to the program, with timestamps. The event codes are the same on all architectures and are hardware independent.}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKWhj'hhubj)}(hnThis is the preferred interface for userspace to consume user input, and all clients are encouraged to use it.h]hnThis is the preferred interface for userspace to consume user input, and all clients are encouraged to use it.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK\hj'hhubj)}(h,See :ref:`event-interface` for notes on API.h](hSee }(hjdhhhNhNubh)}(h:ref:`event-interface`h]hinline)}(hjnh]hevent-interface}(hjrhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]refdoc input/input refdomainj}reftyperef refexplicitrefwarn reftargetevent-interfaceuh1hhjahK_hjdubh for notes on API.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahK_hj'hhubj)}(hThe devices are in /dev/input::h]hThe devices are in /dev/input:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKahj'hhubjb)}(hcrw-r--r-- 1 root root 13, 64 Apr 1 10:49 event0 crw-r--r-- 1 root root 13, 65 Apr 1 10:50 event1 crw-r--r-- 1 root root 13, 66 Apr 1 10:50 event2 crw-r--r-- 1 root root 13, 67 Apr 1 10:50 event3 ...h]hcrw-r--r-- 1 root root 13, 64 Apr 1 10:49 event0 crw-r--r-- 1 root root 13, 65 Apr 1 10:50 event1 crw-r--r-- 1 root root 13, 66 Apr 1 10:50 event2 crw-r--r-- 1 root root 13, 67 Apr 1 10:50 event3 ...}hjsbah}(h]h ]h"]h$]h&]hhuh1jahjahKchj'hhubj)}(hThere are two ranges of minors: 64 through 95 is the static legacy range. If there are more than 32 input devices in a system, additional evdev nodes are created with minors starting with 256.h]hThere are two ranges of minors: 64 through 95 is the static legacy range. If there are more than 32 input devices in a system, additional evdev nodes are created with minors starting with 256.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKihj'hhubeh}(h]evdevah ]h"]evdevah$]h&]uh1jLhjhhhjahKUubjM)}(hhh](jR)}(hkeyboardh]hkeyboard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahKnubj)}(h``keyboard`` is in-kernel input handler and is a part of VT code. It consumes keyboard keystrokes and handles user input for VT consoles.h](j=)}(h ``keyboard``h]hkeyboard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hjubh} is in-kernel input handler and is a part of VT code. It consumes keyboard keystrokes and handles user input for VT consoles.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKphjhhubeh}(h]keyboardah ]h"]keyboardah$]h&]uh1jLhjhhhjahKnubjM)}(hhh](jR)}(hmousedevh]hmousedev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahKtubj)}(h``mousedev`` is a hack to make legacy programs that use mouse input work. It takes events from either mice or digitizers/tablets and makes a PS/2-style (a la /dev/psaux) mouse device available to the userland.h](j=)}(h ``mousedev``h]hmousedev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hjubh is a hack to make legacy programs that use mouse input work. It takes events from either mice or digitizers/tablets and makes a PS/2-style (a la /dev/psaux) mouse device available to the userland.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKvhjhhubj)}(h5Mousedev devices in /dev/input (as shown above) are::h]h4Mousedev devices in /dev/input (as shown above) are:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahK{hjhhubjb)}(hXzcrw-r--r-- 1 root root 13, 32 Mar 28 22:45 mouse0 crw-r--r-- 1 root root 13, 33 Mar 29 00:41 mouse1 crw-r--r-- 1 root root 13, 34 Mar 29 00:41 mouse2 crw-r--r-- 1 root root 13, 35 Apr 1 10:50 mouse3 ... ... crw-r--r-- 1 root root 13, 62 Apr 1 10:50 mouse30 crw-r--r-- 1 root root 13, 63 Apr 1 10:50 miceh]hXzcrw-r--r-- 1 root root 13, 32 Mar 28 22:45 mouse0 crw-r--r-- 1 root root 13, 33 Mar 29 00:41 mouse1 crw-r--r-- 1 root root 13, 34 Mar 29 00:41 mouse2 crw-r--r-- 1 root root 13, 35 Apr 1 10:50 mouse3 ... ... crw-r--r-- 1 root root 13, 62 Apr 1 10:50 mouse30 crw-r--r-- 1 root root 13, 63 Apr 1 10:50 mice}hj=sbah}(h]h ]h"]h$]h&]hhuh1jahjahK}hjhhubj)}(hXjEach ``mouse`` device is assigned to a single mouse or digitizer, except the last one - ``mice``. This single character device is shared by all mice and digitizers, and even if none are connected, the device is present. This is useful for hotplugging USB mice, so that older programs that do not handle hotplug can open the device even when no mice are present.h](hEach }(hjKhhhNhNubj=)}(h ``mouse``h]hmouse}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j<hjKubhJ device is assigned to a single mouse or digitizer, except the last one - }(hjKhhhNhNubj=)}(h``mice``h]hmice}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j<hjKubhX . This single character device is shared by all mice and digitizers, and even if none are connected, the device is present. This is useful for hotplugging USB mice, so that older programs that do not handle hotplug can open the device even when no mice are present.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhjhhubj)}(hX@CONFIG_INPUT_MOUSEDEV_SCREEN_[XY] in the kernel configuration are the size of your screen (in pixels) in XFree86. This is needed if you want to use your digitizer in X, because its movement is sent to X via a virtual PS/2 mouse and thus needs to be scaled accordingly. These values won't be used if you use a mouse only.h]hXBCONFIG_INPUT_MOUSEDEV_SCREEN_[XY] in the kernel configuration are the size of your screen (in pixels) in XFree86. This is needed if you want to use your digitizer in X, because its movement is sent to X via a virtual PS/2 mouse and thus needs to be scaled accordingly. These values won’t be used if you use a mouse only.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubj)}(hXVMousedev will generate either PS/2, ImPS/2 (Microsoft IntelliMouse) or ExplorerPS/2 (IntelliMouse Explorer) protocols, depending on what the program reading the data wishes. You can set GPM and X to any of these. You'll need ImPS/2 if you want to make use of a wheel on a USB mouse and ExplorerPS/2 if you want to use extra (up to 5) buttons.h]hXXMousedev will generate either PS/2, ImPS/2 (Microsoft IntelliMouse) or ExplorerPS/2 (IntelliMouse Explorer) protocols, depending on what the program reading the data wishes. You can set GPM and X to any of these. You’ll need ImPS/2 if you want to make use of a wheel on a USB mouse and ExplorerPS/2 if you want to use extra (up to 5) buttons.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubeh}(h]mousedevah ]h"]mousedevah$]h&]uh1jLhjhhhjahKtubjM)}(hhh](jR)}(hjoydevh]hjoydev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjhhhjahKubj)}(h\``joydev`` implements v0.x and v1.x Linux joystick API. See :ref:`joystick-api` for details.h](j=)}(h ``joydev``h]hjoydev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hjubh2 implements v0.x and v1.x Linux joystick API. See }(hjhhhNhNubh)}(h:ref:`joystick-api`h]jq)}(hjh]h joystick-api}(hjhhhNhNubah}(h]h ](j|stdstd-refeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj joystick-apiuh1hhjahKhjubh for details.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhjhhubj)}(hKAs soon as any joystick is connected, it can be accessed in /dev/input on::h]hJAs soon as any joystick is connected, it can be accessed in /dev/input on:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubjb)}(hcrw-r--r-- 1 root root 13, 0 Apr 1 10:50 js0 crw-r--r-- 1 root root 13, 1 Apr 1 10:50 js1 crw-r--r-- 1 root root 13, 2 Apr 1 10:50 js2 crw-r--r-- 1 root root 13, 3 Apr 1 10:50 js3 ...h]hcrw-r--r-- 1 root root 13, 0 Apr 1 10:50 js0 crw-r--r-- 1 root root 13, 1 Apr 1 10:50 js1 crw-r--r-- 1 root root 13, 2 Apr 1 10:50 js2 crw-r--r-- 1 root root 13, 3 Apr 1 10:50 js3 ...}hj sbah}(h]h ]h"]h$]h&]hhuh1jahjahKhjhhubj)}(htAnd so on up to js31 in legacy range, and additional nodes with minors above 256 if there are more joystick devices.h]htAnd so on up to js31 in legacy range, and additional nodes with minors above 256 if there are more joystick devices.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjhhubeh}(h]joydevah ]h"]joydevah$]h&]uh1jLhjhhhjahKubeh}(h]id1ah ]h"]h$]j8ah&]uh1jLhjhhhjahKOjKubjM)}(hhh](jR)}(hDevice driversh]hDevice drivers}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj+ hhhjahKubj)}(h4Device drivers are the modules that generate events.h]h4Device drivers are the modules that generate events.}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj+ hhubjM)}(hhh](jR)}(h hid-generich]h hid-generic}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjJ hhhjahKubj)}(h``hid-generic`` is one of the largest and most complex driver of the whole suite. It handles all HID devices, and because there is a very wide variety of them, and because the USB HID specification isn't simple, it needs to be this big.h](j=)}(h``hid-generic``h]h hid-generic}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj[ ubh is one of the largest and most complex driver of the whole suite. It handles all HID devices, and because there is a very wide variety of them, and because the USB HID specification isn’t simple, it needs to be this big.}(hj[ hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubj)}(hkCurrently, it handles USB mice, joysticks, gamepads, steering wheels, keyboards, trackballs and digitizers.h]hkCurrently, it handles USB mice, joysticks, gamepads, steering wheels, keyboards, trackballs and digitizers.}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubj)}(hfHowever, USB uses HID also for monitor controls, speaker controls, UPSs, LCDs and many other purposes.h]hfHowever, USB uses HID also for monitor controls, speaker controls, UPSs, LCDs and many other purposes.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubj)}(hThe monitor and speaker controls should be easy to add to the hid/input interface, but for the UPSs and LCDs it doesn't make much sense. For this, the hiddev interface was designed. See Documentation/hid/hiddev.rst for more information about it.h]hThe monitor and speaker controls should be easy to add to the hid/input interface, but for the UPSs and LCDs it doesn’t make much sense. For this, the hiddev interface was designed. See Documentation/hid/hiddev.rst for more information about it.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubj)}(hThe usage of the usbhid module is very simple, it takes no parameters, detects everything automatically and when a HID device is inserted, it detects it appropriately.h]hThe usage of the usbhid module is very simple, it takes no parameters, detects everything automatically and when a HID device is inserted, it detects it appropriately.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubj)}(hHowever, because the devices vary wildly, you might happen to have a device that doesn't work well. In that case #define DEBUG at the beginning of hid-core.c and send me the syslog traces.h]hHowever, because the devices vary wildly, you might happen to have a device that doesn’t work well. In that case #define DEBUG at the beginning of hid-core.c and send me the syslog traces.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjJ hhubeh}(h] hid-genericah ]h"] hid-genericah$]h&]uh1jLhj+ hhhjahKubjM)}(hhh](jR)}(husbmouseh]husbmouse}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj hhhjahKubj)}(hXoFor embedded systems, for mice with broken HID descriptors and just any other use when the big usbhid wouldn't be a good choice, there is the usbmouse driver. It handles USB mice only. It uses a simpler HIDBP protocol. This also means the mice must support this simpler protocol. Not all do. If you don't have any strong reason to use this module, use usbhid instead.h]hXsFor embedded systems, for mice with broken HID descriptors and just any other use when the big usbhid wouldn’t be a good choice, there is the usbmouse driver. It handles USB mice only. It uses a simpler HIDBP protocol. This also means the mice must support this simpler protocol. Not all do. If you don’t have any strong reason to use this module, use usbhid instead.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj hhubeh}(h]usbmouseah ]h"]usbmouseah$]h&]uh1jLhj+ hhhjahKubjM)}(hhh](jR)}(husbkbdh]husbkbd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj hhhjahKubj)}(hMuch like usbmouse, this module talks to keyboards with a simplified HIDBP protocol. It's smaller, but doesn't support any extra special keys. Use usbhid instead if there isn't any special reason to use this.h]hMuch like usbmouse, this module talks to keyboards with a simplified HIDBP protocol. It’s smaller, but doesn’t support any extra special keys. Use usbhid instead if there isn’t any special reason to use this.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj hhubeh}(h]usbkbdah ]h"]usbkbdah$]h&]uh1jLhj+ hhhjahKubjM)}(hhh](jR)}(hpsmouseh]hpsmouse}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj hhhjahKubj)}(hThis is driver for all flavors of pointing devices using PS/2 protocol, including Synaptics and ALPS touchpads, Intellimouse Explorer devices, Logitech PS/2 mice and so on.h]hThis is driver for all flavors of pointing devices using PS/2 protocol, including Synaptics and ALPS touchpads, Intellimouse Explorer devices, Logitech PS/2 mice and so on.}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj hhubeh}(h]psmouseah ]h"]psmouseah$]h&]uh1jLhj+ hhhjahKubjM)}(hhh](jR)}(hatkbdh]hatkbd}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj: hhhjahKubj)}(h'This is driver for PS/2 (AT) keyboards.h]h'This is driver for PS/2 (AT) keyboards.}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj: hhubeh}(h]atkbdah ]h"]atkbdah$]h&]uh1jLhj+ hhhjahKubjM)}(hhh](jR)}(hiforceh]hiforce}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhja hhhjahKubj)}(hA driver for I-Force joysticks and wheels, both over USB and RS232. It includes Force Feedback support now, even though Immersion Corp. considers the protocol a trade secret and won't disclose a word about it.h]hA driver for I-Force joysticks and wheels, both over USB and RS232. It includes Force Feedback support now, even though Immersion Corp. considers the protocol a trade secret and won’t disclose a word about it.}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhja hhubeh}(h]iforceah ]h"]iforceah$]h&]uh1jLhj+ hhhjahKubeh}(h]id2ah ]h"]h$]jah&]uh1jLhjhhhjahKjKubeh}(h]detailed-descriptionah ]h"]detailed descriptionah$]h&]uh1jLhjNhhhjahKLubjM)}(hhh](jR)}(hVerifying if it worksh]hVerifying if it works}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj hhhjahKubj)}(hTyping a couple keys on the keyboard should be enough to check that a keyboard works and is correctly connected to the kernel keyboard driver.h]hTyping a couple keys on the keyboard should be enough to check that a keyboard works and is correctly connected to the kernel keyboard driver.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhj hhubj)}(hDoing a ``cat /dev/input/mouse0`` (c, 13, 32) will verify that a mouse is also emulated; characters should appear if you move it.h](hDoing a }(hj hhhNhNubj=)}(h``cat /dev/input/mouse0``h]hcat /dev/input/mouse0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj ubh` (c, 13, 32) will verify that a mouse is also emulated; characters should appear if you move it.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhj hhubj)}(h}You can test the joystick emulation with the ``jstest`` utility, available in the joystick package (see :ref:`joystick-doc`).h](h-You can test the joystick emulation with the }(hj hhhNhNubj=)}(h ``jstest``h]hjstest}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj ubh1 utility, available in the joystick package (see }(hj hhhNhNubh)}(h:ref:`joystick-doc`h]jq)}(hj h]h joystick-doc}(hj hhhNhNubah}(h]h ](j|stdstd-refeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnj joystick-docuh1hhjahKhj ubh).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhj hhubj)}(h;You can test the event devices with the ``evtest`` utility.h](h(You can test the event devices with the }(hj hhhNhNubj=)}(h ``evtest``h]hevtest}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj ubh utility.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahKhj hhubhtarget)}(h.. _event-interface:h]h}(h]h ]h"]h$]h&]refidevent-interfaceuh1j: hMThj hhhjaubeh}(h]verifying-if-it-worksah ]h"]verifying if it worksah$]h&]uh1jLhjNhhhjahKubjM)}(hhh](jR)}(hEvent interfaceh]hEvent interface}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjP hhhjahMubj)}(hYou can use blocking and nonblocking reads, and also select() on the /dev/input/eventX devices, and you'll always get a whole number of input events on a read. Their layout is::h]hYou can use blocking and nonblocking reads, and also select() on the /dev/input/eventX devices, and you’ll always get a whole number of input events on a read. Their layout is:}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahMhjP hhubjb)}(hstruct input_event { struct timeval time; unsigned short type; unsigned short code; int value; };h]hstruct input_event { struct timeval time; unsigned short type; unsigned short code; int value; };}hjo sbah}(h]h ]h"]h$]h&]hhuh1jahjahMhjP hhubj)}(h``time`` is the timestamp, it returns the time at which the event happened. Type is for example EV_REL for relative movement, EV_KEY for a keypress or release. More types are defined in include/uapi/linux/input-event-codes.h.h](j=)}(h``time``h]htime}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj} ubh is the timestamp, it returns the time at which the event happened. Type is for example EV_REL for relative movement, EV_KEY for a keypress or release. More types are defined in include/uapi/linux/input-event-codes.h.}(hj} hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahMhjP hhubj)}(h``code`` is event code, for example REL_X or KEY_BACKSPACE, again a complete list is in include/uapi/linux/input-event-codes.h.h](j=)}(h``code``h]hcode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj ubhw is event code, for example REL_X or KEY_BACKSPACE, again a complete list is in include/uapi/linux/input-event-codes.h.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahMhjP hhubj)}(h``value`` is the value the event carries. Either a relative change for EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for release, 1 for keypress and 2 for autorepeat.h](j=)}(h ``value``h]hvalue}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j<hj ubh is the value the event carries. Either a relative change for EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for release, 1 for keypress and 2 for autorepeat.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahMhjP hhubj)}(hLSee :ref:`input-event-codes` for more information about various event codes.h](hSee }(hj hhhNhNubh)}(h:ref:`input-event-codes`h]jq)}(hj h]hinput-event-codes}(hj hhhNhNubah}(h]h ](j|stdstd-refeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnjinput-event-codesuh1hhjahMhj ubh0 for more information about various event codes.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjahMhjP hhubeh}(h](jG id3eh ]h"](event interfaceevent-interfaceeh$]h&]uh1jLhjNhhhjahMexpect_referenced_by_name}j j< sexpect_referenced_by_id}jG j< subeh}(h] introductionah ]h"] introductionah$]h&]uh1jLhhhhhjahKubeh}(h]h ]h"]h$]h&]sourcejauh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jQN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj; error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceja _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhhhjhjjj jj/j#j>j2jMjAj\jPjkj_jzjnjj}jjjjjjjjjjjjjjjjjjjjj.j"j=j1jLj@j[jOjjj^jyjmjj|jjjjjjjjjjjjjjjjjjjjj-j!j<j0jKj?jZjNjij]jxjljj{jjjjjjjjjjjjjjjjjjjjj,j j;j/jJj>jYjMjhj\jwjkjjzjjjjjjjjjjjjjjjjj jjjj+jj:j.jIj=usubstitution_names}(amphaposhastjbrvbarjbsolj centj/colonj>commajMcommatj\copyjkcurrenjzdarrjdegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34jfrac38jfrac58j.frac78j=gtjLhalfj[horbarjjhyphenjyiexcljiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquojltjmicroj-middotj<nbspjKnotjZnumjiohmjxordfjordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotjraquojrarrj,rcubj;rdquojJregjYrparjhrsqbjwrsquojsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesj tradejuarrj+verbarj:yenjIurefnames}refids}jG ]j< asnameids}(j j j?j<device driversNevent handlersNjjj j jjjjjjj! j j j j j j j j7 j4 j^ j[ j j jM jJ j jG j j u nametypes}(j j?j j jj jjjj! j j j j7 j^ j jM j j uh}(j jNj<jj jj4jjjBj jj& jjj'jjjjj jj j+ j jJ j j j j j4 j j[ j: j ja jJ j jG jP j jP u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jI KsRparse_messages](hsystem_message)}(hhh]j)}(h1Duplicate implicit target name: "event handlers".h]h5Duplicate implicit target name: “event handlers”.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]j& alevelKtypeINFOsourcejalineKOuh1j hjhhhjahKOubj )}(hhh]j)}(h1Duplicate implicit target name: "device drivers".h]h5Duplicate implicit target name: “device drivers”.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]j alevelKtypej sourcejalineKuh1j hj+ hhhjahKubetransform_messages]j )}(hhh]j)}(hhh]h5Hyperlink target "event-interface" is not referenced.}hj* sbah}(h]h ]h"]h$]h&]uh1jhj' ubah}(h]h ]h"]h$]h&]levelKtypej sourcejalineMTuh1j uba transformerN include_log]Documentation/input/input.rst(NNNNta decorationNhhub.