📄 lh7a400_evb_keyboard_driver.c
字号:
}
else
{
goto_debounce_state();
}
}
else
{
/* keep scanning */
gpio_keyscan_set(GPIO_KSCAN_COL_ENABLE + current_column + 1);
timer_start(KB_KEYBOARD_TIMER);
}
}
else
{
/* key found */
switch (current_column)
{
case 0:
/* see if any character keys are pressed */
if (row & KB_GRAVE_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '~';
else
scanned_key.decoded.c = '`';
else if (row & KB_ESC_KEY)
scanned_key.decoded.c = KB_ESC;
else if (row & KB_ONE_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PF1;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '!';
else
scanned_key.decoded.c = '1';
else if (row & KB_TWO_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PF2;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '@';
else
scanned_key.decoded.c = '2';
else if (row & KB_NINE_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PF9;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '(';
else
scanned_key.decoded.c = '9';
else if (row & KB_ZERO_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PF10;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = ')';
else
scanned_key.decoded.c = '0';
else if (row & KB_MINUS_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_NUMLOCK;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '_';
else
scanned_key.decoded.c = '-';
else if (row & KB_EQUALS_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_BREAK;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '+';
else
scanned_key.decoded.c = '=';
else if (row & KB_BACKSPACE_KEY)
scanned_key.decoded.c = KB_BACKSPACE;
break;
case 1:
if (row & KB_BACKSLASH_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '|';
else
scanned_key.decoded.c = '\\';
else if (row & KB_DEL_KEY)
scanned_key.decoded.c = KB_DEL;
else if (row & KB_T_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 't';
else
scanned_key.decoded.c = 'T';
else
if (caps_lock)
scanned_key.decoded.c = 'T';
else
scanned_key.decoded.c = 't';
else if (row & KB_Y_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'y';
else
scanned_key.decoded.c = 'Y';
else
if (caps_lock)
scanned_key.decoded.c = 'Y';
else
scanned_key.decoded.c = 'y';
else if (row & KB_U_KEY)
if (num_lock)
scanned_key.decoded.c = '4';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'u';
else
scanned_key.decoded.c = 'U';
else
if (caps_lock)
scanned_key.decoded.c = 'U';
else
scanned_key.decoded.c = 'u';
else if (row & KB_I_KEY)
if (num_lock)
scanned_key.decoded.c = '5';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'i';
else
scanned_key.decoded.c = 'I';
else
if (caps_lock)
scanned_key.decoded.c = 'I';
else
scanned_key.decoded.c = 'i';
else if (row & KB_ENTER_KEY)
scanned_key.decoded.c = KB_ENTER;
else if (row & KB_DOWN_KEY)
{
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PAGE_DOWN;
else
scanned_key.decoded.c = KB_DOWN;
}
break;
case 2:
if (row & KB_TAB_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = KB_TAB;
else
scanned_key.decoded.c = KB_BACKTAB;
else if (row & KB_Q_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'q';
else
scanned_key.decoded.c = 'Q';
else
if (caps_lock)
scanned_key.decoded.c = 'Q';
else
scanned_key.decoded.c = 'q';
else if (row & KB_W_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'w';
else
scanned_key.decoded.c = 'W';
else
if (caps_lock)
scanned_key.decoded.c = 'W';
else
scanned_key.decoded.c = 'w';
else if (row & KB_E_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'e';
else
scanned_key.decoded.c = 'E';
else
if (caps_lock)
scanned_key.decoded.c = 'E';
else
scanned_key.decoded.c = 'e';
else if (row & KB_R_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'r';
else
scanned_key.decoded.c = 'R';
else
if (caps_lock)
scanned_key.decoded.c = 'R';
else
scanned_key.decoded.c = 'r';
else if (row & KB_O_KEY)
if (num_lock)
scanned_key.decoded.c = '6';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'o';
else
scanned_key.decoded.c = 'O';
else
if (caps_lock)
scanned_key.decoded.c = 'O';
else
scanned_key.decoded.c = 'o';
else if (row & KB_P_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_INS;
else if (num_lock)
scanned_key.decoded.c = '-';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'p';
else
scanned_key.decoded.c = 'P';
else
if (caps_lock)
scanned_key.decoded.c = 'P';
else
scanned_key.decoded.c = 'p';
else if (row & KB_LBRACKET_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PAUSE;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '{';
else
scanned_key.decoded.c = '[';
else if (row & KB_RBRACKET_KEY)
{
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_SCRLK;
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
scanned_key.decoded.c = '}';
else
scanned_key.decoded.c = ']';
}
break;
case 3:
if (row & KB_Z_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'z';
else
scanned_key.decoded.c = 'Z';
else
if (caps_lock)
scanned_key.decoded.c = 'Z';
else
scanned_key.decoded.c = 'z';
else if (row & KB_CAPS_LOCK_KEY)
scanned_key.decoded.c = KB_CAPSLOCK;
else if (row & KB_K_KEY)
if (num_lock)
scanned_key.decoded.c = '2';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'k';
else
scanned_key.decoded.c = 'K';
else
if (caps_lock)
scanned_key.decoded.c = 'K';
else
scanned_key.decoded.c = 'k';
else if (row & KB_L_KEY)
if (num_lock)
scanned_key.decoded.c = '3';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'l';
else
scanned_key.decoded.c = 'L';
else
if (caps_lock)
scanned_key.decoded.c = 'L';
else
scanned_key.decoded.c = 'l';
else if (row & KB_SEMICOLON_KEY)
{
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PRTSCR;
else if (num_lock)
scanned_key.decoded.c = '+';
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.left_shift)
scanned_key.decoded.c = ':';
else
scanned_key.decoded.c = ';';
}
else if (row & KB_APOSTROPHE_KEY)
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_SYSREQ;
else if (num_lock)
scanned_key.decoded.c = '+';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.left_shift)
scanned_key.decoded.c = '\"';
else
scanned_key.decoded.c = '\'';
else if (row & KB_UP_KEY)
{
if (scanned_key.decoded.fn)
scanned_key.decoded.c = KB_PAGE_UP;
else
scanned_key.decoded.c = KB_UP;
}
break;
case 4:
if (row & KB_A_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'a';
else
scanned_key.decoded.c = 'A';
else
if (caps_lock)
scanned_key.decoded.c = 'A';
else
scanned_key.decoded.c = 'a';
else if (row & KB_S_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 's';
else
scanned_key.decoded.c = 'S';
else
if (caps_lock)
scanned_key.decoded.c = 'S';
else
scanned_key.decoded.c = 's';
else if (row & KB_D_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'd';
else
scanned_key.decoded.c = 'D';
else
if (caps_lock)
scanned_key.decoded.c = 'D';
else
scanned_key.decoded.c = 'd';
else if (row & KB_F_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'f';
else
scanned_key.decoded.c = 'F';
else
if (caps_lock)
scanned_key.decoded.c = 'F';
else
scanned_key.decoded.c = 'f';
else if (row & KB_G_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'g';
else
scanned_key.decoded.c = 'G';
else
if (caps_lock)
scanned_key.decoded.c = 'G';
else
scanned_key.decoded.c = 'g';
else if (row & KB_H_KEY)
if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
if (caps_lock)
scanned_key.decoded.c = 'h';
else
scanned_key.decoded.c = 'H';
else
if (caps_lock)
scanned_key.decoded.c = 'H';
else
scanned_key.decoded.c = 'h';
else if (row & KB_J_KEY)
if (num_lock)
scanned_key.decoded.c = '1';
else if (scanned_key.decoded.left_shift ||
scanned_key.decoded.right_shift)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -