core_usb_class_hid.c 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /*
  2. * Copyright (c) 2022 OpenLuat & AirM2M
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy of
  5. * this software and associated documentation files (the "Software"), to deal in
  6. * the Software without restriction, including without limitation the rights to
  7. * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  8. * the Software, and to permit persons to whom the Software is furnished to do so,
  9. * subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in all
  12. * copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  16. * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  17. * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  18. * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  19. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  20. */
  21. #include "user.h"
  22. static const USB_HIDKeyValue prvKeyList[128] =
  23. {
  24. {HID_KEY_SPACE, 0}, //00
  25. {HID_KEY_SPACE, 0},
  26. {HID_KEY_SPACE, 0},
  27. {HID_KEY_SPACE, 0},
  28. {HID_KEY_SPACE, 0},
  29. {HID_KEY_SPACE, 0},
  30. {HID_KEY_SPACE, 0},
  31. {HID_KEY_SPACE, 0},
  32. {HID_KEY_BACKSPACE, 0}, //08
  33. {HID_KEY_SPACE, 0},
  34. {HID_KEY_ENTER, 0}, //0a
  35. {HID_KEY_SPACE, 0},
  36. {HID_KEY_SPACE, 0},
  37. {HID_KEY_ENTER, 0}, //0d
  38. {HID_KEY_SPACE, 0},
  39. {HID_KEY_SPACE, 0},
  40. {HID_KEY_SPACE, 0}, //10
  41. {HID_KEY_SPACE, 0},
  42. {HID_KEY_SPACE, 0},
  43. {HID_KEY_SPACE, 0},
  44. {HID_KEY_SPACE, 0},
  45. {HID_KEY_SPACE, 0},
  46. {HID_KEY_SPACE, 0},
  47. {HID_KEY_SPACE, 0},
  48. {HID_KEY_SPACE, 0},
  49. {HID_KEY_SPACE, 0},
  50. {HID_KEY_SPACE, 0}, //1a
  51. {HID_KEY_ESC, 0}, //1b
  52. {HID_KEY_SPACE, 0},
  53. {HID_KEY_SPACE, 0},
  54. {HID_KEY_SPACE, 0},
  55. {HID_KEY_SPACE, 0},
  56. {HID_KEY_SPACE, 0}, //20
  57. {HID_KEY_1, 1}, //!
  58. {HID_KEY_QUOTE, 1}, //"
  59. {HID_KEY_3, 1}, //#
  60. {HID_KEY_4, 1}, //$
  61. {HID_KEY_5, 1}, //%
  62. {HID_KEY_7, 1}, //&
  63. {HID_KEY_QUOTE, 0}, //'
  64. {HID_KEY_9, 1}, //(
  65. {HID_KEY_0, 1}, //)
  66. {HID_KEY_8, 1}, //*
  67. {HID_KEY_EQUAL, 1}, //+
  68. {HID_KEY_COMMA, 0}, //,
  69. {HID_KEY_SUB, 0}, //-
  70. {HID_KEY_DOT, 0}, //.
  71. {HID_KEY_QUESTION, 0}, ///
  72. {HID_KEY_0, 0}, //0
  73. {HID_KEY_1, 0}, //1
  74. {HID_KEY_2, 0}, //2
  75. {HID_KEY_3, 0}, //3
  76. {HID_KEY_4, 0}, //4
  77. {HID_KEY_5, 0}, //5
  78. {HID_KEY_6, 0}, //6
  79. {HID_KEY_7, 0}, //7
  80. {HID_KEY_8, 0}, //8
  81. {HID_KEY_9, 0}, //9
  82. {HID_KEY_SEMICOLON, 1}, //:
  83. {HID_KEY_SEMICOLON, 0}, //;
  84. {HID_KEY_COMMA, 1}, // <
  85. {HID_KEY_EQUAL, 0}, //=
  86. {HID_KEY_DOT, 0}, //>
  87. {HID_KEY_QUESTION, 1}, // ?
  88. {HID_KEY_2, 1}, //@
  89. {HID_KEY_A, 1}, //A
  90. {HID_KEY_B, 1}, //B
  91. {HID_KEY_C, 1}, //C
  92. {HID_KEY_D, 1}, //D
  93. {HID_KEY_E, 1}, //E
  94. {HID_KEY_F, 1}, //F
  95. {HID_KEY_G, 1}, //G
  96. {HID_KEY_H, 1}, //H
  97. {HID_KEY_I, 1}, //I
  98. {HID_KEY_J, 1}, //J
  99. {HID_KEY_K, 1}, //K
  100. {HID_KEY_L, 1}, //L
  101. {HID_KEY_M, 1}, //M
  102. {HID_KEY_N, 1}, //N
  103. {HID_KEY_O, 1}, //O
  104. {HID_KEY_P, 1}, //P
  105. {HID_KEY_Q, 1}, //Q
  106. {HID_KEY_R, 1}, //R
  107. {HID_KEY_S, 1}, //S
  108. {HID_KEY_T, 1}, //T
  109. {HID_KEY_U, 1}, //U
  110. {HID_KEY_V, 1}, //V
  111. {HID_KEY_W, 1}, //W
  112. {HID_KEY_X, 1}, //X
  113. {HID_KEY_Y, 1}, //Y
  114. {HID_KEY_Z, 1}, //Z
  115. {HID_KEY_LEFT_BRACKET, 0}, // [
  116. {HID_KEY_VERTICAL_LINE, 0}, // "\"
  117. {HID_KEY_RIGHT_BRACKET, 0}, // ]
  118. {HID_KEY_6, 1}, // ^
  119. {HID_KEY_SUB, 1}, // _
  120. {HID_KEY_WAVE, 0}, // `
  121. {HID_KEY_A, 0}, //A
  122. {HID_KEY_B, 0}, //B
  123. {HID_KEY_C, 0}, //C
  124. {HID_KEY_D, 0}, //D
  125. {HID_KEY_E, 0}, //E
  126. {HID_KEY_F, 0}, //F
  127. {HID_KEY_G, 0}, //G
  128. {HID_KEY_H, 0}, //H
  129. {HID_KEY_I, 0}, //I
  130. {HID_KEY_J, 0}, //J
  131. {HID_KEY_K, 0}, //K
  132. {HID_KEY_L, 0}, //L
  133. {HID_KEY_M, 0}, //M
  134. {HID_KEY_N, 0}, //N
  135. {HID_KEY_O, 0}, //O
  136. {HID_KEY_P, 0}, //P
  137. {HID_KEY_Q, 0}, //Q
  138. {HID_KEY_R, 0}, //R
  139. {HID_KEY_S, 0}, //S
  140. {HID_KEY_T, 0}, //T
  141. {HID_KEY_U, 0}, //U
  142. {HID_KEY_V, 0}, //V
  143. {HID_KEY_W, 0}, //W
  144. {HID_KEY_X, 0}, //X
  145. {HID_KEY_Y, 0}, //Y
  146. {HID_KEY_Z, 0}, //Z
  147. {HID_KEY_LEFT_BRACKET, 1}, // {
  148. {HID_KEY_VERTICAL_LINE, 1}, // |
  149. {HID_KEY_RIGHT_BRACKET, 1}, // }
  150. {HID_KEY_WAVE, 1}, // ~
  151. {HID_KEY_PAD_DOT, 0}, // DEL
  152. };
  153. USB_HIDKeyValue USB_HIDGetValueFromAscii(uint8_t ascii)
  154. {
  155. if (ascii & 0x80)
  156. {
  157. return prvKeyList[0];
  158. }
  159. else
  160. {
  161. return prvKeyList[ascii];
  162. }
  163. }