CH9329 按键编码整理 Arduino测试

键盘操作部分

宏定义按键编码

/*	字母按键	*/
#define	KEYBORD_A	0x00,0x04,0x10
#define	KEYBORD_B	0x00,0x05,0x11
#define	KEYBORD_C	0x00,0x06,0x12
#define	KEYBORD_D	0x00,0x07,0x13
#define	KEYBORD_E	0x00,0x08,0x14
#define	KEYBORD_F	0x00,0x09,0x15
#define	KEYBORD_G	0x00,0x0A,0x16
#define	KEYBORD_H	0x00,0x0B,0x17
#define	KEYBORD_I	0x00,0x0C,0x18
#define	KEYBORD_J	0x00,0x0D,0x19
#define	KEYBORD_K	0x00,0x0E,0x1A
#define	KEYBORD_L	0x00,0x0F,0x1B
#define	KEYBORD_M	0x00,0x10,0x1C
#define	KEYBORD_N	0x00,0x11,0x1D
#define	KEYBORD_O	0x00,0x12,0x1E
#define	KEYBORD_P	0x00,0x13,0x1F
#define	KEYBORD_Q	0x00,0x14,0x20
#define	KEYBORD_R	0x00,0x15,0x21
#define	KEYBORD_S	0x00,0x16,0x22
#define	KEYBORD_T	0x00,0x17,0x23
#define	KEYBORD_U	0x00,0x18,0x24
#define	KEYBORD_V	0x00,0x19,0x25
#define	KEYBORD_W	0x00,0x1A,0x26
#define	KEYBORD_X	0x00,0x1B,0x27
#define	KEYBORD_Y	0x00,0x1C,0x28
#define	KEYBORD_Z	0x00,0x1D,0x29
/*	数字按键	*/
#define	KEYBORD_1	0x00,0x1E,0x2A
#define	KEYBORD_2	0x00,0x1F,0x2B
#define	KEYBORD_3	0x00,0x20,0x2C
#define	KEYBORD_4	0x00,0x21,0x2D
#define	KEYBORD_5	0x00,0x22,0x2E
#define	KEYBORD_6	0x00,0x23,0x2F
#define	KEYBORD_7	0x00,0x24,0x30
#define	KEYBORD_8	0x00,0x25,0x31
#define	KEYBORD_9	0x00,0x26,0x32
#define	KEYBORD_0	0x00,0x27,0x33
/*	其他按键	*/
#define	KEYBORD_ENTER	0x00,0x28,0x34
#define	KEYBORD_ESC	0x00,0x29,0x35
#define	KEYBORD_BACKSPACE	0x00,0x2A,0x36
#define	KEYBORD_TAB	0x00,0x2B,0x37
#define	KEYBORD_SPACE	0x00,0x2C,0x38
#define	KEYBORD_MINUS_SIGN	0x00,0x2D,0x39
#define	KEYBORD_EQUAL_TO_SIGN	0x00,0x2E,0x3A
#define	KEYBORD_SQUARE_BRACKETS_LEFT	0x00,0x2F,0x3B
#define	KEYBORD_SQUARE_BRACKETS_RIGHT	0x00,0x30,0x3C
#define	KEYBORD_BACKSLASH	0x00,0x31,0x3D
#define	KEYBORD_SEMICOLON	0x00,0x33,0x3F
#define	KEYBORD_SINGLE_QUOTATION_MARK	0x00,0x34,0x40
#define	KEYBORD_FLAG	0x00,0x35,0x41
#define	KEYBORD_COMMA	0x00,0x36,0x42
#define	KEYBORD_POINT	0x00,0x37,0x43
#define	KEYBORD_SLASH	0x00,0x38,0x44
#define	KEYBORD_CAPSLOCK	0x00,0x39,0x45
/*	其他F系列按键	*/
#define	KEYBORD_F1	0x00,0x3A,0x46
#define	KEYBORD_F2	0x00,0x3B,0x47
#define	KEYBORD_F3	0x00,0x3C,0x48
#define	KEYBORD_F4	0x00,0x3D,0x49
#define	KEYBORD_F5	0x00,0x3E,0x4A
#define	KEYBORD_F6	0x00,0x3F,0x4B
#define	KEYBORD_F7	0x00,0x40,0x4C
#define	KEYBORD_F8	0x00,0x41,0x4D
#define	KEYBORD_F9	0x00,0x42,0x4E
#define	KEYBORD_F10	0x00,0x43,0x4F
#define	KEYBORD_F11	0x00,0x44,0x50
#define	KEYBORD_F12	0x00,0x45,0x51
/*	其他按键	*/
#define	KEYBORD_PRINT_SCR	0x00,0x46,0x52
#define	KEYBORD_SCROLLLOCK	0x00,0x47,0x53
#define	KEYBORD_PAUSE_BREAK	0x00,0x48,0x54
#define	KEYBORD_INSERT	0x00,0x49,0x55
#define	KEYBORD_HOME	0x00,0x4A,0x56
#define	KEYBORD_PAGE_UP	0x00,0x4B,0x57
#define	KEYBORD_DELETE	0x00,0x4C,0x58
#define	KEYBORD_END	0x00,0x4D,0x59
#define	KEYBORD_PAGE_DOWN	0x00,0x4E,0x5A
/*	方向按键	*/
#define	KEYBORD_RIGHT	0x00,0x4F,0x5B
#define	KEYBORD_LEFT	0x00,0x50,0x5C
#define	KEYBORD_DOWN	0x00,0x51,0x5D
#define	KEYBORD_UP	0x00,0x52,0x5E
/*	小键盘按键	*/
#define	KEYBORD_NUMLOCK	0x00,0x53,0x5F
#define	KEYBORD_NUMBER_DIVISION_SIGN	0x00,0x54,0x60
#define	KEYBORD_NUMBER_MULTIPLICATION_SIGN	0x00,0x55,0x61
#define	KEYBORD_NUMBER_MINUS_SIGN	0x00,0x56,0x62
#define	KEYBORD_NUMBER_PLUS_SIGN	0x00,0x57,0x63
#define	KEYBORD_NUMBER_ENTER	0x00,0x58,0x64
#define	KEYBORD_NUMBER_END	0x00,0x59,0x65
#define	KEYBORD_NUMBER_DOWN	0x00,0x5A,0x66
#define	KEYBORD_NUMBER_NEXT	0x00,0x5B,0x67
#define	KEYBORD_NUMBER_LEFT	0x00,0x5C,0x68
#define	KEYBORD_NUMBER_CLEAR	0x00,0x5D,0x69
#define	KEYBORD_NUMBER_RIGHT	0x00,0x5E,0x6A
#define	KEYBORD_NUMBER_HOME	0x00,0x5F,0x6B
#define	KEYBORD_NUMBER_UP	0x00,0x60,0x6C
#define	KEYBORD_NUMBER_PRIOR	0x00,0x61,0x6D
#define	KEYBORD_NUMBER_INSERT	0x00,0x62,0x6E
#define	KEYBORD_NUMBER_DELETE	0x00,0x63,0x6F
#define	KEYBORD_NUMBER_APPS	0x00,0x65,0x71
/*	功能按键	*/
#define	KEYBORD_CTRL_LEFT	0x01,0x00,0x0D
#define	KEYBORD_SHIFT_LEFT	0x02,0x00,0x0E
#define	KEYBORD_ALT_LEFT	0x04,0x00,0x10
#define	KEYBORD_ALT_RIGHT	0x40,0x00,0x4C
#define	KEYBORD_SHIFT_RIGHT	0x20,0x00,0x2C
#define	KEYBORD_CTRL_RIGHT	0x10,0x00,0x0D
#define	KEYBORD_WIN_LEFT	0x08,0x00,0x0D
#define	KEYBORD_WIN_RIGHT	0x80,0x00,0x0D
/*	数组长度	*/
#define	KEYBORD_CODE_LEN	14

