admin管理员组

文章数量:1530878

2023年12月20日发(作者:)

Rbox红外遥控

一、 按键定义

1. 推荐必须的按键:

(1) Down (向下)

(2) Up (向上)

(3) Left (向左)

(4) Right (向右)

(5) Enter (确定)

(6) ESC (返回)

(7) Menu (菜单)

(8) Search (搜索) //浏览器的时候按此键可以输入地址

(9) Power (待机键) //按此键可以进入休眠

(10)Vol+ (音量加)

(11)Vol- (音量减)

(12)Mute (静音键)

(13)Home (主页) //回到主页快捷键

2. 选用的按键

(1)Zoom out (放大) //图片的放大

(2)Zoom in (缩小) //图片的缩小

(3)Rotate left (左旋) //图片的左旋转

(4)Rotate right (右旋) //图片的右旋转

(5)Photo (图片) //进入图片界面的快捷键

(6)Video (视频) //进入本地视频的快捷键

(7)Music (音乐) //进入本地音乐的快捷键

(8)IE (IE) //进入浏览器的快捷键

(9)Setting (设置) //进入设置菜单的快捷键

(10)Display (显示) //显示输出切换键,可以在HDMI、CVBS、YPbPr、VGA循环切换

(11)0---9 (数字) //数字键

(12)A—Z (字母) // 字母键

(13)shift (上档键) //上档键

(14),。!? (符号键) //标点符号

二、红外代码添加

代码位置:driversinputkeyboardrk29_remotectl.c

(1)按照如下的格式加个自己的数组

例如:

static struct rk29_remote_key_table remote_key_table_41C8[] = {

{0x38, KEY_VOLUMEUP},

{0xb8, KEY_VOLUMEDOWN},

{0x58, KEY_MENU},

{0xd0, KEY_REPLY},

{0x48, KEY_BACK},

{0x98, KEY_BACK},

{0x50, KEY_UP},

{0x30, KEY_DOWN},

{0xc8, KEY_LEFT},

{0xc0, KEY_RIGHT},

{0x40, KEY_REPLY},

{0x80, KEY_SEARCH},

};

第一栏是遥控器的码值,第二栏是对应的键值

(2)在static struct rk29_remotectl_button remotectl_button[] 中添加按照格式添加一个条目

例如

{ .usercode = 0x41c8,

.nbuttons = 12,

.key_table = &remote_key_table_41C8[0],

},

其中第一个是遥控器的用户码,每个遥控器都有一个用户码,第二个是个数,第三个是之前添加的数组首地址。

三、红外功能键值定义

(1) Down (向下) KEY_DOWN = 108

(2) Up (向上) KEY_UP = 103

(3) Left (向左) KEY_LEFT = 105

(4) Right (向右) KEY_RIGHT = 106

(5) Enter (确定) KEY_REPLY = 232

(6) ESC (返回) KEY_BACK = 158

(7) Menu (菜单) KEY_MENU = 139

(8) Search (搜索) KEY_SEARCH = 217

(9) Power (待机键) KEY_POWER = 116

(10) Vol+ (音量加) KEY_VOLUMEUP = 115

(11) Vol- (音量减) KEY_VOLUMEDOWN = 114

(12) Mute (静音键) KEY_MUTE= 113

(13)Home (主页) KEY_HOME = 102

(14)Zoom out (放大) 185

(15)Zoom in (缩小) 186

(16)Rotate left (左旋) 183

(17)Rotate right (右旋) 184

(18)Photo (图片) 193

(19)Video (视频) 194

(20)Music (音乐) 195

(21)IE (IE) 196

(22)Setting (设置) 197

(23)Display (显示) 200

(24)0 (数字0) KEY_0 = 11

(25)1 (数字1) KEY_1

(25)2 (数字2) KEY_2

(25)3 (数字3) KEY_3

(25)4 (数字4), KEY_4

(25)5 (数字5) KEY_5

(25)6 (数字6) KEY_6

(25)7 (数字7) KEY_7

(25)8 (数字8) KEY_8

(25)9 (数字9) KEY_2

