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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. Copyright 2011 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 CONFIG_H
  15. #define CONFIG_H
  16. #define VENDOR_ID 0xFEED
  17. #define PRODUCT_ID 0x4242
  18. #define DEVICE_VER 0x0104
  19. #define MANUFACTURER t.m.k.
  20. #define PRODUCT HHKB mod
  21. #define DESCRIPTION t.m.k. keyboard firmware for HHKB mod
  22. /* matrix size */
  23. #ifdef HHKB_JP
  24. # define MATRIX_ROWS 16
  25. #else
  26. # define MATRIX_ROWS 8
  27. #endif
  28. #define MATRIX_COLS 8
  29. /* key combination for command */
  30. #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
  31. /* period of tapping(ms) */
  32. #define TAPPING_TERM 300
  33. /* tap count needed for toggling a feature */
  34. #define TAPPING_TOGGLE 5
  35. /* Oneshot timeout(ms) */
  36. #define ONESHOT_TIMEOUT 300
  37. /* Boot Magic salt key: Space */
  38. #define BOOTMAGIC_KEY_SALT KC_FN6
  39. /* power control of key switch board */
  40. #define HHKB_POWER_SAVING
  41. /*
  42. * Hardware Serial(UART)
  43. * Baud rate are calculated with round off(+0.5).
  44. */
  45. #ifdef __AVR_ATmega32U4__
  46. /* iom32u4.h has no definition of UCSR1D. copy from iom32u2.h */
  47. #define UCSR1D _SFR_MEM8(0xCB)
  48. #define RTSEN 0
  49. #define CTSEN 1
  50. #define SERIAL_UART_BAUD 115200
  51. #define SERIAL_UART_DATA UDR1
  52. #define SERIAL_UART_UBRR ((F_CPU/(16.0*SERIAL_UART_BAUD)-1+0.5))
  53. #define SERIAL_UART_RXD_VECT USART1_RX_vect
  54. #define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
  55. #define SERIAL_UART_INIT() do { \
  56. UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
  57. UBRR1H = ((uint16_t)SERIAL_UART_UBRR>>8); /* baud rate */ \
  58. UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); /* RX interrupt, RX: enable */ \
  59. UCSR1B |= (0<<TXCIE1) | (1<<TXEN1); /* TX interrupt, TX: enable */ \
  60. UCSR1C |= (0<<UPM11) | (0<<UPM10); /* parity: none(00), even(01), odd(11) */ \
  61. UCSR1D |= (0<<RTSEN) | (0<<CTSEN); /* RTS, CTS(no flow control by hardware) */ \
  62. DDRD |= (1<<5); PORTD &= ~(1<<5); /* RTS for flow control by firmware */ \
  63. sei(); \
  64. } while(0)
  65. #define SERIAL_UART_RTS_LO() do { PORTD &= ~(1<<5); } while (0)
  66. #define SERIAL_UART_RTS_HI() do { PORTD |= (1<<5); } while (0)
  67. #else
  68. #error "USART configuration is needed."
  69. #endif
  70. /* for debug */
  71. #define SUART_OUT_PORT PORTD
  72. #define SUART_OUT_BIT 0
  73. #define SUART_IN_PIN PIND
  74. #define SUART_IN_BIT 1
  75. /*
  76. * Feature disable options
  77. * These options are also useful to firmware size reduction.
  78. */
  79. /* disable debug print */
  80. //#define NO_DEBUG
  81. /* disable print */
  82. //#define NO_PRINT
  83. /* disable action features */
  84. //#define NO_ACTION_LAYER
  85. //#define NO_ACTION_TAPPING
  86. //#define NO_ACTION_ONESHOT
  87. //#define NO_ACTION_MACRO
  88. //#define NO_ACTION_FUNCTION
  89. #endif