<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.radxa.com/mw/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.radxa.com/mw/index.php?action=history&amp;feed=atom&amp;title=Rock%2Fir%2Fzh_cn</id>
		<title>Rock/ir/zh cn - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.radxa.com/mw/index.php?action=history&amp;feed=atom&amp;title=Rock%2Fir%2Fzh_cn"/>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/mw/index.php?title=Rock/ir/zh_cn&amp;action=history"/>
		<updated>2026-06-14T21:52:11Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>https://wiki.radxa.com/mw/index.php?title=Rock/ir/zh_cn&amp;diff=405&amp;oldid=prev</id>
		<title>115.45.26.250: /* 通过修改内核方式 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/mw/index.php?title=Rock/ir/zh_cn&amp;diff=405&amp;oldid=prev"/>
				<updated>2014-02-09T11:10:58Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;通过修改内核方式&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 11:10, 9 February 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;第一个参数是用户码,每一种遥控器都有一个用户码用来和其他遥控器做区分.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;第二个参数对应蓝牙键盘的按键个数&lt;/del&gt;,第三个参数对应 步骤一增加的数组&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;第一个参数是用户码,每一种遥控器都有一个用户码用来和其他遥控器做区分.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;第二个参数对应遥控器的按键个数&lt;/ins&gt;,第三个参数对应 步骤一增加的数组&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 如何获得用户码和遥控器键值 ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 如何获得用户码和遥控器键值 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>115.45.26.250</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/mw/index.php?title=Rock/ir/zh_cn&amp;diff=404&amp;oldid=prev</id>
		<title>115.45.26.250: Created page with &quot;== 通过修改内核方式 == 目前的SDK提供的驱动只支持NEC编码格式的红外遥控器，下面介绍如何调试来支持不同品牌的遥控器。  只需要...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/mw/index.php?title=Rock/ir/zh_cn&amp;diff=404&amp;oldid=prev"/>
				<updated>2014-02-09T11:06:57Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;== 通过修改内核方式 == 目前的SDK提供的驱动只支持NEC编码格式的红外遥控器，下面介绍如何调试来支持不同品牌的遥控器。  只需要...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 通过修改内核方式 ==&lt;br /&gt;
目前的SDK提供的驱动只支持NEC编码格式的红外遥控器，下面介绍如何调试来支持不同品牌的遥控器。&lt;br /&gt;
&lt;br /&gt;
只需要修改一个文件 &amp;quot;kernel/drivers/input/remotectl/rkxx_remotectl.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
步骤如下：&lt;br /&gt;
&lt;br /&gt;
1、增加一个数组&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 static struct rkxx_remote_key_table remote_key_table_41C8[] = {&lt;br /&gt;
                {0x38, KEY_VOLUMEUP},&lt;br /&gt;
                {0xb8, KEY_VOLUMEDOWN},&lt;br /&gt;
                {0x58, KEY_MENU},&lt;br /&gt;
                {0xd0, KEY_REPLY},&lt;br /&gt;
                {0x48, KEY_BACK},&lt;br /&gt;
                {0x98, KEY_BACK},&lt;br /&gt;
                {0x50, KEY_UP},&lt;br /&gt;
                {0x30, KEY_DOWN},&lt;br /&gt;
                {0xc8, KEY_LEFT},&lt;br /&gt;
                {0xc0, KEY_RIGHT},&lt;br /&gt;
                {0x40, KEY_REPLY},&lt;br /&gt;
                {0x80, KEY_SEARCH}, &lt;br /&gt;
 }; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
该数组将红外键值ircode映射为Linux标准键盘扫描码scancode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2、增加一项,这里的每一项对应一种遥控器&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  static struct rkxx_remotectl_button remotectl_button[]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For example：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        .usercode = 0x41c8, /* 用户码 */&lt;br /&gt;
        .nbuttons = 12,    /* 按键个数 */&lt;br /&gt;
        .key_table = &amp;amp;remote_key_table_41C8[0], /* 键盘表 */&lt;br /&gt;
    }, &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个参数是用户码,每一种遥控器都有一个用户码用来和其他遥控器做区分.第二个参数对应蓝牙键盘的按键个数,第三个参数对应 步骤一增加的数组&lt;br /&gt;