实现函数(以Arduino为例)

// 按键按下100ms并弹起
void KeyBordPrint(byte code5, byte code7, byte code13) {
  // ['57', 'AB', '0', '2', '8', null, '0', null, '0', '0', '0', '0', '0', null]
  // 按下的按键码
  byte codeDown[KEYBORD_CODE_LEN] = { 0x57, 0xAB, 0x00, 0x02, 0x08, code5, 0x00, code7, 0x00, 0x0, 0x00, 0x00, 0x00, code13 };
  // 弹起按键
  byte codeUp[KEYBORD_CODE_LEN] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x0C /*]*/ };
  Serial.write(codeDown, KEYBORD_CODE_LEN);
  delay(100);
  Serial.write(codeUp, KEYBORD_CODE_LEN);
}

// 按键按下  code 按键码
void KeyBordPress(byte code5, byte code7, byte code13) {
  // 按下的按键码
  byte codeDown[KEYBORD_CODE_LEN] = { 0x57, 0xAB, 0x00, 0x02, 0x08, code5, 0x00, code7, 0x00, 0x0, 0x00, 0x00, 0x00, code13 };
  Serial.write(codeDown, KEYBORD_CODE_LEN);
}

// 弹起所有按键
void KeyBordReleaseAll() {
  // 按下的按键码
  byte codeUp[KEYBORD_CODE_LEN] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x0C /*]*/ };
  Serial.write(codeUp, KEYBORD_CODE_LEN);
}

