€•>ÄŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/input/input”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ4This data file has been placed in the public domain.”h]”hŒ4This data file has been placed in the public domain.”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œo/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt”h´Kubh¶)�”}”(hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”h]”hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsubstitution_definition”“”)�”}”(hŒ*.. |amp| unicode:: U+00026 .. AMPERSAND”h]”hŒ&”…”�”}”hhØsbah}”(h]”h ]”h"]”Œamp”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ+.. |apos| unicode:: U+00027 .. APOSTROPHE”h]”hŒ'”…”�”}”hhçsbah}”(h]”h ]”h"]”Œapos”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ).. |ast| unicode:: U+0002A .. ASTERISK”h]”hŒ*”…”�”}”hhösbah}”(h]”h ]”h"]”Œast”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ+.. |brvbar| unicode:: U+000A6 .. BROKEN BAR”h]”hŒ¦”…”�”}”hjsbah}”(h]”h ]”h"]”Œbrvbar”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUS”h]”hŒ\”…”�”}”hjsbah}”(h]”h ]”h"]”Œbsol”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ*.. |cent| unicode:: U+000A2 .. CENT SIGN”h]”hŒ¢”…”�”}”hj#sbah}”(h]”h ]”h"]”Œcent”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ&.. |colon| unicode:: U+0003A .. COLON”h]”hŒ:”…”�”}”hj2sbah}”(h]”h ]”h"]”Œcolon”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ&.. |comma| unicode:: U+0002C .. COMMA”h]”hŒ,”…”�”}”hjAsbah}”(h]”h ]”h"]”Œcomma”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ... |commat| unicode:: U+00040 .. COMMERCIAL AT”h]”hŒ@”…”�”}”hjPsbah}”(h]”h ]”h"]”Œcommat”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN”h]”hŒ©”…”�”}”hj_sbah}”(h]”h ]”h"]”Œcopy”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ... |curren| unicode:: U+000A4 .. CURRENCY SIGN”h]”hŒ¤”…”�”}”hjnsbah}”(h]”h ]”h"]”Œcurren”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROW”h]”hŒ↓”…”�”}”hj}sbah}”(h]”h ]”h"]”Œdarr”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ,.. |deg| unicode:: U+000B0 .. DEGREE SIGN”h]”hŒ°”…”�”}”hjŒsbah}”(h]”h ]”h"]”Œdeg”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ... |divide| unicode:: U+000F7 .. DIVISION SIGN”h]”hŒ÷”…”�”}”hj›sbah}”(h]”h ]”h"]”Œdivide”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ,.. |dollar| unicode:: U+00024 .. DOLLAR SIGN”h]”hŒ$”…”�”}”hjªsbah}”(h]”h ]”h"]”Œdollar”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ,.. |equals| unicode:: U+0003D .. EQUALS SIGN”h]”hŒ=”…”�”}”hj¹sbah}”(h]”h ]”h"]”Œequals”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ1.. |excl| unicode:: U+00021 .. EXCLAMATION MARK”h]”hŒ!”…”�”}”hjÈsbah}”(h]”h ]”h"]”Œexcl”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hj×sbah}”(h]”h ]”h"]”Œfrac12”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTER”h]”hŒ¼”…”�”}”hjæsbah}”(h]”h ]”h"]”Œfrac14”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTH”h]”hŒâ…›”…”�”}”hjõsbah}”(h]”h ]”h"]”Œfrac18”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERS”h]”hŒ¾”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac34”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHS”h]”hŒâ…œ”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac38”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHS”h]”hŒâ…�”…”�”}”hj"sbah}”(h]”h ]”h"]”Œfrac58”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHS”h]”hŒâ…ž”…”�”}”hj1sbah}”(h]”h ]”h"]”Œfrac78”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGN”h]”hŒ>”…”�”}”hj@sbah}”(h]”h ]”h"]”Œgt”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hjOsbah}”(h]”h ]”h"]”Œhalf”ah$]”h&]”uh1hÖh³hÇh´K hhh²hubh×)�”}”(hŒ/.. |horbar| unicode:: U+02015 .. HORIZONTAL BAR”h]”hŒ―”…”�”}”hj^sbah}”(h]”h ]”h"]”Œhorbar”ah$]”h&]”uh1hÖh³hÇh´K!hhh²hubh×)�”}”(hŒ'.. |hyphen| unicode:: U+02010 .. HYPHEN”h]”hŒâ€�”…”�”}”hjmsbah}”(h]”h ]”h"]”Œhyphen”ah$]”h&]”uh1hÖh³hÇh´K"hhh²hubh×)�”}”(hŒ:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARK”h]”hŒ¡”…”�”}”hj|sbah}”(h]”h ]”h"]”Œiexcl”ah$]”h&]”uh1hÖh³hÇh´K#hhh²hubh×)�”}”(hŒ7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARK”h]”hŒ¿”…”�”}”hj‹sbah}”(h]”h ]”h"]”Œiquest”ah$]”h&]”uh1hÖh³hÇh´K$hhh²hubh×)�”}”(hŒJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARK”h]”hŒ«”…”�”}”hjšsbah}”(h]”h ]”h"]”Œlaquo”ah$]”h&]”uh1hÖh³hÇh´K%hhh²hubh×)�”}”(hŒ0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROW”h]”hŒâ†�”…”�”}”hj©sbah}”(h]”h ]”h"]”Œlarr”ah$]”h&]”uh1hÖh³hÇh´K&hhh²hubh×)�”}”(hŒ3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKET”h]”hŒ{”…”�”}”hj¸sbah}”(h]”h ]”h"]”Œlcub”ah$]”h&]”uh1hÖh³hÇh´K'hhh²hubh×)�”}”(hŒ;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARK”h]”hŒ“”…”�”}”hjÇsbah}”(h]”h ]”h"]”Œldquo”ah$]”h&]”uh1hÖh³hÇh´K(hhh²hubh×)�”}”(hŒ).. |lowbar| unicode:: U+0005F .. LOW LINE”h]”hŒ_”…”�”}”hjÖsbah}”(h]”h ]”h"]”Œlowbar”ah$]”h&]”uh1hÖh³hÇh´K)hhh²hubh×)�”}”(hŒ1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESIS”h]”hŒ(”…”�”}”hjåsbah}”(h]”h ]”h"]”Œlpar”ah$]”h&]”uh1hÖh³hÇh´K*hhh²hubh×)�”}”(hŒ4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKET”h]”hŒ[”…”�”}”hjôsbah}”(h]”h ]”h"]”Œlsqb”ah$]”h&]”uh1hÖh³hÇh´K+hhh²hubh×)�”}”(hŒ;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARK”h]”hŒ‘”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsquo”ah$]”h&]”uh1hÖh³hÇh´K,hhh²hubh×)�”}”(hŒ/.. |lt| unicode:: U+0003C .. LESS-THAN SIGN”h]”hŒ<”…”�”}”hjsbah}”(h]”h ]”h"]”Œlt”ah$]”h&]”uh1hÖh³hÇh´K-hhh²hubh×)�”}”(hŒ+.. |micro| unicode:: U+000B5 .. MICRO SIGN”h]”hŒµ”…”�”}”hj!sbah}”(h]”h ]”h"]”Œmicro”ah$]”h&]”uh1hÖh³hÇh´K.hhh²hubh×)�”}”(hŒ+.. |middot| unicode:: U+000B7 .. MIDDLE DOT”h]”hŒ·”…”�”}”hj0sbah}”(h]”h ]”h"]”Œmiddot”ah$]”h&]”uh1hÖh³hÇh´K/hhh²hubh×)�”}”(hŒ/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACE”h]”hŒ ”…”�”}”hj?sbah}”(h]”h ]”h"]”Œnbsp”ah$]”h&]”uh1hÖh³hÇh´K0hhh²hubh×)�”}”(hŒ).. |not| unicode:: U+000AC .. NOT SIGN”h]”hŒ¬”…”�”}”hjNsbah}”(h]”h ]”h"]”Œnot”ah$]”h&]”uh1hÖh³hÇh´K1hhh²hubh×)�”}”(hŒ,.. |num| unicode:: U+00023 .. NUMBER SIGN”h]”hŒ#”…”�”}”hj]sbah}”(h]”h ]”h"]”Œnum”ah$]”h&]”uh1hÖh³hÇh´K2hhh²hubh×)�”}”(hŒ).. |ohm| unicode:: U+02126 .. OHM SIGN”h]”hŒΩ”…”�”}”hjlsbah}”(h]”h ]”h"]”Œohm”ah$]”h&]”uh1hÖh³hÇh´K3hhh²hubh×)�”}”(hŒ;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATOR”h]”hŒª”…”�”}”hj{sbah}”(h]”h ]”h"]”Œordf”ah$]”h&]”uh1hÖh³hÇh´K4hhh²hubh×)�”}”(hŒ<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATOR”h]”hŒº”…”�”}”hjŠsbah}”(h]”h ]”h"]”Œordm”ah$]”h&]”uh1hÖh³hÇh´K5hhh²hubh×)�”}”(hŒ-.. |para| unicode:: U+000B6 .. PILCROW SIGN”h]”hŒ¶”…”�”}”hj™sbah}”(h]”h ]”h"]”Œpara”ah$]”h&]”uh1hÖh³hÇh´K6hhh²hubh×)�”}”(hŒ-.. |percnt| unicode:: U+00025 .. PERCENT SIGN”h]”hŒ%”…”�”}”hj¨sbah}”(h]”h ]”h"]”Œpercnt”ah$]”h&]”uh1hÖh³hÇh´K7hhh²hubh×)�”}”(hŒ*.. |period| unicode:: U+0002E .. FULL STOP”h]”hŒ.”…”�”}”hj·sbah}”(h]”h ]”h"]”Œperiod”ah$]”h&]”uh1hÖh³hÇh´K8hhh²hubh×)�”}”(hŒ*.. |plus| unicode:: U+0002B .. PLUS SIGN”h]”hŒ+”…”�”}”hjÆsbah}”(h]”h ]”h"]”Œplus”ah$]”h&]”uh1hÖh³hÇh´K9hhh²hubh×)�”}”(hŒ0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGN”h]”hŒ±”…”�”}”hjÕsbah}”(h]”h ]”h"]”Œplusmn”ah$]”h&]”uh1hÖh³hÇh´K:hhh²hubh×)�”}”(hŒ+.. |pound| unicode:: U+000A3 .. POUND SIGN”h]”hŒ£”…”�”}”hjäsbah}”(h]”h ]”h"]”Œpound”ah$]”h&]”uh1hÖh³hÇh´K;hhh²hubh×)�”}”(hŒ... |quest| unicode:: U+0003F .. QUESTION MARK”h]”hŒ?”…”�”}”hjósbah}”(h]”h ]”h"]”Œquest”ah$]”h&]”uh1hÖh³hÇh´Khhh²hubh×)�”}”(hŒ1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROW”h]”hŒ→”…”�”}”hj sbah}”(h]”h ]”h"]”Œrarr”ah$]”h&]”uh1hÖh³hÇh´K?hhh²hubh×)�”}”(hŒ4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKET”h]”hŒ}”…”�”}”hj/sbah}”(h]”h ]”h"]”Œrcub”ah$]”h&]”uh1hÖh³hÇh´K@hhh²hubh×)�”}”(hŒ<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARK”h]”hŒâ€�”…”�”}”hj>sbah}”(h]”h ]”h"]”Œrdquo”ah$]”h&]”uh1hÖh³hÇh´KAhhh²hubh×)�”}”(hŒ0.. |reg| unicode:: U+000AE .. REGISTERED SIGN”h]”hŒ®”…”�”}”hjMsbah}”(h]”h ]”h"]”Œreg”ah$]”h&]”uh1hÖh³hÇh´KBhhh²hubh×)�”}”(hŒ2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESIS”h]”hŒ)”…”�”}”hj\sbah}”(h]”h ]”h"]”Œrpar”ah$]”h&]”uh1hÖh³hÇh´KChhh²hubh×)�”}”(hŒ5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKET”h]”hŒ]”…”�”}”hjksbah}”(h]”h ]”h"]”Œrsqb”ah$]”h&]”uh1hÖh³hÇh´KDhhh²hubh×)�”}”(hŒ<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARK”h]”hŒ’”…”�”}”hjzsbah}”(h]”h ]”h"]”Œrsquo”ah$]”h&]”uh1hÖh³hÇh´KEhhh²hubh×)�”}”(hŒ-.. |sect| unicode:: U+000A7 .. SECTION SIGN”h]”hŒ§”…”�”}”hj‰sbah}”(h]”h ]”h"]”Œsect”ah$]”h&]”uh1hÖh³hÇh´KFhhh²hubh×)�”}”(hŒ*.. |semi| unicode:: U+0003B .. SEMICOLON”h]”hŒ;”…”�”}”hj˜sbah}”(h]”h ]”h"]”Œsemi”ah$]”h&]”uh1hÖh³hÇh´KGhhh²hubh×)�”}”(hŒ,.. |shy| unicode:: U+000AD .. SOFT HYPHEN”h]”hŒ­”…”�”}”hj§sbah}”(h]”h ]”h"]”Œshy”ah$]”h&]”uh1hÖh³hÇh´KHhhh²hubh×)�”}”(hŒ(.. |sol| unicode:: U+0002F .. SOLIDUS”h]”hŒ/”…”�”}”hj¶sbah}”(h]”h ]”h"]”Œsol”ah$]”h&]”uh1hÖh³hÇh´KIhhh²hubh×)�”}”(hŒ,.. |sung| unicode:: U+0266A .. EIGHTH NOTE”h]”hŒ♪”…”�”}”hjÅsbah}”(h]”h ]”h"]”Œsung”ah$]”h&]”uh1hÖh³hÇh´KJhhh²hubh×)�”}”(hŒ0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONE”h]”hŒ¹”…”�”}”hjÔsbah}”(h]”h ]”h"]”Œsup1”ah$]”h&]”uh1hÖh³hÇh´KKhhh²hubh×)�”}”(hŒ0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWO”h]”hŒ²”…”�”}”hjãsbah}”(h]”h ]”h"]”Œsup2”ah$]”h&]”uh1hÖh³hÇh´KLhhh²hubh×)�”}”(hŒ2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREE”h]”hŒ³”…”�”}”hjòsbah}”(h]”h ]”h"]”Œsup3”ah$]”h&]”uh1hÖh³hÇh´KMhhh²hubh×)�”}”(hŒ4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGN”h]”hŒ×”…”�”}”hjsbah}”(h]”h ]”h"]”Œtimes”ah$]”h&]”uh1hÖh³hÇh´KNhhh²hubh×)�”}”(hŒ0.. |trade| unicode:: U+02122 .. TRADE MARK SIGN”h]”hŒâ„¢”…”�”}”hjsbah}”(h]”h ]”h"]”Œtrade”ah$]”h&]”uh1hÖh³hÇh´KOhhh²hubh×)�”}”(hŒ... |uarr| unicode:: U+02191 .. UPWARDS ARROW”h]”hŒ↑”…”�”}”hjsbah}”(h]”h ]”h"]”Œuarr”ah$]”h&]”uh1hÖh³hÇh´KPhhh²hubh×)�”}”(hŒ... |verbar| unicode:: U+0007C .. VERTICAL LINE”h]”hŒ|”…”�”}”hj.sbah}”(h]”h ]”h"]”Œverbar”ah$]”h&]”uh1hÖh³hÇh´KQhhh²hubh×)�”}”(hŒ*.. |yen| unicode:: U+000A5 .. YEN SIGN ”h]”hŒÂ¥”…”�”}”hj=sbah}”(h]”h ]”h"]”Œyen”ah$]”h&]”uh1hÖh³hÇh´KRhhh²hubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjNh²hh³Œ9/var/lib/git/docbuild/linux/Documentation/input/input.rst”h´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒ Copyright”h]”hŒ Copyright”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih³jah´KubhŒ field_body”“”)�”}”(hŒE|copy| 1999-2001 Vojtech Pavlik - Sponsored by SuSE ”h]”hŒ paragraph”“”)�”}”(hŒD|copy| 1999-2001 Vojtech Pavlik - Sponsored by SuSE”h]”(hŒ©”…”�”}”(hj„h²hh³Nh´NubhŒ 1999-2001 Vojtech Pavlik <”…”�”}”(hj„h²hh³Nh´NubhŒ reference”“”)�”}”(hŒvojtech@ucw.cz”h]”hŒvojtech@ucw.cz”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:vojtech@ucw.cz”uh1j�hj„ubhŒ> - Sponsored by SuSE”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Khj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jah´Khjdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhjNh²hh³jah´KubjM)�”}”(hhh]”(jR)�”}”(hŒ Architecture”h]”hŒ Architecture”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj¾h²hh³jah´K ubjƒ)�”}”(hŒÑInput 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]”hŒÑInput 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.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K hj¾h²hubjƒ)�”}”(hŒ´The 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]”hŒ´The 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:”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Khj¾h²hubjM)�”}”(hhh]”(jR)�”}”(hŒDevice drivers”h]”hŒDevice drivers”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjëh²hh³jah´Kubjƒ)�”}”(hŒThese modules talk to the hardware (for example via USB), and provide events (keystrokes, mouse movements) to the input module.”h]”hŒThese modules talk to the hardware (for example via USB), and provide events (keystrokes, mouse movements) to the input module.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Khjëh²hubeh}”(h]”Œdevice-drivers”ah ]”h"]”h$]”Œdevice drivers”ah&]”uh1jLhj¾h²hh³jah´KŒ referenced”KubjM)�”}”(hhh]”(jR)�”}”(hŒEvent handlers”h]”hŒEvent handlers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjh²hh³jah´Kubjƒ)�”}”(hŒ¾These 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]”hŒ¾These 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$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Khjh²hubeh}”(h]”Œevent-handlers”ah ]”h"]”h$]”Œevent handlers”ah&]”uh1jLhj¾h²hh³jah´KjKubeh}”(h]”Œ architecture”ah ]”h"]”Œ architecture”ah$]”h&]”uh1jLhjNh²hh³jah´K ubjM)�”}”(hhh]”(jR)�”}”(hŒ Simple Usage”h]”hŒ Simple Usage”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjBh²hh³jah´K#ubjƒ)�”}”(hŒœFor 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]”hŒ�For 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):”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K%hjBh²hubhŒ literal_block”“”)�”}”(hŒJinput mousedev usbcore uhci_hcd or ohci_hcd or ehci_hcd usbhid hid_generic”h]”hŒJinput mousedev usbcore uhci_hcd or ohci_hcd or ehci_hcd usbhid hid_generic”…”�”}”hjcsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³jah´K)hjBh²hubjƒ)�”}”(hŒ‡After 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]”hŒ†After this, the USB keyboard will work straight away, and the USB mouse will be available as a character device on major 13, minor 63:”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K0hjBh²hubjb)�”}”(hŒ;crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice”h]”hŒ;crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³jah´K3hjBh²hubjƒ)�”}”(hŒcThis device is usually created automatically by the system. The commands to create it by hand are::”h]”hŒbThis device is usually created automatically by the system. The commands to create it by hand are:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K5hjBh²hubjb)�”}”(hŒ,cd /dev mkdir input mknod input/mice c 13 63”h]”hŒ,cd /dev mkdir input mknod input/mice c 13 63”…”�”}”hj›sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³jah´K8hjBh²hubjƒ)�”}”(hŒ…After 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]”hŒ„After 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:”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kh²hh³Nh´Nubah}”(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.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KWhj'h²hubjƒ)�”}”(hŒnThis is the preferred interface for userspace to consume user input, and all clients are encouraged to use it.”h]”hŒnThis is the preferred interface for userspace to consume user input, and all clients are encouraged to use it.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K\hj'h²hubjƒ)�”}”(hŒ,See :ref:`event-interface` for notes on API.”h]”(hŒSee ”…”�”}”(hjdh²hh³Nh´Nubh)�”}”(hŒ:ref:`event-interface`”h]”hŒinline”“”)�”}”(hjnh]”hŒevent-interface”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jphjlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ input/input”Œ refdomain”j}Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œevent-interface”uh1hh³jah´K_hjdubhŒ for notes on API.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K_hj'h²hubjƒ)�”}”(hŒThe devices are in /dev/input::”h]”hŒThe devices are in /dev/input:”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kahj'h²hubjb)�”}”(hŒûcrw-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]”hŒûcrw-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 ...”…”�”}”hj©sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³jah´Kchj'h²hubjƒ)�”}”(hŒÀThere 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]”hŒÀThere 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.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kihj'h²hubeh}”(h]”Œevdev”ah ]”h"]”Œevdev”ah$]”h&]”uh1jLhjh²hh³jah´KUubjM)�”}”(hhh]”(jR)�”}”(hŒkeyboard”h]”hŒkeyboard”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÍh²hh³jah´Knubjƒ)�”}”(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]”hŒkeyboard”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hjÞubhŒ} is in-kernel input handler and is a part of VT code. It consumes keyboard keystrokes and handles user input for VT consoles.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KphjÍh²hubeh}”(h]”Œkeyboard”ah ]”h"]”Œkeyboard”ah$]”h&]”uh1jLhjh²hh³jah´KnubjM)�”}”(hhh]”(jR)�”}”(hŒmousedev”h]”hŒmousedev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjh²hh³jah´Ktubjƒ)�”}”(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]”hŒmousedev”…”�”}”(hjh²hh³Nh´Nubah}”(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.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kvhjh²hubjƒ)�”}”(hŒ5Mousedev devices in /dev/input (as shown above) are::”h]”hŒ4Mousedev devices in /dev/input (as shown above) are:”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K{hjh²hubjb)�”}”(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”h]”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&]”hÅhÆuh1jah³jah´K}hjh²hubjƒ)�”}”(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]”(hŒEach ”…”�”}”(hjKh²hh³Nh´Nubj=)�”}”(hŒ ``mouse``”h]”hŒmouse”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hjKubhŒJ device is assigned to a single mouse or digitizer, except the last one - ”…”�”}”(hjKh²hh³Nh´Nubj=)�”}”(hŒ``mice``”h]”hŒmice”…”�”}”(hjeh²hh³Nh´Nubah}”(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.”…”�”}”(hjKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K†hjh²hubjƒ)�”}”(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}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K�hjh²hubjƒ)�”}”(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.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K“hjh²hubeh}”(h]”Œmousedev”ah ]”h"]”Œmousedev”ah$]”h&]”uh1jLhjh²hh³jah´KtubjM)�”}”(hhh]”(jR)�”}”(hŒjoydev”h]”hŒjoydev”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj¡h²hh³jah´Kšubjƒ)�”}”(hŒ\``joydev`` implements v0.x and v1.x Linux joystick API. See :ref:`joystick-api` for details.”h]”(j=)�”}”(hŒ ``joydev``”h]”hŒjoydev”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hj²ubhŒ2 implements v0.x and v1.x Linux joystick API. See ”…”�”}”(hj²h²hh³Nh´Nubh)�”}”(hŒ:ref:`joystick-api`”h]”jq)�”}”(hjÊh]”hŒ joystick-api”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”(j|Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jphjÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‰Œ refdomain”jÖŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj�Œ joystick-api”uh1hh³jah´Kœhj²ubhŒ for details.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kœhj¡h²hubjƒ)�”}”(hŒKAs soon as any joystick is connected, it can be accessed in /dev/input on::”h]”hŒJAs soon as any joystick is connected, it can be accessed in /dev/input on:”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KŸhj¡h²hubjb)�”}”(hŒïcrw-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]”hŒïcrw-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&]”hÅhÆuh1jah³jah´K¡hj¡h²hubjƒ)�”}”(hŒtAnd so on up to js31 in legacy range, and additional nodes with minors above 256 if there are more joystick devices.”h]”hŒtAnd so on up to js31 in legacy range, and additional nodes with minors above 256 if there are more joystick devices.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K§hj¡h²hubeh}”(h]”Œjoydev”ah ]”h"]”Œjoydev”ah$]”h&]”uh1jLhjh²hh³jah´Kšubeh}”(h]”Œid1”ah ]”h"]”h$]”j8ah&]”uh1jLhj÷h²hh³jah´KOjKubjM)�”}”(hhh]”(jR)�”}”(hŒDevice drivers”h]”hŒDevice drivers”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj+ h²hh³jah´K«ubjƒ)�”}”(hŒ4Device drivers are the modules that generate events.”h]”hŒ4Device drivers are the modules that generate events.”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K­hj+ h²hubjM)�”}”(hhh]”(jR)�”}”(hŒ hid-generic”h]”hŒ hid-generic”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjJ h²hh³jah´K°ubjƒ)�”}”(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_ h²hh³Nh´Nubah}”(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[ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K²hjJ h²hubjƒ)�”}”(hŒkCurrently, it handles USB mice, joysticks, gamepads, steering wheels, keyboards, trackballs and digitizers.”h]”hŒkCurrently, it handles USB mice, joysticks, gamepads, steering wheels, keyboards, trackballs and digitizers.”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K·hjJ h²hubjƒ)�”}”(hŒfHowever, USB uses HID also for monitor controls, speaker controls, UPSs, LCDs and many other purposes.”h]”hŒfHowever, USB uses HID also for monitor controls, speaker controls, UPSs, LCDs and many other purposes.”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KºhjJ h²hubjƒ)�”}”(hŒõThe 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]”hŒ÷The 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“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K½hjJ h²hubjƒ)�”}”(hŒ§The 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]”hŒ§The 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¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KÂhjJ h²hubjƒ)�”}”(hŒ¼However, 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]”hŒ¾However, 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¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KÆhjJ h²hubeh}”(h]”Œ hid-generic”ah ]”h"]”Œ hid-generic”ah$]”h&]”uh1jLhj+ h²hh³jah´K°ubjM)�”}”(hhh]”(jR)�”}”(hŒusbmouse”h]”hŒusbmouse”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÅ h²hh³jah´KËubjƒ)�”}”(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Ö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KÍhjÅ h²hubeh}”(h]”Œusbmouse”ah ]”h"]”Œusbmouse”ah$]”h&]”uh1jLhj+ h²hh³jah´KËubjM)�”}”(hhh]”(jR)�”}”(hŒusbkbd”h]”hŒusbkbd”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjì h²hh³jah´KÕubjƒ)�”}”(hŒÐMuch 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]”hŒÖMuch 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ý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´K×hjì h²hubeh}”(h]”Œusbkbd”ah ]”h"]”Œusbkbd”ah$]”h&]”uh1jLhj+ h²hh³jah´KÕubjM)�”}”(hhh]”(jR)�”}”(hŒpsmouse”h]”hŒpsmouse”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj h²hh³jah´KÜubjƒ)�”}”(hŒ¬This 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]”hŒ¬This 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$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´KÞhj h²hubeh}”(h]”Œpsmouse”ah ]”h"]”Œpsmouse”ah$]”h&]”uh1jLhj+ h²hh³jah´KÜubjM)�”}”(hhh]”(jR)�”}”(hŒatkbd”h]”hŒatkbd”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj: h²hh³jah´Kãubjƒ)�”}”(hŒ'This is driver for PS/2 (AT) keyboards.”h]”hŒ'This is driver for PS/2 (AT) keyboards.”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kåhj: h²hubeh}”(h]”Œatkbd”ah ]”h"]”Œatkbd”ah$]”h&]”uh1jLhj+ h²hh³jah´KãubjM)�”}”(hhh]”(jR)�”}”(hŒiforce”h]”hŒiforce”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhja h²hh³jah´Kèubjƒ)�”}”(hŒÑA 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]”hŒÓA 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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kêhja h²hubeh}”(h]”Œiforce”ah ]”h"]”Œiforce”ah$]”h&]”uh1jLhj+ h²hh³jah´Kèubeh}”(h]”Œid2”ah ]”h"]”h$]”jah&]”uh1jLhj÷h²hh³jah´K«jKubeh}”(h]”Œdetailed-description”ah ]”h"]”Œdetailed description”ah$]”h&]”uh1jLhjNh²hh³jah´KLubjM)�”}”(hhh]”(jR)�”}”(hŒVerifying if it works”h]”hŒVerifying if it works”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj— h²hh³jah´Kðubjƒ)�”}”(hŒŽTyping 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]”hŒŽTyping 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¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kòhj— h²hubjƒ)�”}”(hŒ�Doing a ``cat /dev/input/mouse0`` (c, 13, 32) will verify that a mouse is also emulated; characters should appear if you move it.”h]”(hŒDoing a ”…”�”}”(hj¶ h²hh³Nh´Nubj=)�”}”(hŒ``cat /dev/input/mouse0``”h]”hŒcat /dev/input/mouse0”…”�”}”(hj¾ h²hh³Nh´Nubah}”(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¶ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Köhj— h²hubjƒ)�”}”(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Ö h²hh³Nh´Nubj=)�”}”(hŒ ``jstest``”h]”hŒjstest”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hjÖ ubhŒ1 utility, available in the joystick package (see ”…”�”}”(hjÖ h²hh³Nh´Nubh)�”}”(hŒ:ref:`joystick-doc`”h]”jq)�”}”(hjò h]”hŒ joystick-doc”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”(j|Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jphjð ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‰Œ refdomain”jþ Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj�Œ joystick-doc”uh1hh³jah´KùhjÖ ubhŒ).”…”�”}”(hjÖ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kùhj— h²hubjƒ)�”}”(hŒ;You can test the event devices with the ``evtest`` utility.”h]”(hŒ(You can test the event devices with the ”…”�”}”(hj h²hh³Nh´Nubj=)�”}”(hŒ ``evtest``”h]”hŒevtest”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hj ubhŒ utility.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´Kühj— h²hubhŒtarget”“”)�”}”(hŒ.. _event-interface:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œevent-interface”uh1j: h´MThj— h²hh³jaubeh}”(h]”Œverifying-if-it-works”ah ]”h"]”Œverifying if it works”ah$]”h&]”uh1jLhjNh²hh³jah´KðubjM)�”}”(hhh]”(jR)�”}”(hŒEvent interface”h]”hŒEvent interface”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjP h²hh³jah´Mubjƒ)�”}”(hŒ±You 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]”hŒ²You 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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´MhjP h²hubjb)�”}”(hŒ�struct input_event { struct timeval time; unsigned short type; unsigned short code; int value; };”h]”hŒ�struct input_event { struct timeval time; unsigned short type; unsigned short code; int value; };”…”�”}”hjo sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³jah´MhjP h²hubjƒ)�”}”(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]”hŒtime”…”�”}”(hj� h²hh³Nh´Nubah}”(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} h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´MhjP h²hubjƒ)�”}”(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]”hŒcode”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hj™ ubhŒw is event code, for example REL_X or KEY_BACKSPACE, again a complete list is in include/uapi/linux/input-event-codes.h.”…”�”}”(hj™ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´MhjP h²hubjƒ)�”}”(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]”hŒvalue”…”�”}”(hj¹ h²hh³Nh´Nubah}”(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µ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´MhjP h²hubjƒ)�”}”(hŒLSee :ref:`input-event-codes` for more information about various event codes.”h]”(hŒSee ”…”�”}”(hjÑ h²hh³Nh´Nubh)�”}”(hŒ:ref:`input-event-codes`”h]”jq)�”}”(hjÛ h]”hŒinput-event-codes”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”(j|Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jphjÙ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‰Œ refdomain”jç Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj�Œinput-event-codes”uh1hh³jah´MhjÑ ubhŒ0 for more information about various event codes.”…”�”}”(hjÑ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³jah´MhjP h²hubeh}”(h]”(jG Œid3”eh ]”h"]”(Œevent interface”Œevent-interface”eh$]”h&]”uh1jLhjNh²hh³jah´MŒexpect_referenced_by_name”}”j j< sŒexpect_referenced_by_id”}”jG j< subeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1jLhhh²hh³jah´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”jauh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(jQNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j; Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”jaŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”(hähØhóhçjhöjjj jj/j#j>j2jMjAj\jPjkj_jzjnj‰j}j˜jŒj§j›j¶jªjÅj¹jÔjÈjãj×jòjæjjõjjjjj.j"j=j1jLj@j[jOjjj^jyjmjˆj|j—j‹j¦jšjµj©jÄj¸jÓjÇjâjÖjñjåjjôjjjjj-j!j<j0jKj?jZjNjij]jxjlj‡j{j–jŠj¥j™j´j¨jÃj·jÒjÆjájÕjðjäjÿjójjjjj,j j;j/jJj>jYjMjhj\jwjkj†jzj•j‰j¤j˜j³j§jÂj¶jÑjÅjàjÔjïjãjþjòj jjjj+jj:j.jIj=uŒsubstitution_names”}”(Œamp”häŒapos”hóŒast”jŒbrvbar”jŒbsol”j Œcent”j/Œcolon”j>Œcomma”jMŒcommat”j\Œcopy”jkŒcurren”jzŒdarr”j‰Œdeg”j˜Œdivide”j§Œdollar”j¶Œequals”jÅŒexcl”jÔŒfrac12”jãŒfrac14”jòŒfrac18”jŒfrac34”jŒfrac38”jŒfrac58”j.Œfrac78”j=Œgt”jLŒhalf”j[Œhorbar”jjŒhyphen”jyŒiexcl”jˆŒiquest”j—Œlaquo”j¦Œlarr”jµŒlcub”jÄŒldquo”jÓŒlowbar”jâŒlpar”jñŒlsqb”jŒlsquo”jŒlt”jŒmicro”j-Œmiddot”j<Œnbsp”jKŒnot”jZŒnum”jiŒohm”jxŒordf”j‡Œordm”j–Œpara”j¥Œpercnt”j´Œperiod”jÃŒplus”jÒŒplusmn”jáŒpound”jðŒquest”jÿŒquot”jŒraquo”jŒrarr”j,Œrcub”j;Œrdquo”jJŒreg”jYŒrpar”jhŒrsqb”jwŒrsquo”j†Œsect”j•Œsemi”j¤Œshy”j³Œsol”jÂŒsung”jÑŒsup1”jàŒsup2”jïŒsup3”jþŒtimes”j Œtrade”jŒuarr”j+Œverbar”j:Œyen”jIuŒrefnames”}”Œrefids”}”jG ]”j< asŒnameids”}”(j j j?j<Œdevice drivers”NŒevent handlers”Njôjñj” j‘ jÊjÇjÿjüjžj›j! 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Í ‰jô‰j” ‰jʉjÿ‰jž‰j! ‰j ‰jé ‰j ‰j7 ‰j^ ‰j… ‰jM ‰j ˆj ‰uh}”(j jNj<j¾j jëj4jjñjBj‘ j÷j& jjÇj'jüjÍj›jj j¡jŠ 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_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jI Ks…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”jƒ)�”}”(hŒ1Duplicate implicit target name: "event handlers".”h]”hŒ5Duplicate implicit target name: “event handlersâ€�.”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjî ubah}”(h]”h ]”h"]”h$]”h&]”j& aŒlevel”KŒtype”ŒINFO”Œsource”jaŒline”KOuh1jì hjh²hh³jah´KOubjí )�”}”(hhh]”jƒ)�”}”(hŒ1Duplicate implicit target name: "device drivers".”h]”hŒ5Duplicate implicit target name: “device driversâ€�.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj ubah}”(h]”h ]”h"]”h$]”h&]”jŠ aŒlevel”KŒtype”j Œsource”jaŒline”K«uh1jì hj+ h²hh³jah´K«ubeŒtransform_messages”]”jí )�”}”(hhh]”jƒ)�”}”(hhh]”hŒ5Hyperlink target "event-interface" is not referenced.”…”�”}”hj* sbah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj' ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j Œsource”jaŒline”MTuh1jì ubaŒ transformer”NŒ include_log”]”ŒDocumentation/input/input.rst”(NNNNt”†”aŒ decoration”Nh²hub.