swedishlayouttoabclayout.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /*
  2. USB Keyboard driver for Luxor ABC 806 computers
  3. Copyright (C) 2019 Robert Walker
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <https://www.gnu.org/licenses/>.
  14. */
  15. #ifndef SWEDISH_LAYOUT
  16. #define SWEDISH_LAYOUT
  17. #include "scancodeconversion.h"
  18. #include "abckeys.h"
  19. #include "usbhidkeys.h"
  20. // This is a table for converting USB Hid scan codes applied to a Swedish layout to the ABC layout
  21. ScancodeConversion swedishLayoutToABCLayout[] = {
  22. // Control keys
  23. {KEY_BACKSPACE,ABC_KEY_BS,0}, // Backspace
  24. {KEY_ENTER,ABC_KEY_ENTER,0}, // Enter
  25. {KEY_SPACE,ABC_KEY_SPACE,0}, // Space
  26. {KEY_C,ABC_KEY_BREAK,0x30}, // Break / Ctrl-c
  27. {KEY_G,ABC_KEY_BELL,0x30}, // Bell / Ctrl-g
  28. {KEY_X,ABC_KEY_KILL,0x30}, // Kill line / Ctrl-x
  29. {KEY_M,ABC_KEY_LF,0x30}, // Line feed / Ctrl-m
  30. {KEY_L,ABC_KEY_CS,0x30}, // Clear screen / Ctrl-l
  31. // Top row
  32. {KEY_1,ABC_KEY_EXCLMATION,0x22}, // !
  33. {KEY_2,ABC_KEY_QUOTE,0x22}, // "
  34. {KEY_3,ABC_KEY_HASH,0x22}, // #
  35. {KEY_4,ABC_KEY_SOL,0x22}, // Sol
  36. {KEY_5,ABC_KEY_PERCENT,0x22}, // %
  37. {KEY_6,ABC_KEY_AMPERSAND,0x22}, // &
  38. {KEY_7,ABC_KEY_FSLASH,0x22}, // /
  39. {KEY_8,ABC_KEY_LEFT_PAR,0x22}, // (
  40. {KEY_9,ABC_KEY_RIGHT_PAR,0x22}, // )
  41. {KEY_0,ABC_KEY_EQUAL,0x22}, // =
  42. {KEY_MINUS,ABC_KEY_PLUS,0}, // +
  43. {KEY_MINUS,ABC_KEY_QM,0x22}, // ?
  44. {KEY_EQUAL,ABC_KEY_64,0x22}, // Captial é
  45. {KEY_EQUAL,ABC_KEY_96,0}, // é
  46. // Misc
  47. {KEY_SLASH,ABC_KEY_MINUS,0x0}, // -
  48. {KEY_SLASH,ABC_KEY_UNDERSCORE,0x22}, // _
  49. {KEY_SEMICOLON,ABC_KEY_92,0x22}, // Ö
  50. {KEY_SEMICOLON,ABC_KEY_124,0}, // ö
  51. {KEY_APOSTROPHE,ABC_KEY_91,0x22}, // Ä
  52. {KEY_APOSTROPHE,ABC_KEY_123,0}, // Ä
  53. {KEY_LEFTBRACE,ABC_KEY_93,0x22}, // Å
  54. {KEY_LEFTBRACE,ABC_KEY_125,0}, // å
  55. {KEY_RIGHTBRACE,ABC_KEY_94,0x22}, // Ü
  56. {KEY_RIGHTBRACE,ABC_KEY_126,0}, // ü
  57. {KEY_COMMA,ABC_KEY_COMMA,0}, // ,
  58. {KEY_DOT,ABC_KEY_DOT,0}, // .
  59. {KEY_COMMA,ABC_KEY_SEMICOLON,0x22}, // ;
  60. {KEY_DOT,ABC_KEY_COLON,0x22}, // :
  61. {KEY_HASHTILDE,ABC_KEY_STAR,0x22}, // *
  62. {KEY_HASHTILDE,ABC_KEY_APOSTROPHE,0}, // '
  63. {KEY_102ND,ABC_KEY_LESS,0}, // >
  64. {KEY_102ND,ABC_KEY_GREATER,0x22}, // <
  65. // Alpha and numeric
  66. {KEY_0,ABC_KEY_ZERO,0},
  67. {KEY_1,ABC_KEY_ONE,0},
  68. {KEY_2,ABC_KEY_TWO,0},
  69. {KEY_3,ABC_KEY_THREE,0},
  70. {KEY_4,ABC_KEY_FOUR,0},
  71. {KEY_5,ABC_KEY_FIVE,0},
  72. {KEY_6,ABC_KEY_SIX,0},
  73. {KEY_7,ABC_KEY_SEVEN,0},
  74. {KEY_8,ABC_KEY_EIGHT,0},
  75. {KEY_9,ABC_KEY_NINE,0},
  76. {KEY_A,ABC_KEY_AL,0},
  77. {KEY_B,ABC_KEY_BL,0},
  78. {KEY_C,ABC_KEY_CL,0},
  79. {KEY_D,ABC_KEY_DL,0},
  80. {KEY_E,ABC_KEY_EL,0},
  81. {KEY_F,ABC_KEY_FL,0},
  82. {KEY_G,ABC_KEY_GL,0},
  83. {KEY_H,ABC_KEY_HL,0},
  84. {KEY_I,ABC_KEY_IL,0},
  85. {KEY_J,ABC_KEY_JL,0},
  86. {KEY_K,ABC_KEY_KL,0},
  87. {KEY_L,ABC_KEY_LL,0},
  88. {KEY_M,ABC_KEY_ML,0},
  89. {KEY_N,ABC_KEY_NL,0},
  90. {KEY_O,ABC_KEY_OL,0},
  91. {KEY_P,ABC_KEY_PL,0},
  92. {KEY_Q,ABC_KEY_QL,0},
  93. {KEY_R,ABC_KEY_RL,0},
  94. {KEY_S,ABC_KEY_SL,0},
  95. {KEY_T,ABC_KEY_TL,0},
  96. {KEY_U,ABC_KEY_UL,0},
  97. {KEY_V,ABC_KEY_VL,0},
  98. {KEY_W,ABC_KEY_WL,0},
  99. {KEY_X,ABC_KEY_XL,0},
  100. {KEY_Y,ABC_KEY_YL,0},
  101. {KEY_Z,ABC_KEY_ZL,0},
  102. {KEY_A,ABC_KEY_A,0x22},
  103. {KEY_B,ABC_KEY_B,0x22},
  104. {KEY_C,ABC_KEY_C,0x22},
  105. {KEY_D,ABC_KEY_D,0x22},
  106. {KEY_E,ABC_KEY_E,0x22},
  107. {KEY_F,ABC_KEY_F,0x22},
  108. {KEY_G,ABC_KEY_G,0x22},
  109. {KEY_H,ABC_KEY_H,0x22},
  110. {KEY_I,ABC_KEY_I,0x22},
  111. {KEY_J,ABC_KEY_J,0x22},
  112. {KEY_K,ABC_KEY_K,0x22},
  113. {KEY_L,ABC_KEY_L,0x22},
  114. {KEY_M,ABC_KEY_M,0x22},
  115. {KEY_N,ABC_KEY_N,0x22},
  116. {KEY_O,ABC_KEY_O,0x22},
  117. {KEY_P,ABC_KEY_P,0x22},
  118. {KEY_Q,ABC_KEY_Q,0x22},
  119. {KEY_R,ABC_KEY_R,0x22},
  120. {KEY_S,ABC_KEY_S,0x22},
  121. {KEY_T,ABC_KEY_T,0x22},
  122. {KEY_U,ABC_KEY_U,0x22},
  123. {KEY_V,ABC_KEY_V,0x22},
  124. {KEY_W,ABC_KEY_W,0x22},
  125. {KEY_X,ABC_KEY_X,0x22},
  126. {KEY_Y,ABC_KEY_Y,0x22},
  127. {KEY_Z,ABC_KEY_Z,0x22},
  128. // Function keys
  129. {KEY_F1,ABC_KEY_PF1,0},
  130. {KEY_F2,ABC_KEY_PF2,0},
  131. {KEY_F3,ABC_KEY_PF3,0},
  132. {KEY_F4,ABC_KEY_PF4,0},
  133. {KEY_F5,ABC_KEY_PF5,0},
  134. {KEY_F6,ABC_KEY_PF6,0},
  135. {KEY_F7,ABC_KEY_PF7,0},
  136. {KEY_F8,ABC_KEY_PF8,0},
  137. {KEY_F1,ABC_KEY_PF1_SHIFT,0x22},
  138. {KEY_F2,ABC_KEY_PF2_SHIFT,0x22},
  139. {KEY_F3,ABC_KEY_PF3_SHIFT,0x22},
  140. {KEY_F4,ABC_KEY_PF4_SHIFT,0x22},
  141. {KEY_F5,ABC_KEY_PF5_SHIFT,0x22},
  142. {KEY_F6,ABC_KEY_PF6_SHIFT,0x22},
  143. {KEY_F7,ABC_KEY_PF7_SHIFT,0x22},
  144. {KEY_F8,ABC_KEY_PF8_SHIFT,0x22},
  145. {KEY_F1,ABC_KEY_PF1_SHIFT_CTRL,0x52},
  146. {KEY_F2,ABC_KEY_PF2_SHIFT_CTRL,0x52},
  147. {KEY_F3,ABC_KEY_PF3_SHIFT_CTRL,0x52},
  148. {KEY_F4,ABC_KEY_PF4_SHIFT_CTRL,0x52},
  149. {KEY_F5,ABC_KEY_PF5_SHIFT_CTRL,0x52},
  150. {KEY_F6,ABC_KEY_PF6_SHIFT_CTRL,0x52},
  151. {KEY_F7,ABC_KEY_PF7_SHIFT_CTRL,0x52},
  152. {KEY_F8,ABC_KEY_PF8_SHIFT_CTRL,0x52},
  153. {KEY_F1,ABC_KEY_PF1_CTRL,0x30},
  154. {KEY_F2,ABC_KEY_PF2_CTRL,0x30},
  155. {KEY_F3,ABC_KEY_PF3_CTRL,0x30},
  156. {KEY_F4,ABC_KEY_PF4_CTRL,0x30},
  157. {KEY_F5,ABC_KEY_PF5_CTRL,0x30},
  158. {KEY_F6,ABC_KEY_PF6_CTRL,0x30},
  159. {KEY_F7,ABC_KEY_PF7_CTRL,0x30},
  160. {KEY_F8,ABC_KEY_PF8_CTRL,0x30},
  161. };
  162. #endif