cospad.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #ifndef COSPAD_H
  2. #define COSPAD_H
  3. #include "quantum.h"
  4. // readability
  5. #define XXX KC_NO
  6. /* COSPAD ortho matrix layout
  7. * ,-------------------.
  8. * | 00 | 01 | 02 | 03 |
  9. * |----|----|----|----|
  10. * | 10 | 11 | 12 | 13 |
  11. * |----|----|----|----|
  12. * | 20 | 21 | 22 | 23 |
  13. * |----|----|----|----|
  14. * | 30 | 31 | 32 | 33 |
  15. * |----|----|----|----|
  16. * | 40 | 41 | 42 | 43 |
  17. * |----|----|----|----|
  18. * | 50 | 51 | 52 | 53 |
  19. * `-------------------'
  20. */
  21. /* COSPAD gamepad matrix layout
  22. * ,-------------------.
  23. * | 00 | 01 | 02 | 03 |
  24. * |----|----|----|----|
  25. * | 10 | 11 | 12 | 13 |
  26. * |----|----|----|----|
  27. * | 20 | 21 | 22 | |
  28. * |----|----|----| 23 |
  29. * | 30 | 31 | 32 | |
  30. * |----|----|----|----|
  31. * | 40 | 41 | 42 | 43 |
  32. * |----|----|----|----|
  33. * | 50 | 51 | 52 | 53 |
  34. * `-------------------'
  35. */
  36. /* COSPAD numpad matrix layout
  37. * ,-------------------.
  38. * | 00 | 01 | 02 | 03 |
  39. * |----|----|----|----|
  40. * | 10 | 11 | 12 | 13 |
  41. * |----|----|----|----|
  42. * | 20 | 21 | 22 | |
  43. * |----|----|----| 23 |
  44. * | 30 | 31 | 32 | |
  45. * |----|----|----|----|
  46. * | 40 | 41 | 42 | |
  47. * |----|----|----| 43 |
  48. * | 50 | 52 | |
  49. * `-------------------'
  50. */
  51. // The first section contains all of the arguments
  52. // The second converts the arguments into a two-dimensional array
  53. #define LAYOUT_ortho_6x4( \
  54. k00, k01, k02, k03, \
  55. k10, k11, k12, k13, \
  56. k20, k21, k22, k23, \
  57. k30, k31, k32, k33, \
  58. k40, k41, k42, k43, \
  59. k50, k51, k52, k53 \
  60. ) \
  61. { \
  62. {k00, k01, k02, k03}, \
  63. {k10, k11, k12, k13}, \
  64. {k20, k21, k22, k23}, \
  65. {k30, k31, k32, k33}, \
  66. {k40, k41, k42, k43}, \
  67. {k50, k51, k52, k53} \
  68. }
  69. #define LAYOUT_gamepad_6x4( \
  70. k00, k01, k02, k03, \
  71. k10, k11, k12, k13, \
  72. k20, k21, k22, \
  73. k30, k31, k32, k23, \
  74. k40, k41, k42, k43, \
  75. k50, k51, k52, k53 \
  76. ) \
  77. { \
  78. {k00, k01, k02, k03}, \
  79. {k10, k11, k12, k13}, \
  80. {k20, k21, k22, k23}, \
  81. {k30, k31, k32, KC_NO}, \
  82. {k40, k41, k42, k43}, \
  83. {k50, k51, k52, k53} \
  84. }
  85. #define LAYOUT_numpad_6x4( \
  86. k00, k01, k02, k03, \
  87. k10, k11, k12, k13, \
  88. k20, k21, k22, \
  89. k30, k31, k32, k23, \
  90. k40, k41, k42, \
  91. k50, k52, k43 \
  92. ) \
  93. { \
  94. {k00, k01, k02, k03}, \
  95. {k10, k11, k12, k13}, \
  96. {k20, k21, k22, k23}, \
  97. {k30, k31, k32, KC_NO}, \
  98. {k40, k41, k42, k43}, \
  99. {k50, KC_NO, k52, KC_NO} \
  100. }
  101. void matrix_init_user(void);
  102. void matrix_scan_user(void);
  103. inline void cospad_bl_led_on(void) { PORTF &= ~(1<<7); }
  104. inline void cospad_bl_led_off(void) { PORTF |= (1<<7); }
  105. inline void cospad_bl_led_togg(void) {
  106. uint8_t bl_mask = PORTF&(1<<7);
  107. if (bl_mask) {
  108. PORTF &= ~(1<<7);
  109. } else {
  110. PORTF |= (1<<7);
  111. }
  112. }
  113. #endif