调用方法

// 按下键盘H
KeyBordPrint(KEYBORD_H);

// 模拟拷贝操作
// 按下左CTRL
KeyBordPress(KEYBORD_CTRL_LEFT);
// 按下C
KeyBordPress(KEYBORD_C);
// 延时100ms
delay(100);
// 弹起所以按键
KeyBordReleaseAll();

鼠标操作部分

宏定义

/*	数组长度	*/
#define	MOUSE_CODE_LEN	13

鼠标移动到绝对坐标位置(只支持PC)

// PC显示屏宽高
int DisplayScreenWidth = 3840;
int DisplayScreenHeight = 2160;
// 鼠标移动到坐标位置 绝对坐标位置
void MouseMoveAbsolute(int x, int y) {
  /*
  计算位置X1 = ( 100 * 4096 ) / 1280 = 320 = 0x140
  计算位置Y1 = ( 100 * 4096 ) / 768  = 533 = 0x215 
  */
  int val_x = (x * 4096) / DisplayScreenWidth;
  int val_y = (y * 4096) / DisplayScreenHeight;
  int sum = 0x00;
  // 57 AB 00 04 07 02 00 xLow xHigh yLow yHigh 00 SUM
  byte code[MOUSE_CODE_LEN] = { 0x57, 0xAB, 0x00, 0x04, 0x07, 0x02, 0x00, /*[*/ 0x04, 0x00, 0x00, 0x00, /*]*/ 0x00, /*[SUM*/ 0x00 /*]*/ };
  // 赋值低8位
  code[7] = val_x & 0xFF;
  // 赋值高8位
  code[8] = val_x >> 8;
  // 赋值低8位
  code[9] = val_y & 0xFF;
  // 赋值高8位
  code[10] = val_y >> 8;
  // 求和最后的校验码
  for (byte i = 0; i < MOUSE_CODE_LEN; i++) {
    sum += code[i];
  }
  code[12] = sum & 0xFF;
  Serial.write(code, 13);
}

Arduino Demo