&lt;br /&gt;
=== 如何获得用户码和遥控器键值 ===&lt;br /&gt;
&lt;br /&gt;
修改的地方在对应的函数 '''remotectl_do_something''' 中&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; highlight=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
       case RMC_USERCODE:&lt;br /&gt;
        {&lt;br /&gt;
            ddata-&amp;gt;scanData &amp;lt;&amp;lt;= 1;&lt;br /&gt;
            ddata-&amp;gt;count ++;&lt;br /&gt;
            if ((TIME_BIT1_MIN &amp;lt; ddata-&amp;gt;period) &amp;amp;&amp;amp; (ddata-&amp;gt;period &amp;lt; TIME_BIT1_MAX)){&lt;br /&gt;
                ddata-&amp;gt;scanData |= 0x01;&lt;br /&gt;
            }&lt;br /&gt;
            if (ddata-&amp;gt;count == 0x10){//16 bit user code&lt;br /&gt;
               // printk(&amp;quot;u=0x%x\n&amp;quot;,((ddata-&amp;gt;scanData)&amp;amp;0xFFFF));&lt;br /&gt;
                if (remotectl_keybdNum_lookup(ddata)){&lt;br /&gt;
                    ddata-&amp;gt;state = RMC_GETDATA;&lt;br /&gt;
                    ddata-&amp;gt;scanData = 0;&lt;br /&gt;
                    ddata-&amp;gt;count = 0;&lt;br /&gt;
                }else{&lt;br /&gt;
                   ddata-&amp;gt;state = RMC_PRELOAD;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
放开注释的printk的代码,可以得到用户码,接下来在第二步 remotectl_button array我们添加的数组中填上对应的按键个数,放开下面代码中的printk代码,&lt;br /&gt;
得到键值&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; highlight=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
       case RMC_GETDATA:&lt;br /&gt;
       {&lt;br /&gt;
            ddata-&amp;gt;count ++;&lt;br /&gt;
            ddata-&amp;gt;scanData &amp;lt;&amp;lt;= 1;&lt;br /&gt;
            if ((TIME_BIT1_MIN &amp;lt; ddata-&amp;gt;period) &amp;amp;&amp;amp; (ddata-&amp;gt;period &amp;lt; TIME_BIT1_MAX)){&lt;br /&gt;
                ddata-&amp;gt;scanData |= 0x01;&lt;br /&gt;
            }	&lt;br /&gt;
            if (ddata-&amp;gt;count == 0x10){&lt;br /&gt;
               // printk(KERN_ERR &amp;quot;d=%x\n&amp;quot;,(ddata-&amp;gt;scanData&amp;amp;0xFFFF));&lt;br /&gt;
                if ((ddata-&amp;gt;scanData&amp;amp;0x0ff) == ((~ddata-&amp;gt;scanData &amp;gt;&amp;gt; 8)&amp;amp;0x0ff)){&lt;br /&gt;
                    if (remotectl_keycode_lookup(ddata)){&lt;br /&gt;
                        ddata-&amp;gt;press = 1;&lt;br /&gt;
                                         ...&lt;br /&gt;
                                          }&lt;br /&gt;
                                       ...&lt;br /&gt;
                                     }&lt;br /&gt;
                                  ...&lt;br /&gt;
                              }&lt;br /&gt;
                     }    &lt;br /&gt;
		&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
注意: &lt;br /&gt;
&lt;br /&gt;
#从log中获得的键值是16进制的,前两位是我们需要的,后面的是前两位的反码,用于校验,直接忽略.&lt;br /&gt;
#不要留太多的log,获得用户码和键值后把log关闭,否能可能导致遥控器无法使用&lt;/div&gt;</summary>
		<author><name>115.45.26.250</name></author>	</entry>

	</feed>