€•ì: Œ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”Œ7/translations/zh_CN/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuŒtagname”hhhubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/zh_TW/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/it_IT/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ja_JP/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ko_KR/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/pt_BR/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/sp_SP/admin-guide/media/remote-controller”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h
hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/admin-guide/media/remote-controller.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ6Infrared remote control support in video4linux drivers”h]”hŒ6Infrared remote control support in video4linux drivers”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ-Authors: Gerd Hoffmann, Mauro Carvalho Chehab”h]”hŒ-Authors: Gerd Hoffmann, Mauro Carvalho Chehab”…””}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒBasics”h]”hŒBasics”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhíh²hh³hÇh´K
ubhÞ)”}”(hX3 Most analog and digital TV boards support remote controllers. Several of
them have a microprocessor that receives the IR carriers, convert into
pulse/space sequences and then to scan codes, returning such codes to
userspace ("scancode mode"). Other boards return just the pulse/space
sequences ("raw mode").”h]”hX; Most analog and digital TV boards support remote controllers. Several of
them have a microprocessor that receives the IR carriers, convert into
pulse/space sequences and then to scan codes, returning such codes to
userspace (“scancode modeâ€). Other boards return just the pulse/space
sequences (“raw modeâ€).”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhíh²hubhÞ)”}”(hŒThe support for remote controller in scancode mode is provided by the
standard Linux input layer. The support for raw mode is provided via LIRC.”h]”hŒThe support for remote controller in scancode mode is provided by the
standard Linux input layer. The support for raw mode is provided via LIRC.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhíh²hubhÞ)”}”(hŒµIn order to check the support and test it, it is suggested to download
the `v4l-utils `_. It provides
two tools to handle remote controllers:”h]”(hŒKIn order to check the support and test it, it is suggested to download
the ”…””}”(hj h²hh³Nh´NubhŒ reference”“”)”}”(hŒ5`v4l-utils `_”h]”hŒ v4l-utils”…””}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l-utils”Œrefuri”Œ&https://git.linuxtv.org/v4l-utils.git/”uh1j" hj ubhŒtarget”“”)”}”(hŒ) ”h]”h}”(h]”Œ v4l-utils”ah ]”h"]”Œ v4l-utils”ah$]”h&]”Œrefuri”j5 uh1j6 Œ
referenced”Khj ubhŒ5. It provides
two tools to handle remote controllers:”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhíh²hubhŒbullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒÄir-keytable: provides a way to query the remote controller, list the
protocols it supports, enable in-kernel support for IR decoder or
switch the protocol and to test the reception of scan codes;
”h]”hÞ)”}”(hŒÃir-keytable: provides a way to query the remote controller, list the
protocols it supports, enable in-kernel support for IR decoder or
switch the protocol and to test the reception of scan codes;”h]”hŒÃir-keytable: provides a way to query the remote controller, list the
protocols it supports, enable in-kernel support for IR decoder or
switch the protocol and to test the reception of scan codes;”…””}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1jU hjR h²hh³hÇh´NubjV )”}”(hŒ]ir-ctl: provide tools to handle remote controllers that support raw mode
via LIRC interface.
”h]”hÞ)”}”(hŒ\ir-ctl: provide tools to handle remote controllers that support raw mode
via LIRC interface.”h]”hŒ\ir-ctl: provide tools to handle remote controllers that support raw mode
via LIRC interface.”…””}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1jU hjR h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jP h³hÇh´Khhíh²hubhÞ)”}”(hŒŸUsually, the remote controller module is auto-loaded when the TV card is
detected. However, for a few devices, you need to manually load the
ir-kbd-i2c module.”h]”hŒŸUsually, the remote controller module is auto-loaded when the TV card is
detected. However, for a few devices, you need to manually load the
ir-kbd-i2c module.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhíh²hubeh}”(h]”Œbasics”ah ]”h"]”Œbasics”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K
ubhÉ)”}”(hhh]”(hÎ)”}”(hŒHow it works”h]”hŒHow it works”…””}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¥ h²hh³hÇh´K%ubhÞ)”}”(hŒThe modules register the remote as keyboard within the linux input
layer, i.e. you'll see the keys of the remote as normal key strokes
(if CONFIG_INPUT_KEYBOARD is enabled).”h]”hŒ¯The modules register the remote as keyboard within the linux input
layer, i.e. you’ll see the keys of the remote as normal key strokes
(if CONFIG_INPUT_KEYBOARD is enabled).”…””}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K'hj¥ h²hubhÞ)”}”(hX³ Using the event devices (CONFIG_INPUT_EVDEV) it is possible for
applications to access the remote via /dev/input/event devices.
The udev/systemd will automatically create the devices. If you install
the `v4l-utils `_, it may also
automatically load a different keytable than the default one. Please see
`v4l-utils `_ ir-keytable.1
man page for details.”h]”(hŒÎUsing the event devices (CONFIG_INPUT_EVDEV) it is possible for
applications to access the remote via /dev/input/event devices.
The udev/systemd will automatically create the devices. If you install
the ”…””}”(hjÄ h²hh³Nh´Nubj# )”}”(hŒ5`v4l-utils `_”h]”hŒ v4l-utils”…””}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l-utils”j4 Œ&https://git.linuxtv.org/v4l-utils.git/”uh1j" hjÄ ubj7 )”}”(hŒ) ”h]”h}”(h]”Œid1”ah ]”h"]”h$]”Œ v4l-utils”ah&]”Œrefuri”jÜ uh1j6 jE KhjÄ ubhŒW, it may also
automatically load a different keytable than the default one. Please see
”…””}”(hjÄ h²hh³Nh´Nubj# )”}”(hŒ5`v4l-utils `_”h]”hŒ v4l-utils”…””}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l-utils”j4 Œ&https://git.linuxtv.org/v4l-utils.git/”uh1j" hjÄ ubj7 )”}”(hŒ) ”h]”h}”(h]”Œid2”ah ]”h"]”h$]”Œ v4l-utils”ah&]”Œrefuri”jþ uh1j6 jE KhjÄ ubhŒ$ ir-keytable.1
man page for details.”…””}”(hjÄ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj¥ h²hubhÞ)”}”(hX< The ir-keytable tool is nice for trouble shooting, i.e. to check
whenever the input device is really present, which of the devices it
is, check whenever pressing keys on the remote actually generates
events and the like. You can also use any other input utility that changes
the keymaps, like the input kbd utility.”h]”hX< The ir-keytable tool is nice for trouble shooting, i.e. to check
whenever the input device is really present, which of the devices it
is, check whenever pressing keys on the remote actually generates
events and the like. You can also use any other input utility that changes
the keymaps, like the input kbd utility.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hj¥ h²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒUsing with lircd”h]”hŒUsing with lircd”…””}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj$ h²hh³hÇh´K;ubhÞ)”}”(hŒ The latest versions of the lircd daemon supports reading events from the
linux input layer (via event device). It also supports receiving IR codes
in lirc mode.”h]”hŒ The latest versions of the lircd daemon supports reading events from the
linux input layer (via event device). It also supports receiving IR codes
in lirc mode.”…””}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hj$ h²hubeh}”(h]”Œusing-with-lircd”ah ]”h"]”Œusing with lircd”ah$]”h&]”uh1hÈhj¥ h²hh³hÇh´K;ubhÉ)”}”(hhh]”(hÎ)”}”(hŒUsing without lircd”h]”hŒUsing without lircd”…””}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjK h²hh³hÇh´KCubhÞ)”}”(hX Xorg recognizes several IR keycodes that have its numerical value lower
than 247. With the advent of Wayland, the input driver got updated too,
and should now accept all keycodes. Yet, you may want to just reassign
the keycodes to something that your favorite media application likes.”h]”hX Xorg recognizes several IR keycodes that have its numerical value lower
than 247. With the advent of Wayland, the input driver got updated too,
and should now accept all keycodes. Yet, you may want to just reassign
the keycodes to something that your favorite media application likes.”…””}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KEhjK h²hubhÞ)”}”(hŒ¨This can be done by setting
`v4l-utils `_ to load your own
keytable in runtime. Please read ir-keytable.1 man page for details.”h]”(hŒThis can be done by setting
”…””}”(hjj h²hh³Nh´Nubj# )”}”(hŒ5`v4l-utils `_”h]”hŒ v4l-utils”…””}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l-utils”j4 Œ&https://git.linuxtv.org/v4l-utils.git/”uh1j" hjj ubj7 )”}”(hŒ) ”h]”h}”(h]”Œid3”ah ]”h"]”h$]”Œ v4l-utils”ah&]”Œrefuri”j‚ uh1j6 jE Khjj ubhŒW to load your own
keytable in runtime. Please read ir-keytable.1 man page for details.”…””}”(hjj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjK h²hubeh}”(h]”Œusing-without-lircd”ah ]”h"]”Œusing without lircd”ah$]”h&]”uh1hÈhj¥ h²hh³hÇh´KCubeh}”(h]”Œhow-it-works”ah ]”h"]”Œhow it works”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K%ubeh}”(h]”Œ6infrared-remote-control-support-in-video4linux-drivers”ah ]”h"]”Œ6infrared remote control support in video4linux drivers”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒcurrent_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÍNŒ 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”hÇŒ_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”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j¯ j¬ j¢ jŸ jA j> j§ j¤ jH jE jŸ jœ uŒ nametypes”}”(j¯ ‰j¢ ‰jA ˆj§ ‰jH ‰jŸ ‰uh}”(j¬ hÊjŸ híj> j8 j¤ j¥ jã jÝ j jÿ jE j$ jœ jK j‰ jƒ 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”“”}”jã Ks…”R”Œparse_messages”]”(hŒsystem_message”“”)”}”(hhh]”hÞ)”}”(hŒ,Duplicate explicit target name: "v4l-utils".”h]”hŒ0Duplicate explicit target name: “v4l-utilsâ€.”…””}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj9 ubah}”(h]”h ]”h"]”h$]”h&]”jã aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j7 hj¥ h²hh³hÇh´K1ubj8 )”}”(hhh]”hÞ)”}”(hŒ,Duplicate explicit target name: "v4l-utils".”h]”hŒ0Duplicate explicit target name: “v4l-utilsâ€.”…””}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjU ubah}”(h]”h ]”h"]”h$]”h&]”j aŒlevel”KŒtype”jR Œsource”hÇŒline”Kuh1j7 hj¥ h²hh³hÇh´K1ubj8 )”}”(hhh]”hÞ)”}”(hŒ,Duplicate explicit target name: "v4l-utils".”h]”hŒ0Duplicate explicit target name: “v4l-utilsâ€.”…””}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjp ubah}”(h]”h ]”h"]”h$]”h&]”j‰ aŒlevel”KŒtype”jR Œsource”hÇŒline”Kuh1j7 hjK h²hh³hÇh´KLubeŒtransform_messages”]”Œtransformer”NŒinclude_log”]”Œ
decoration”Nh²hub.