字母和符号键都是linux的标准键值。

= 2

= 3

= 4

= 5

= 6

= 7

= 8

= 9

= 10

四、关于HID

Rbox支持usb或者蓝牙hid设备,比如鼠标、键盘等设备。

鼠标定义成左键是确定,右键是返回,滚轮则是在ui的焦点上下移动。

键盘的字母和数字键的使用和普通在pc上的使用是一样的,就是相应的字符的输入。

下面介绍一些特殊功能键的实现,比如主页,音量加减,上面提到的某些快捷键的定义等。

在kernel代码的/drivers/hid/hid-input.c中有一个键盘映射的数组,总共定义了256个,如下所示。

static const unsigned char hid_keyboard[256] = {

0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,

50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,

4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,

27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,

65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,

105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,

72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,

191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,

115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk,

122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,179,180,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,

150,158,159,128,136,177,178,176,142,152,173,140,unk,unk,unk,unk

};

这其实是一个映射表,hid keyboard类型的键值其实是这个代表这个表的偏移。比如hid keyboard某个键的键值是68(键盘上F11的真实键值),那么其实送到内核中的是这个表中第68个位置处的值也就是87(实际送到input系统处理的键值)。反之是一样的,比如input的1的键值是2(可以查看includelinuxinput.h,最后的附录也有这个表),我们可以查到在这个数组的位置是30,所以hid keyboard数字2键的键值是30.

综上hid keyboard的键值和实际input系统需要的键值是有区别的,他们之间是通过上面这个数组对应起来的。第三节定义的键值都是linux input系统需要的键值,并不是hid keyboard的键值。HID KEYBOARD键值本质上是hid_keyboard的偏移。可以通过这个数组去找到或者定义hid keyboard的键值。

对于一些Rbox定义的功能键,这个数组中并没有,比如MENU的键值139,这个数组并没有,现在推荐的做法是将数组中F1~F12值(59~68,87,88)改成Rbox需要的值。

示例:将hid键盘F12键的功能改成MENU。F12在这个数组中的值是88,那么将这个数组中88的值改成139.如第五行

65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,

改成

65, 66, 67, 68, 87, 139, 99, 70,119,110,102,104,111,107,109,106,

这样,键盘上F12的功能就变成Rbox上的MENU了。

另外一些键,比如音量加减,虽然一般的键盘没有这些键,但是这个表里面有这些键值,所以只要将2.4G遥控或者其他Hid keyboard设备的按键定义成这些键值在数组中的偏移数值就可以了。

示例:音量加Vol+在input系统里的键值是115,在这个数组中的位置是第118个(也就是在这个数组中的偏移是118),所以hid keyboard上需要的键值是118.

另外键盘的home对应Rbox的HOME,键盘的end对应Rbox的POWER键功能。

附录:input.h中定义的键值

#define KEY_RESERVED 0

#define KEY_ESC 1

#define KEY_1 2

#define KEY_2 3

#define KEY_3 4

#define KEY_4 5

#define KEY_5 6

#define KEY_6 7

#define KEY_7 8

#define KEY_8 9

#define KEY_9 10

#define KEY_0 11

#define KEY_MINUS

#define KEY_EQUAL

12

13

14 #define KEY_BACKSPACE

#define KEY_Q 16

#define KEY_W 17

#define KEY_E 18

#define KEY_R 19

#define KEY_T 20

#define KEY_Y 21

#define KEY_U 22

#define KEY_I 23

#define KEY_O 24

#define KEY_P 25

#define KEY_LEFTBRACE

#define KEY_RIGHTBRACE

#define KEY_ENTER 28

#define KEY_LEFTCTRL

#define KEY_TAB 15

26

27

29

#define KEY_A 30

#define KEY_S 31

#define KEY_D 32

#define KEY_F 33

#define KEY_G 34

#define KEY_H 35

#define KEY_J 36

#define KEY_K 37

#define KEY_L 38

#define KEY_SEMICOLON

#define KEY_APOSTROPHE

#define KEY_GRAVE 41

42

43

#define KEY_LEFTSHIFT

39

40

#define KEY_BACKSLASH