/* 字母按键 */
#define KEYBORD_A 0x00, 0x04, 0x10
#define KEYBORD_B 0x00, 0x05, 0x11
#define KEYBORD_C 0x00, 0x06, 0x12
#define KEYBORD_D 0x00, 0x07, 0x13
#define KEYBORD_E 0x00, 0x08, 0x14
#define KEYBORD_F 0x00, 0x09, 0x15
#define KEYBORD_G 0x00, 0x0A, 0x16
#define KEYBORD_H 0x00, 0x0B, 0x17
#define KEYBORD_I 0x00, 0x0C, 0x18
#define KEYBORD_J 0x00, 0x0D, 0x19
#define KEYBORD_K 0x00, 0x0E, 0x1A
#define KEYBORD_L 0x00, 0x0F, 0x1B
#define KEYBORD_M 0x00, 0x10, 0x1C
#define KEYBORD_N 0x00, 0x11, 0x1D
#define KEYBORD_O 0x00, 0x12, 0x1E
#define KEYBORD_P 0x00, 0x13, 0x1F
#define KEYBORD_Q 0x00, 0x14, 0x20
#define KEYBORD_R 0x00, 0x15, 0x21
#define KEYBORD_S 0x00, 0x16, 0x22
#define KEYBORD_T 0x00, 0x17, 0x23
#define KEYBORD_U 0x00, 0x18, 0x24
#define KEYBORD_V 0x00, 0x19, 0x25
#define KEYBORD_W 0x00, 0x1A, 0x26
#define KEYBORD_X 0x00, 0x1B, 0x27
#define KEYBORD_Y 0x00, 0x1C, 0x28
#define KEYBORD_Z 0x00, 0x1D, 0x29
/* 数字按键 */
#define KEYBORD_1 0x00, 0x1E, 0x2A
#define KEYBORD_2 0x00, 0x1F, 0x2B
#define KEYBORD_3 0x00, 0x20, 0x2C
#define KEYBORD_4 0x00, 0x21, 0x2D
#define KEYBORD_5 0x00, 0x22, 0x2E
#define KEYBORD_6 0x00, 0x23, 0x2F
#define KEYBORD_7 0x00, 0x24, 0x30
#define KEYBORD_8 0x00, 0x25, 0x31
#define KEYBORD_9 0x00, 0x26, 0x32
#define KEYBORD_0 0x00, 0x27, 0x33
/* 其他按键 */
#define KEYBORD_ENTER 0x00, 0x28, 0x34
#define KEYBORD_ESC 0x00, 0x29, 0x35
#define KEYBORD_BACKSPACE 0x00, 0x2A, 0x36
#define KEYBORD_TAB 0x00, 0x2B, 0x37
#define KEYBORD_SPACE 0x00, 0x2C, 0x38
#define KEYBORD_MINUS_SIGN 0x00, 0x2D, 0x39
#define KEYBORD_EQUAL_TO_SIGN 0x00, 0x2E, 0x3A
#define KEYBORD_SQUARE_BRACKETS_LEFT 0x00, 0x2F, 0x3B
#define KEYBORD_SQUARE_BRACKETS_RIGHT 0x00, 0x30, 0x3C
#define KEYBORD_BACKSLASH 0x00, 0x31, 0x3D
#define KEYBORD_SEMICOLON 0x00, 0x33, 0x3F
#define KEYBORD_SINGLE_QUOTATION_MARK 0x00, 0x34, 0x40
#define KEYBORD_FLAG 0x00, 0x35, 0x41
#define KEYBORD_COMMA 0x00, 0x36, 0x42
#define KEYBORD_POINT 0x00, 0x37, 0x43
#define KEYBORD_SLASH 0x00, 0x38, 0x44
#define KEYBORD_CAPSLOCK 0x00, 0x39, 0x45
/* 其他F系列按键 */
#define KEYBORD_F1 0x00, 0x3A, 0x46
#define KEYBORD_F2 0x00, 0x3B, 0x47
#define KEYBORD_F3 0x00, 0x3C, 0x48
#define KEYBORD_F4 0x00, 0x3D, 0x49
#define KEYBORD_F5 0x00, 0x3E, 0x4A
#define KEYBORD_F6 0x00, 0x3F, 0x4B
#define KEYBORD_F7 0x00, 0x40, 0x4C
#define KEYBORD_F8 0x00, 0x41, 0x4D
#define KEYBORD_F9 0x00, 0x42, 0x4E
#define KEYBORD_F10 0x00, 0x43, 0x4F
#define KEYBORD_F11 0x00, 0x44, 0x50
#define KEYBORD_F12 0x00, 0x45, 0x51
/* 其他按键 */
#define KEYBORD_PRINT_SCR 0x00, 0x46, 0x52
#define KEYBORD_SCROLLLOCK 0x00, 0x47, 0x53
#define KEYBORD_PAUSE_BREAK 0x00, 0x48, 0x54
#define KEYBORD_INSERT 0x00, 0x49, 0x55
#define KEYBORD_HOME 0x00, 0x4A, 0x56
#define KEYBORD_PAGE_UP 0x00, 0x4B, 0x57
#define KEYBORD_DELETE 0x00, 0x4C, 0x58
#define KEYBORD_END 0x00, 0x4D, 0x59
#define KEYBORD_PAGE_DOWN 0x00, 0x4E, 0x5A
/* 方向按键 */
#define KEYBORD_RIGHT 0x00, 0x4F, 0x5B
#define KEYBORD_LEFT 0x00, 0x50, 0x5C
#define KEYBORD_DOWN 0x00, 0x51, 0x5D
#define KEYBORD_UP 0x00, 0x52, 0x5E
/* 小键盘按键 */
#define KEYBORD_NUMLOCK 0x00, 0x53, 0x5F
#define KEYBORD_NUMBER_DIVISION_SIGN 0x00, 0x54, 0x60
#define KEYBORD_NUMBER_MULTIPLICATION_SIGN 0x00, 0x55, 0x61
#define KEYBORD_NUMBER_MINUS_SIGN 0x00, 0x56, 0x62
#define KEYBORD_NUMBER_PLUS_SIGN 0x00, 0x57, 0x63
#define KEYBORD_NUMBER_ENTER 0x00, 0x58, 0x64
#define KEYBORD_NUMBER_END 0x00, 0x59, 0x65
#define KEYBORD_NUMBER_DOWN 0x00, 0x5A, 0x66
#define KEYBORD_NUMBER_NEXT 0x00, 0x5B, 0x67
#define KEYBORD_NUMBER_LEFT 0x00, 0x5C, 0x68
#define KEYBORD_NUMBER_CLEAR 0x00, 0x5D, 0x69
#define KEYBORD_NUMBER_RIGHT 0x00, 0x5E, 0x6A
#define KEYBORD_NUMBER_HOME 0x00, 0x5F, 0x6B
#define KEYBORD_NUMBER_UP 0x00, 0x60, 0x6C
#define KEYBORD_NUMBER_PRIOR 0x00, 0x61, 0x6D
#define KEYBORD_NUMBER_INSERT 0x00, 0x62, 0x6E
#define KEYBORD_NUMBER_DELETE 0x00, 0x63, 0x6F
#define KEYBORD_NUMBER_APPS 0x00, 0x65, 0x71
/* 功能按键 */
#define KEYBORD_CTRL_LEFT 0x01, 0x00, 0x0D
#define KEYBORD_SHIFT_LEFT 0x02, 0x00, 0x0E
#define KEYBORD_ALT_LEFT 0x04, 0x00, 0x10
#define KEYBORD_ALT_RIGHT 0x40, 0x00, 0x4C
#define KEYBORD_SHIFT_RIGHT 0x20, 0x00, 0x2C
#define KEYBORD_CTRL_RIGHT 0x10, 0x00, 0x0D
#define KEYBORD_WIN_LEFT 0x08, 0x00, 0x0D
#define KEYBORD_WIN_RIGHT 0x80, 0x00, 0x0D

