Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

unimap_trans.h 9.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. Copyright 2016 Jun Wako <[email protected]>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #ifndef UNIMAP_TRANS_H
  15. #define UNIMAP_TRANS_H
  16. #include <stdint.h>
  17. #include <stdbool.h>
  18. #include "keycode.h"
  19. #include "action.h"
  20. #include "action_code.h"
  21. #include "action_layer.h"
  22. #include "action_macro.h"
  23. #include "action_util.h"
  24. #include "report.h"
  25. #include "host.h"
  26. #include "print.h"
  27. #include "debug.h"
  28. #include "unimap.h"
  29. #define UNIMAP_HHKB( \
  30. K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A, \
  31. K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, \
  32. K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K28, \
  33. K79, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K7D,K7C, \
  34. K7A,K7B, K2C, K7F,K7E \
  35. ) UNIMAP( \
  36. NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
  37. NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
  38. K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A, NO, NO, NO, NO, NO, NO, NO, \
  39. K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, NO, NO, NO, NO, NO, NO, NO, \
  40. K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, NO, K28, NO, NO, NO, NO, \
  41. K79,NO, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, NO, K7D, NO, NO, NO, NO, NO, \
  42. NO, K7B,K7A,NO, K2C, NO, NO, K7E,K7F,NO, K7C, NO, NO, NO, NO, NO, NO \
  43. )
  44. #define UNIMAP_JP( \
  45. K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A, \
  46. K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, \
  47. K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32, K28, \
  48. K79, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,K75,K52,K7D, \
  49. K78,K29,K7B,K7A,K77, K2C, K76,K00,K7E,K7C,K50,K51,K4F \
  50. ) UNIMAP( \
  51. NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
  52. K29, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
  53. K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A, NO, NO, NO, NO, NO, NO, NO, \
  54. K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, NO, NO, NO, NO, NO, NO, NO, NO, \
  55. K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K32,K28, NO, NO, NO, NO, \
  56. K79,NO, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K75,K7D, K52, NO, NO, NO, NO, \
  57. K78,K7B,K7A,K77, K2C, K76,K00,K7E,NO, NO, K7C, K50,K51,K4F, NO, NO, NO \
  58. )
  59. /* Mapping to Universal keyboard layout
  60. *
  61. * Universal keyboard layout
  62. * ,-----------------------------------------------.
  63. * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|
  64. * ,---. |-----------------------------------------------| ,-----------. ,-----------.
  65. * |Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|
  66. * `---' `-----------------------------------------------' `-----------' `-----------'
  67. * ,-----------------------------------------------------------. ,-----------. ,---------------.
  68. * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -|
  69. * |-----------------------------------------------------------| |-----------| |---------------|
  70. * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +|
  71. * |-----------------------------------------------------------| `-----------' |---------------|
  72. * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,|
  73. * |-----------------------------------------------------------| ,---. |---------------|
  74. * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=|
  75. * |-----------------------------------------------------------| ,-----------. |---------------|
  76. * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent|
  77. * `-----------------------------------------------------------' `-----------' `---------------'
  78. */
  79. #ifndef HHKB_JP
  80. /* HHKB
  81. * ,-----------------------------------------------------------.
  82. * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|BS |
  83. * |-----------------------------------------------------------|
  84. * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
  85. * |-----------------------------------------------------------|
  86. * |CapsL | A| S| D| F| G| H| J| K| L| ;| '|Enter |
  87. * |-----------------------------------------------------------|
  88. * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Ctl|
  89. * `-----------------------------------------------------------'
  90. * |Gui|Alt | Space |Alt |Gui|
  91. * `-------------------------------------------'
  92. *
  93. * Matrix - row:8 x col:8
  94. * ,-----------------------------------------------------------.
  95. * |31 |30 |00 |10 |11 |20 |21 |40 |41 |60 |61 |70 |71 |50 |51 |
  96. * |-----------------------------------------------------------|
  97. * |32 |01 |02 |13 |12 |23 |22 |42 |43 |62 |63 |73 |72 |52 |
  98. * |-----------------------------------------------------------|
  99. * |33 |04 |03 |14 |15 |24 |25 |45 |44 |65 |64 |74 | 53 |
  100. * |-----------------------------------------------------------|
  101. * |34 |05 |06 |07 |16 |17 |26 |46 |66 |76 |75 |55 |54 |
  102. * `-----------------------------------------------------------'
  103. * |35 |36 | 37 |57 |56 |
  104. * `-------------------------------------------'
  105. */
  106. const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
  107. { UNIMAP_2, UNIMAP_Q, UNIMAP_W, UNIMAP_S, UNIMAP_A, UNIMAP_Z, UNIMAP_X, UNIMAP_C, },
  108. { UNIMAP_3, UNIMAP_4, UNIMAP_R, UNIMAP_E, UNIMAP_D, UNIMAP_F, UNIMAP_V, UNIMAP_B, },
  109. { UNIMAP_5, UNIMAP_6, UNIMAP_Y, UNIMAP_T, UNIMAP_G, UNIMAP_H, UNIMAP_N, UNIMAP_NO, },
  110. { UNIMAP_1, UNIMAP_GRAVE, UNIMAP_TAB, UNIMAP_CAPSLOCK, UNIMAP_LSHIFT, UNIMAP_LALT, UNIMAP_LGUI, UNIMAP_SPACE, },
  111. { UNIMAP_7, UNIMAP_8, UNIMAP_U, UNIMAP_I, UNIMAP_K, UNIMAP_J, UNIMAP_M, UNIMAP_NO, },
  112. { UNIMAP_JYEN, UNIMAP_BSPACE, UNIMAP_BSLASH, UNIMAP_ENTER, UNIMAP_RCTRL, UNIMAP_RSHIFT, UNIMAP_RALT, UNIMAP_RGUI, },
  113. { UNIMAP_9, UNIMAP_0, UNIMAP_O, UNIMAP_P, UNIMAP_SCOLON, UNIMAP_L, UNIMAP_COMMA, UNIMAP_NO, },
  114. { UNIMAP_MINUS, UNIMAP_EQUAL, UNIMAP_RBRACKET, UNIMAP_LBRACKET, UNIMAP_QUOTE, UNIMAP_SLASH, UNIMAP_DOT, UNIMAP_NO, },
  115. };
  116. #else
  117. /* HHKB JP
  118. * ,-----------------------------------------------------------.
  119. * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |JPY|BS |
  120. * |-----------------------------------------------------------|
  121. * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] | |
  122. * |------------------------------------------------------` |
  123. * |CapsL |A |S |D |F |G |H |J |K |L |; |' |# |Entr|
  124. * |-----------------------------------------------------------|
  125. * |Shift |Z |X |C |V |B |N |M |, |. |/ |RO |Up |Shi|
  126. * |-----------------------------------------------------------|
  127. * |Ctl||Esc|Gui|Alt|MHE| |HEN|KAN|Alt|Ctl||Lef|Dow|Rig|
  128. * `-----------------------------------------------------------'
  129. *
  130. * Matrix - row:16 x col:8
  131. * ,-----------------------------------------------------------.
  132. * |02 |32 |62 |22 |12 |52 |72 |A2 |92 |82 |B2 |E2 |F2 |D2 |C2 |
  133. * |-----------------------------------------------------------|
  134. * |03 |63 |23 |13 |53 |73 |A3 |93 |83 |B3 |E3 |F3 |D3 | |
  135. * |------------------------------------------------------` |
  136. * |06 |66 |26 |16 |56 |76 |A6 |96 |86 |B6 |E6 |F6 |D6 | C6 |
  137. * |-----------------------------------------------------------|
  138. * |05 |65 |25 |15 |55 |75 |A5 |95 |85 |B5 |E5 |F5 |D5 |C5 |
  139. * |-----------------------------------------------------------|
  140. * |04 ||34 |64 |24 |14 | 74 |94 |84 |B4 |E4 ||F4 |D4 |C4 |
  141. * `-----------------------------------------------------------'
  142. */
  143. const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
  144. { UNIMAP_NO, UNIMAP_NO, UNIMAP_GRAVE, UNIMAP_TAB, UNIMAP_LCTRL, UNIMAP_LSHIFT, UNIMAP_CAPSLOCK, UNIMAP_NO, },
  145. { UNIMAP_NO, UNIMAP_NO, UNIMAP_4, UNIMAP_E, UNIMAP_MHEN, UNIMAP_C, UNIMAP_D, UNIMAP_NO, },
  146. { UNIMAP_NO, UNIMAP_NO, UNIMAP_3, UNIMAP_W, UNIMAP_LALT, UNIMAP_X, UNIMAP_S, UNIMAP_NO, },
  147. { UNIMAP_NO, UNIMAP_NO, UNIMAP_1, UNIMAP_NO, UNIMAP_ESCAPE, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, },
  148. { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, },
  149. { UNIMAP_NO, UNIMAP_NO, UNIMAP_5, UNIMAP_R, UNIMAP_NO, UNIMAP_V, UNIMAP_F, UNIMAP_NO, },
  150. { UNIMAP_NO, UNIMAP_NO, UNIMAP_2, UNIMAP_Q, UNIMAP_LGUI, UNIMAP_Z, UNIMAP_A, UNIMAP_NO, },
  151. { UNIMAP_NO, UNIMAP_NO, UNIMAP_6, UNIMAP_T, UNIMAP_SPACE, UNIMAP_B, UNIMAP_G, UNIMAP_NO, },
  152. { UNIMAP_NO, UNIMAP_NO, UNIMAP_9, UNIMAP_I, UNIMAP_KANA, UNIMAP_COMMA, UNIMAP_K, UNIMAP_NO, },
  153. { UNIMAP_NO, UNIMAP_NO, UNIMAP_8, UNIMAP_U, UNIMAP_HENK, UNIMAP_M, UNIMAP_J, UNIMAP_NO, },
  154. { UNIMAP_NO, UNIMAP_NO, UNIMAP_7, UNIMAP_Y, UNIMAP_NO, UNIMAP_N, UNIMAP_H, UNIMAP_NO, },
  155. { UNIMAP_NO, UNIMAP_NO, UNIMAP_0, UNIMAP_O, UNIMAP_RALT, UNIMAP_DOT, UNIMAP_L, UNIMAP_NO, },
  156. { UNIMAP_NO, UNIMAP_NO, UNIMAP_BSPACE, UNIMAP_NO, UNIMAP_RIGHT, UNIMAP_RSHIFT, UNIMAP_ENTER, UNIMAP_NO, },
  157. { UNIMAP_NO, UNIMAP_NO, UNIMAP_JYEN, UNIMAP_RBRACKET, UNIMAP_DOWN, UNIMAP_UP, UNIMAP_NONUS_HASH, UNIMAP_NO, },
  158. { UNIMAP_NO, UNIMAP_NO, UNIMAP_MINUS, UNIMAP_P, UNIMAP_RCTRL, UNIMAP_SLASH, UNIMAP_SCOLON, UNIMAP_NO, },
  159. { UNIMAP_NO, UNIMAP_NO, UNIMAP_EQUAL, UNIMAP_LBRACKET, UNIMAP_LEFT, UNIMAP_RO, UNIMAP_QUOTE, UNIMAP_NO, },
  160. };
  161. #endif
  162. #endif