162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci.. _Remote_controllers_Protocols: 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci***************************************** 662306a36Sopenharmony_ciRemote Controller Protocols and Scancodes 762306a36Sopenharmony_ci***************************************** 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciIR is encoded as a series of pulses and spaces, using a protocol. These 1062306a36Sopenharmony_ciprotocols can encode e.g. an address (which device should respond) and a 1162306a36Sopenharmony_cicommand: what it should do. The values for these are not always consistent 1262306a36Sopenharmony_ciacross different devices for a given protocol. 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciTherefore out the output of the IR decoder is a scancode; a single u32 1562306a36Sopenharmony_civalue. Using keymap tables this can be mapped to linux key codes. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciOther things can be encoded too. Some IR protocols encode a toggle bit; this 1862306a36Sopenharmony_ciis to distinguish whether the same button is being held down, or has been 1962306a36Sopenharmony_cireleased and pressed again. If has been released and pressed again, the 2062306a36Sopenharmony_citoggle bit will invert from one IR message to the next. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciSome remotes have a pointer-type device which can used to control the 2362306a36Sopenharmony_cimouse; some air conditioning systems can have their target temperature 2462306a36Sopenharmony_citarget set in IR. 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciThe following are the protocols the kernel knows about and also lists 2762306a36Sopenharmony_cihow scancodes are encoded for each protocol. 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_circ-5 (RC_PROTO_RC5) 3062306a36Sopenharmony_ci------------------- 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciThis IR protocol uses manchester encoding to encode 14 bits. There is a 3362306a36Sopenharmony_cidetailed description here https://www.sbprojects.net/knowledge/ir/rc5.php. 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciThe scancode encoding is *not* consistent with the lirc daemon (lircd) rc5 3662306a36Sopenharmony_ciprotocol, or the manchester BPF decoder. 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci.. flat-table:: rc5 bits scancode mapping 3962306a36Sopenharmony_ci :widths: 1 1 2 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci * - rc-5 bit 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci - scancode bit 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci - description 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci * - 1 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci - none 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci - Start bit, always set 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci * - 1 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci - 6 (inverted) 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci - 2nd start bit in rc5, re-used as 6th command bit 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci * - 1 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci - none 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci - Toggle bit 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci * - 5 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci - 8 to 13 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci - Address 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci * - 6 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci - 0 to 5 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci - Command 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciThere is a variant of rc5 called either rc5x or extended rc5 7862306a36Sopenharmony_ciwhere there the second stop bit is the 6th command bit, but inverted. 7962306a36Sopenharmony_ciThis is done so it the scancodes and encoding is compatible with existing 8062306a36Sopenharmony_cischemes. This bit is stored in bit 6 of the scancode, inverted. This is 8162306a36Sopenharmony_cidone to keep it compatible with plain rc-5 where there are two start bits. 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_circ-5-sz (RC_PROTO_RC5_SZ) 8462306a36Sopenharmony_ci------------------------- 8562306a36Sopenharmony_ciThis is much like rc-5 but one bit longer. The scancode is encoded 8662306a36Sopenharmony_cidifferently. 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci.. flat-table:: rc-5-sz bits scancode mapping 8962306a36Sopenharmony_ci :widths: 1 1 2 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci * - rc-5-sz bits 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci - scancode bit 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci - description 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci * - 1 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci - none 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci - Start bit, always set 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci * - 1 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci - 13 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci - Address bit 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci * - 1 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci - none 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci - Toggle bit 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci * - 6 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci - 6 to 11 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci - Address 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci * - 6 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci - 0 to 5 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci - Command 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_circ-5x-20 (RC_PROTO_RC5X_20) 12862306a36Sopenharmony_ci--------------------------- 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciThis rc-5 extended to encoded 20 bits. The is a 3555 microseconds space 13162306a36Sopenharmony_ciafter the 8th bit. 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci.. flat-table:: rc-5x-20 bits scancode mapping 13462306a36Sopenharmony_ci :widths: 1 1 2 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci * - rc-5-sz bits 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci - scancode bit 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci - description 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci * - 1 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci - none 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci - Start bit, always set 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci * - 1 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci - 14 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci - Address bit 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci * - 1 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci - none 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci - Toggle bit 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci * - 5 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci - 16 to 20 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci - Address 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci * - 6 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci - 8 to 13 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci - Address 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci * - 6 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci - 0 to 5 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci - Command 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_cijvc (RC_PROTO_JVC) 18062306a36Sopenharmony_ci------------------ 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ciThe jvc protocol is much like nec, without the inverted values. It is 18362306a36Sopenharmony_cidescribed here https://www.sbprojects.net/knowledge/ir/jvc.php. 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ciThe scancode is a 16 bits value, where the address is the lower 8 bits 18662306a36Sopenharmony_ciand the command the higher 8 bits; this is reversed from IR order. 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cisony-12 (RC_PROTO_SONY12) 18962306a36Sopenharmony_ci------------------------- 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 19262306a36Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci.. flat-table:: sony-12 bits scancode mapping 19562306a36Sopenharmony_ci :widths: 1 1 2 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci * - sony-12 bits 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci - scancode bit 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci - description 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci * - 5 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci - 16 to 20 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci - device 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci * - 7 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci - 0 to 6 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci - function 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_cisony-15 (RC_PROTO_SONY15) 21662306a36Sopenharmony_ci------------------------- 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 21962306a36Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci.. flat-table:: sony-12 bits scancode mapping 22262306a36Sopenharmony_ci :widths: 1 1 2 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci * - sony-12 bits 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci - scancode bit 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci - description 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci * - 8 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci - 16 to 23 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci - device 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci * - 7 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci - 0 to 6 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci - function 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_cisony-20 (RC_PROTO_SONY20) 24362306a36Sopenharmony_ci------------------------- 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 24662306a36Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci.. flat-table:: sony-20 bits scancode mapping 24962306a36Sopenharmony_ci :widths: 1 1 2 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci * - sony-20 bits 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci - scancode bit 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci - description 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci * - 5 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci - 16 to 20 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci - device 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci * - 7 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci - 0 to 7 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci - device 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci * - 8 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ci - 8 to 15 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci - extended bits 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_cinec (RC_PROTO_NEC) 27662306a36Sopenharmony_ci------------------ 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ciThe nec protocol encodes an 8 bit address and an 8 bit command. It is 27962306a36Sopenharmony_cidescribed here https://www.sbprojects.net/knowledge/ir/nec.php. Note 28062306a36Sopenharmony_cithat the protocol sends least significant bit first. 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ciAs a check, the nec protocol sends the address and command twice; the 28362306a36Sopenharmony_cisecond time it is inverted. This is done for verification. 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ciA plain nec IR message has 16 bits; the high 8 bits are the address 28662306a36Sopenharmony_ciand the low 8 bits are the command. 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_cinec-x (RC_PROTO_NECX) 28962306a36Sopenharmony_ci--------------------- 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ciExtended nec has a 16 bit address and a 8 bit command. This is encoded 29262306a36Sopenharmony_cias a 24 bit value as you would expect, with the lower 8 bits the command 29362306a36Sopenharmony_ciand the upper 16 bits the address. 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_cinec-32 (RC_PROTO_NEC32) 29662306a36Sopenharmony_ci----------------------- 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_cinec-32 does not send an inverted address or an inverted command; the 29962306a36Sopenharmony_cientire message, all 32 bits, are used. 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ciFor this to be decoded correctly, the second 8 bits must not be the 30262306a36Sopenharmony_ciinverted value of the first, and also the last 8 bits must not be the 30362306a36Sopenharmony_ciinverted value of the third 8 bit value. 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ciThe scancode has a somewhat unusual encoding. 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ci.. flat-table:: nec-32 bits scancode mapping 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci * - nec-32 bits 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_ci - scancode bit 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci * - First 8 bits 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci - 16 to 23 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci * - Second 8 bits 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci - 24 to 31 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci * - Third 8 bits 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci - 0 to 7 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ci * - Fourth 8 bits 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ci - 8 to 15 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_cisanyo (RC_PROTO_SANYO) 33062306a36Sopenharmony_ci---------------------- 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ciThe sanyo protocol is like the nec protocol, but with 13 bits address 33362306a36Sopenharmony_cirather than 8 bits. Both the address and the command are followed by 33462306a36Sopenharmony_citheir inverted versions, but these are not present in the scancodes. 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ciBis 8 to 20 of the scancode is the 13 bits address, and the lower 8 33762306a36Sopenharmony_cibits are the command. 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_cimcir2-kbd (RC_PROTO_MCIR2_KBD) 34062306a36Sopenharmony_ci------------------------------ 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ciThis protocol is generated by the Microsoft MCE keyboard for keyboard 34362306a36Sopenharmony_cievents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_cimcir2-mse (RC_PROTO_MCIR2_MSE) 34662306a36Sopenharmony_ci------------------------------ 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ciThis protocol is generated by the Microsoft MCE keyboard for pointer 34962306a36Sopenharmony_cievents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_circ-6-0 (RC_PROTO_RC6_0) 35262306a36Sopenharmony_ci----------------------- 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ciThis is the rc-6 in mode 0. rc-6 is described here 35562306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 35662306a36Sopenharmony_ciThe scancode is the exact 16 bits as in the protocol. There is also a 35762306a36Sopenharmony_citoggle bit. 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_circ-6-6a-20 (RC_PROTO_RC6_6A_20) 36062306a36Sopenharmony_ci------------------------------- 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ciThis is the rc-6 in mode 6a, 20 bits. rc-6 is described here 36362306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 36462306a36Sopenharmony_ciThe scancode is the exact 20 bits 36562306a36Sopenharmony_cias in the protocol. There is also a toggle bit. 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_circ-6-6a-24 (RC_PROTO_RC6_6A_24) 36862306a36Sopenharmony_ci------------------------------- 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ciThis is the rc-6 in mode 6a, 24 bits. rc-6 is described here 37162306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 37262306a36Sopenharmony_ciThe scancode is the exact 24 bits 37362306a36Sopenharmony_cias in the protocol. There is also a toggle bit. 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_circ-6-6a-32 (RC_PROTO_RC6_6A_32) 37662306a36Sopenharmony_ci------------------------------- 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ciThis is the rc-6 in mode 6a, 32 bits. rc-6 is described here 37962306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 38062306a36Sopenharmony_ciThe upper 16 bits are the vendor, 38162306a36Sopenharmony_ciand the lower 16 bits are the vendor-specific bits. This protocol is 38262306a36Sopenharmony_cifor the non-Microsoft MCE variant (vendor != 0x800f). 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_circ-6-mce (RC_PROTO_RC6_MCE) 38662306a36Sopenharmony_ci--------------------------- 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ciThis is the rc-6 in mode 6a, 32 bits. The upper 16 bits are the vendor, 38962306a36Sopenharmony_ciand the lower 16 bits are the vendor-specific bits. This protocol is 39062306a36Sopenharmony_cifor the Microsoft MCE variant (vendor = 0x800f). The toggle bit in the 39162306a36Sopenharmony_ciprotocol itself is ignored, and the 16th bit should be takes as the toggle 39262306a36Sopenharmony_cibit. 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_cisharp (RC_PROTO_SHARP) 39562306a36Sopenharmony_ci---------------------- 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ciThis is a protocol used by Sharp VCRs, is described here 39862306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/sharp.php. There is a very long 39962306a36Sopenharmony_ci(40ms) space between the normal and inverted values, and some IR receivers 40062306a36Sopenharmony_cicannot decode this. 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ciThere is a 5 bit address and a 8 bit command. In the scancode the address is 40362306a36Sopenharmony_ciin bits 8 to 12, and the command in bits 0 to 7. 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_cixmp (RC_PROTO_XMP) 40662306a36Sopenharmony_ci------------------ 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ciThis protocol has several versions and only version 1 is supported. Refer 40962306a36Sopenharmony_cito the decoder (ir-xmp-decoder.c) to see how it is encoded. 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_cicec (RC_PROTO_CEC) 41362306a36Sopenharmony_ci------------------ 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ciThis is not an IR protocol, this is a protocol over CEC. The CEC 41662306a36Sopenharmony_ciinfrastructure uses rc-core for handling CEC commands, so that they 41762306a36Sopenharmony_cican easily be remapped. 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ciimon (RC_PROTO_IMON) 42062306a36Sopenharmony_ci-------------------- 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ciThis protocol is used by Antec Veris/SoundGraph iMON remotes. 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ciThe protocol 42562306a36Sopenharmony_cidescribes both button presses and pointer movements. The protocol encodes 42662306a36Sopenharmony_ci31 bits, and the scancode is simply the 31 bits with the top bit always 0. 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_circ-mm-12 (RC_PROTO_RCMM12) 42962306a36Sopenharmony_ci-------------------------- 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ciThe rc-mm protocol is described here 43262306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 43362306a36Sopenharmony_cithe 12 bits. 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_circ-mm-24 (RC_PROTO_RCMM24) 43662306a36Sopenharmony_ci-------------------------- 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ciThe rc-mm protocol is described here 43962306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 44062306a36Sopenharmony_cithe 24 bits. 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_circ-mm-32 (RC_PROTO_RCMM32) 44362306a36Sopenharmony_ci-------------------------- 44462306a36Sopenharmony_ci 44562306a36Sopenharmony_ciThe rc-mm protocol is described here 44662306a36Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 44762306a36Sopenharmony_cithe 32 bits. 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_cixbox-dvd (RC_PROTO_XBOX_DVD) 45062306a36Sopenharmony_ci---------------------------- 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ciThis protocol is used by XBox DVD Remote, which was made for the original 45362306a36Sopenharmony_ciXBox. There is no in-kernel decoder or encoder for this protocol. The usb 45462306a36Sopenharmony_cidevice decodes the protocol. There is a BPF decoder available in v4l-utils. 455