// 显示屏宽高
int DisplayScreenWidth = 3840;
int DisplayScreenHeight = 2160;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(3000);
}

int tag = 1;

void loop() {
  // put your main code here, to run repeatedly:
  if (1 == tag) {
    MouseMoveAbsolute(100, 120);
    delay(3000);
    MouseMoveAbsolute(3700, 1900);
    delay(3000);
    KeyBordClickCode(0x04);
    delay(3000);
    KeyBordPrint(KEYBORD_H);
    delay(3000);
  }
}
/*

*/
// 按键按下  code 按键码
void KeyBordPrint(byte code5, byte code7, byte code13) {
  // ['57', 'AB', '0', '2', '8', null, '0', null, '0', '0', '0', '0', '0', null]
  // 按下的按键码
  byte codeDown[14] = { 0x57, 0xAB, 0x00, 0x02, 0x08, code5, 0x00, code7, 0x00, 0x0, 0x00, 0x00, 0x00, code13 };
  // 弹起按键
  byte codeUp[14] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x0C /*]*/ };
  Serial.write(codeDown, 14);
  delay(100);
  Serial.write(codeUp, 14);
}

// 按键按下  code 按键码
void KeyBordPress(byte code5, byte code7, byte code13) {
  // 按下的按键码
  byte codeDown[14] = { 0x57, 0xAB, 0x00, 0x02, 0x08, code5, 0x00, code7, 0x00, 0x0, 0x00, 0x00, 0x00, code13 };
  Serial.write(codeDown, 14);
}

// 按键按下  code 按键码
void KeyBordReleaseAll() {
  // 按下的按键码
  byte codeUp[14] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x0C /*]*/ };
  Serial.write(codeUp, 14);
}