#define KEY_Z 44

#define KEY_X 45

#define KEY_C 46

#define KEY_V 47

#define KEY_B 48

#define KEY_N 49

#define KEY_M 50

#define KEY_COMMA

#define KEY_SLASH

51

53

#define KEY_DOT 52

#define KEY_RIGHTSHIFT

#define KEY_KPASTERISK

#define KEY_LEFTALT

#define KEY_SPACE

56

57

58

54

55

#define KEY_CAPSLOCK

#define KEY_F1 59

#define KEY_F2 60

#define KEY_F3 61

#define KEY_F4 62

#define KEY_F5 63

#define KEY_F6 64

#define KEY_F7 65

#define KEY_F8 66

#define KEY_F9 67

#define KEY_F10 68

#define KEY_NUMLOCK 69

70 #define KEY_SCROLLLOCK

#define KEY_KP7 71

#define KEY_KP8 72

#define KEY_KP9 73

#define KEY_KPMINUS 74

#define KEY_KP4 75

#define KEY_KP5 76

#define KEY_KP6 77

#define KEY_KPPLUS 78

#define KEY_KP1 79

#define KEY_KP2 80

#define KEY_KP3 81

#define KEY_KP0 82

#define KEY_KPDOT

#define KEY_ZENKAKUHANKAKU 85

#define KEY_102ND 86

#define KEY_F11 87

#define KEY_F12 88

#define KEY_RO 89

#define KEY_KATAKANA

#define KEY_HIRAGANA

#define KEY_HENKAN 92

94

95

97

90

91

83

#define KEY_KATAKANAHIRAGANA 93

#define KEY_MUHENKAN

#define KEY_KPJPCOMMA

#define KEY_KPENTER

#define KEY_KPSLASH

#define KEY_SYSRQ

#define KEY_RIGHTALT

96

98

99

100

#define KEY_RIGHTCTRL

#define KEY_LINEFEED

#define KEY_HOME

101

102

104

106

108

109

110

111

112

114

#define KEY_UP 103

#define KEY_PAGEUP

#define KEY_LEFT

#define KEY_RIGHT

#define KEY_DOWN

#define KEY_INSERT

105

#define KEY_END 107

#define KEY_PAGEDOWN

#define KEY_DELETE

#define KEY_MACRO

#define KEY_MUTE 113

115

#define KEY_VOLUMEDOWN

#define KEY_VOLUMEUP

#define KEY_POWER

#define KEY_KPEQUAL

#define KEY_PAUSE

#define KEY_SCALE

#define KEY_KPCOMMA

#define KEY_HANGEUL

#define KEY_HANGUEL

#define KEY_HANJA

121

122

117

116 /* SC System Power Down */

118 #define KEY_KPPLUSMINUS

119

120 /* AL Compiz Scale (Expose) */

KEY_HANGEUL

123

125

126

127

#define KEY_YEN 124

#define KEY_LEFTMETA

#define KEY_COMPOSE

#define KEY_STOP

#define KEY_AGAIN

#define KEY_PROPS

#define KEY_UNDO

128 /* AC Stop */

129

130 /* AC Properties */

#define KEY_RIGHTMETA

131 /* AC Undo */

#define KEY_FRONT

#define KEY_COPY

#define KEY_OPEN

#define KEY_PASTE

#define KEY_FIND

#define KEY_CUT

#define KEY_HELP

#define KEY_MENU

#define KEY_CALC

#define KEY_SETUP

#define KEY_SLEEP

#define KEY_FILE

132

133 /* AC Copy */

134 /* AC Open */

135 /* AC Paste */

137 /* AC Cut */

136 /* AC Search */

138 /* AL Integrated Help Center */

139 /* Menu (show menu) */

140 /* AL Calculator */

141

143 /* System Wake Up */

145

146

142 /* SC System Sleep */

144 /* AL Local Machine Browser */

#define KEY_WAKEUP

#define KEY_SENDFILE

#define KEY_XFER

#define KEY_PROG1

#define KEY_PROG2

#define KEY_WWW

#define KEY_MSDOS

147