// 按键按下  code 按键码
void KeyBordClickCode(byte code) {
  int sum = 0x00;
  byte codeDown[] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, /*[*/ code /*]*/, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x00 /*]*/ };
  byte codeUp[] = { 0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*[SUM*/ 0x0C /*]*/ };
  for (byte i = 0; i < 14; i++) {
    sum += codeDown[i];
  }
  codeDown[13] = sum & 0xFF;
  Serial.write(codeDown, 14);
  delay(100);
  Serial.write(codeUp, 14);
}

// 鼠标移动到坐标位置 绝对坐标位置
void MouseMoveAbsolute(int x, int y) {
  /*
  计算位置X1 = ( 100 * 4096 ) / 1280 = 320 = 0x140
  计算位置Y1 = ( 100 * 4096 ) / 768  = 533 = 0x215 
  */
  int val_x = (x * 4096) / DisplayScreenWidth;
  int val_y = (y * 4096) / DisplayScreenHeight;
  int sum = 0x00;
  // 57 AB 00 04 07 02 00 xL xH yL yH 00 SUM
  byte code[13] = { 0x57, 0xAB, 0x00, 0x04, 0x07, 0x02, 0x00, /*[*/ 0x04, 0x00, 0x00, 0x00, /*]*/ 0x00, /*[SUM*/ 0x00 /*]*/ };
  code[7] = val_x & 0xFF;
  code[8] = val_x >> 8;
  code[9] = val_y & 0xFF;
  code[10] = val_y >> 8;
  for (byte i = 0; i < 13; i++) {
    sum += code[i];
  }
  code[12] = sum & 0xFF;
  Serial.write(code, 13);
}

JS