#define KEY_DELETEFILE

148

149

150 /* AL Internet Browser */

151

152 /* AL Terminal Lock/Screensaver */

KEY_COFFEE

154

153

#define KEY_COFFEE

#define KEY_SCREENLOCK

#define KEY_DIRECTION

#define KEY_MAIL 155

#define KEY_CYCLEWINDOWS

#define KEY_BOOKMARKS

#define KEY_COMPUTER

#define KEY_BACK

#define KEY_FORWARD

#define KEY_CLOSECD

#define KEY_EJECTCD

160

161

163

164

156 /* AC Bookmarks */

157

159 /* AC Forward */

158 /* AC Back */

#define KEY_EJECTCLOSECD 162

#define KEY_NEXTSONG

#define KEY_PLAYPAUSE

#define KEY_PREVIOUSSONG 165

#define KEY_STOPCD

#define KEY_RECORD

#define KEY_REWIND

#define KEY_PHONE

166

167

168

169 /* Media Select Telephone */

171 /* AL Consumer Control Configuration */

#define KEY_ISO 170

#define KEY_CONFIG

#define KEY_HOMEPAGE 172 /* AC Home */

#define KEY_REFRESH 173 /* AC Refresh */

#define KEY_EXIT 174 /* AC Exit */

#define KEY_MOVE 175

#define KEY_EDIT 176

#define KEY_SCROLLUP 177

#define KEY_SCROLLDOWN 178

#define KEY_KPLEFTPAREN 179

#define KEY_KPRIGHTPAREN 180

#define KEY_NEW 181 /* AC New */

#define KEY_REDO 182 /* AC Redo/Repeat */

#define KEY_F13 183

#define KEY_F14 184

#define KEY_F15 185

#define KEY_F16 186

#define KEY_F17 187

#define KEY_F18 188

#define KEY_F19 189

#define KEY_F20 190

#define KEY_F21 191

#define KEY_F22 192

#define KEY_F23 193

#define KEY_F24 194

#define KEY_PLAYCD 200

#define KEY_PAUSECD 201

#define KEY_PROG3

#define KEY_PROG4

202

203

204 /* AL Dashboard */

205

206 /* AC Close */

208

#define KEY_DASHBOARD

#define KEY_SUSPEND

#define KEY_CLOSE

#define KEY_PLAY

207

#define KEY_FASTFORWARD

#define KEY_BASSBOOST

#define KEY_PRINT

209

210 /* AC Print */

212

213

214

215

217

220

222

218

219 /* AL Checkbook/Finance */

#define KEY_HP 211

#define KEY_CAMERA

#define KEY_SOUND

#define KEY_EMAIL

#define KEY_CHAT

216

#define KEY_QUESTION

#define KEY_SEARCH

#define KEY_CONNECT

#define KEY_FINANCE

#define KEY_SPORT

#define KEY_SHOP

221

#define KEY_ALTERASE

#define KEY_CANCEL 223 /* AC Cancel */

#define KEY_BRIGHTNESSDOWN 224

#define KEY_BRIGHTNESSUP 225

#define KEY_MEDIA

#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video

outputs (Monitor/LCD/TV-out/etc) */

#define KEY_KBDILLUMTOGGLE 228

#define KEY_KBDILLUMDOWN 229

#define KEY_KBDILLUMUP

#define KEY_SEND

#define KEY_REPLY

231 /* AC Send */

232 /* AC Reply */

230

226

#define KEY_FORWARDMAIL

#define KEY_SAVE

#define KEY_BATTERY

#define KEY_BLUETOOTH

#define KEY_WLAN

#define KEY_UNKNOWN

#define KEY_VIDEO_NEXT

#define KEY_VIDEO_PREV

240

238

237

236

#define KEY_DOCUMENTS 235

233 /* AC Forward Msg */

234 /* AC Save */

#define KEY_UWB 239

241 /* drive next video source */

242 /* drive previous video source */

#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */

#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */

#define KEY_DISPLAY_OFF

#define KEY_WIMAX 246

245 /* display device to off state */

本文标签: 键值数组快捷键定义进入