let o = {};
o["KEYBORD_A"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10];
o["KEYBORD_B"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11];
o["KEYBORD_C"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12];
o["KEYBORD_D"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13];
o["KEYBORD_E"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14];
o["KEYBORD_F"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15];
o["KEYBORD_G"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16];
o["KEYBORD_H"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17];
o["KEYBORD_I"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18];
o["KEYBORD_J"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19];
o["KEYBORD_K"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A];
o["KEYBORD_L"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B];
o["KEYBORD_M"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C];
o["KEYBORD_N"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D];
o["KEYBORD_O"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E];
o["KEYBORD_P"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F];
o["KEYBORD_Q"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20];
o["KEYBORD_R"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21];
o["KEYBORD_S"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22];
o["KEYBORD_T"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23];
o["KEYBORD_U"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24];
o["KEYBORD_V"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25];
o["KEYBORD_W"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26];
o["KEYBORD_X"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27];
o["KEYBORD_Y"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28];
o["KEYBORD_Z"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29];
o["KEYBORD_1"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A];
o["KEYBORD_2"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B];
o["KEYBORD_3"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C];
o["KEYBORD_4"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D];
o["KEYBORD_5"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E];
o["KEYBORD_6"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F];
o["KEYBORD_7"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30];
o["KEYBORD_8"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31];
o["KEYBORD_9"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32];
o["KEYBORD_0"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33];
o["KEYBORD_ENTER"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34];
o["KEYBORD_ESC"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35];
o["KEYBORD_BACKSPACE"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36];
o["KEYBORD_TAB"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37];
o["KEYBORD_SPACE"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38];
o["KEYBORD_MINUS_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39] /* - 减号 */;
o["KEYBORD_EQUAL_TO_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A] /*  */;
o["KEYBORD_SQUARE_BRACKETS_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B] /* [ 左方括号 */;
o["KEYBORD_SQUARE_BRACKETS_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C] /* ] 右方括号 */;
o["KEYBORD_BACKSLASH"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D] /*  反斜杠 */;
o["KEYBORD_SEMICOLON"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F] /*  分号 */;
o["KEYBORD_SINGLE_QUOTATION_MARK"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40] /* ' 单引号 */;
o["KEYBORD_FLAG"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41] /* ` 标志符 */;
o["KEYBORD_COMMA"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42] /* , 逗号 */;
o["KEYBORD_POINT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43] /* . 点号 */;
o["KEYBORD_SLASH"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44] /* / 斜杠 */;
o["KEYBORD_CAPSLOCK"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45];
o["KEYBORD_F1"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46];
o["KEYBORD_F2"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47];
o["KEYBORD_F3"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48];
o["KEYBORD_F4"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49];
o["KEYBORD_F5"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A];
o["KEYBORD_F6"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B];
o["KEYBORD_F7"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C];
o["KEYBORD_F8"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D];
o["KEYBORD_F9"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E];
o["KEYBORD_F10"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F];
o["KEYBORD_F11"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50];
o["KEYBORD_F12"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51];
o["KEYBORD_PRINT_SCR"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52];
o["KEYBORD_SCROLLLOCK"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53];
o["KEYBORD_PAUSE_BREAK"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54];
o["KEYBORD_INSERT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55];
o["KEYBORD_HOME"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56];
o["KEYBORD_PAGE_UP"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57];
o["KEYBORD_DELETE"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58];
o["KEYBORD_END"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59];
o["KEYBORD_PAGE_DOWN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A];
o["KEYBORD_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B];
o["KEYBORD_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C];
o["KEYBORD_DOWN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D];
o["KEYBORD_UP"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E];
o["KEYBORD_NUMLOCK"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F];
o["KEYBORD_NUMBER_DIVISION_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60] /* / 除号 */;
o["KEYBORD_NUMBER_MULTIPLICATION_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61] /* * 乘号 */;
o["KEYBORD_NUMBER_MINUS_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62] /* - 减号 */;
o["KEYBORD_NUMBER_PLUS_SIGN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63] /* + 加号 */;
o["KEYBORD_NUMBER_ENTER"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64];
o["KEYBORD_NUMBER_END"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65];
o["KEYBORD_NUMBER_DOWN"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66];
o["KEYBORD_NUMBER_NEXT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67];
o["KEYBORD_NUMBER_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68];
o["KEYBORD_NUMBER_CLEAR"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69];
o["KEYBORD_NUMBER_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A];
o["KEYBORD_NUMBER_HOME"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B];
o["KEYBORD_NUMBER_UP"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C];
o["KEYBORD_NUMBER_PRIOR"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D];
o["KEYBORD_NUMBER_INSERT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E];
o["KEYBORD_NUMBER_DELETE"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F];
o["KEYBORD_NUMBER_APPS"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71];
o["KEYBORD_CTRL_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D];
o["KEYBORD_SHIFT_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E];
o["KEYBORD_ALT_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10];
o["KEYBORD_ALT_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C];
o["KEYBORD_SHIFT_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C];
o["KEYBORD_CTRL_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D];
o["KEYBORD_WIN_LEFT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D];
o["KEYBORD_WIN_RIGHT"] = [0x57, 0xAB, 0x00, 0x02, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D];
  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32-S3是一款由Espressif Systems公司开发的单片机,集成了Wi-Fi和蓝牙功能,常用于物联网(IoT)应用。在Arduino中使用ESP32S3控制LED灯和按键,你可以按照以下步骤操作: 1. **硬件连接**: - 将LED灯的正极连接到ESP32 S3的GPIO引脚(通常是数字IO pin,如D1或D2)。 - 将LED灯的负极接到GND。 - 按键连接到另一个GPIO引脚(如D3或D4),通常使用中断模式来检测按键按下事件。 2. **软件配置**: - 在Arduino IDE中,选择适合ESP32-S3的Boards(如`Espressif ESP32S3`)。 - 使用`#include <WiFi.h>` 和 `#include <ArduinoJson.h>` 或其他必要的库(如果要处理网络请求)。 - 初始化GPIO,设置按键的中断模式,并为LED灯定义一个函数,比如`void ledOn()`和`void ledOff()`来控制亮度。 ```cpp void setup() { // 初始化GPIO pinMode(LED_PIN, OUTPUT); // LED PIN是你的LED灯对应引脚 pinMode(KEY_PIN, INPUT_PULLUP); // KEY_PIN是你的按键对应引脚,设置为上拉 // 如果需要,注册按键中断 attachInterrupt(digitalPinToInterrupt(KEY_PIN), keyPressHandler, RISING); } void loop() { if (keyPressed()) { // 判断按键是否被按下 digitalWrite(LED_PIN, HIGH); // LED亮起 } else { digitalWrite(LED_PIN, LOW); // LED熄灭 } } void keyPressHandler() { digitalWrite(LED_PIN, HIGH); // 按键按下时,点亮LED delay(1000); // 示例中短暂保持点亮状态,可根据需求修改 digitalWrite(LED_PIN, LOW); // 松开按键后,LED熄灭 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值