diff options
78 files changed, 3904 insertions, 1867 deletions
@@ -53,6 +53,10 @@ You can find some keyboard specific projects under `converter` and `keyboard` di * [macway](keyboard/macway/) - [Compact keyboard mod][GH_macway] [retired] * [KMAC](keyboard/kmac/) - Korean custom keyboard * [Lightsaber](keyboard/lightsaber/) - Korean custom keyboard +* [Infinity](keyboard/infinity/) - Massdrop [Infinity keyboard][Infinity] +* [NerD](keyboard/nerd/) - Korean custom keyboard +* [KittenPaw](keyboard/kittenpaw) - Custom Majestouch controller +* [Lightpad](keyboard/lightpad) - Korean custom keypad [GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930 [GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047 @@ -72,6 +76,7 @@ You can find some keyboard specific projects under `converter` and `keyboard` di [PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801 [Sun]: http://en.wikipedia.org/wiki/Sun-3 [IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS +[Infinity]: https://www.massdrop.com/buy/infinity-keyboard-kit diff --git a/common/avr/suspend.c b/common/avr/suspend.c index 66a579fd78..80243f02bc 100644 --- a/common/avr/suspend.c +++ b/common/avr/suspend.c @@ -7,6 +7,7 @@ #include "backlight.h" #include "suspend_avr.h" #include "suspend.h" +#include "timer.h" #ifdef PROTOCOL_LUFA #include "lufa.h" #endif @@ -52,11 +53,13 @@ void suspend_idle(uint8_t time) * WDTO_4S * WDTO_8S */ -void suspend_power_down(uint8_t wdto) +static uint8_t wdt_timeout = 0; +static void power_down(uint8_t wdto) { #ifdef PROTOCOL_LUFA if (USB_DeviceState == DEVICE_STATE_Configured) return; #endif + wdt_timeout = wdto; // Watchdog Interrupt Mode wdt_intr_enable(wdto); @@ -67,7 +70,6 @@ void suspend_power_down(uint8_t wdto) // - prescale clock // - BOD disable // - Power Reduction Register PRR - set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sei(); @@ -78,6 +80,11 @@ void suspend_power_down(uint8_t wdto) wdt_disable(); } +void suspend_power_down(void) +{ + power_down(WDTO_15MS); +} + bool suspend_wakeup_condition(void) { matrix_power_up(); @@ -103,15 +110,13 @@ void suspend_wakeup_init(void) /* watchdog timeout */ ISR(WDT_vect) { - /* wakeup from MCU sleep mode */ -/* - // blink LED - static uint8_t led_state = 0; - static uint8_t led_count = 0; - led_count++; - if ((led_count & 0x07) == 0) { - led_set((led_state ^= (1<<USB_LED_CAPS_LOCK))); + // compensate timer for sleep + switch (wdt_timeout) { + case WDTO_15MS: + timer_count += 15 + 2; // WDTO_15MS + 2(from observation) + break; + default: + ; } -*/ } #endif diff --git a/common/matrix.h b/common/matrix.h index 23fef78f74..107ee72653 100644 --- a/common/matrix.h +++ b/common/matrix.h @@ -35,6 +35,10 @@ typedef uint32_t matrix_row_t; #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1<<col)) +#ifdef __cplusplus +extern "C" { +#endif + /* number of matrix rows */ uint8_t matrix_rows(void); /* number of matrix columns */ @@ -48,7 +52,7 @@ bool matrix_is_modified(void) __attribute__ ((deprecated)); /* whether a swtich is on */ bool matrix_is_on(uint8_t row, uint8_t col); /* matrix state on row */ -matrix_row_t matrix_get_row(uint8_t row); +matrix_row_t matrix_get_row(uint8_t row); /* print matrix for debug */ void matrix_print(void); @@ -57,5 +61,8 @@ void matrix_print(void); void matrix_power_up(void); void matrix_power_down(void); +#ifdef __cplusplus +} +#endif #endif diff --git a/common/mbed/xprintf.cpp b/common/mbed/xprintf.cpp index 4342b79f80..3647ece751 100644 --- a/common/mbed/xprintf.cpp +++ b/common/mbed/xprintf.cpp @@ -6,6 +6,10 @@ #define STRING_STACK_LIMIT 120 +//TODO +int xprintf(const char* format, ...) { return 0; } + +#if 0 /* mbed Serial */ Serial ser(UART_TX, UART_RX); @@ -44,3 +48,4 @@ int xprintf(const char* format, ...) return r; */ } +#endif diff --git a/common/print.c b/common/print.c index c13a29f317..ca94e1e5d6 100644 --- a/common/print.c +++ b/common/print.c @@ -22,13 +22,14 @@ * THE SOFTWARE. */ -#include <avr/io.h> -#include <avr/pgmspace.h> +#include <stdint.h> #include "print.h" #ifndef NO_PRINT +#if defined(__AVR__) + #define sendchar(c) xputc(c) @@ -37,4 +38,11 @@ void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) xdev_out(sendchar_func); } +#elif defined(__arm__) + +// TODO +//void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) { } + +#endif + #endif diff --git a/common/suspend.h b/common/suspend.h index f339c670ac..80617a8244 100644 --- a/common/suspend.h +++ b/common/suspend.h @@ -6,7 +6,7 @@ void suspend_idle(uint8_t timeout); -void suspend_power_down(uint8_t timeout); +void suspend_power_down(void); bool suspend_wakeup_condition(void); void suspend_wakeup_init(void); diff --git a/converter/adb_usb/README.md b/converter/adb_usb/README.md index defc477e2c..21ad318c1d 100644 --- a/converter/adb_usb/README.md +++ b/converter/adb_usb/README.md @@ -88,7 +88,7 @@ modifiers except for GUI key(Windows/Command). And most ADB keyboard has no diodes in its matrix so they are not NKRO, though ADB protocol itself supports it. See protocol/adb.c for more info. -If keyobard has ISO layout you need to use ISO keymap with `make KEYMAP=iso`. With ANSI +If keyboard has ISO layout you need to use ISO keymap with `make KEYMAP=iso`. With ANSI keymap you will suffer from swapped keys problem. https://github.com/tmk/tmk_keyboard/issues/35 diff --git a/converter/ps2_usb/Makefile.mbed b/converter/ps2_usb/Makefile.mbed index 631f270f75..ff8a0de7a4 100644 --- a/converter/ps2_usb/Makefile.mbed +++ b/converter/ps2_usb/Makefile.mbed @@ -39,6 +39,8 @@ LIBRARIES = MOUSEKEY_ENABLE = yes +#include $(TMK_DIR)/tool/mbed/mk20d50m.mk +include $(TMK_DIR)/tool/mbed/lpc11u35_501.mk include $(TMK_DIR)/tool/mbed/mbed.mk include $(TMK_DIR)/tool/mbed/common.mk include $(TMK_DIR)/tool/mbed/gcc.mk diff --git a/keyboard/hhkb/Makefile b/keyboard/hhkb/Makefile index 5cf02d194e..dc5c06a948 100644 --- a/keyboard/hhkb/Makefile +++ b/keyboard/hhkb/Makefile @@ -121,11 +121,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover #HHKB_JP = yes # HHKB JP support -ifdef HHKB_JP - OPT_DEFS += -DHHKB_JP -endif - - # # Keymap file # @@ -140,6 +135,11 @@ else endif +ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) + OPT_DEFS += -DHHKB_JP +endif + + # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) diff --git a/keyboard/hhkb/Makefile.jp b/keyboard/hhkb/Makefile.jp new file mode 100644 index 0000000000..e04dbb2424 --- /dev/null +++ b/keyboard/hhkb/Makefile.jp @@ -0,0 +1,2 @@ +HHKB_JP = yes +include Makefile diff --git a/keyboard/hhkb_rn42/Makefile b/keyboard/hhkb/Makefile.rn42 index 3d9a602a58..b1eacd070f 100644 --- a/keyboard/hhkb_rn42/Makefile +++ b/keyboard/hhkb/Makefile.rn42 @@ -39,7 +39,7 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = hhkb_lufa +TARGET = hhkb_rn42 # Directory common source filess exist TOP_DIR = ../.. @@ -53,13 +53,10 @@ SRC += keymap_common.c \ matrix.c \ led.c -CONFIG_H = config.h +CONFIG_H = config_rn42.h # MCU name -# PJRC Teensy++ 2.0 -#MCU = at90usb1286 -# TMK Alt Controller or PJRC Teensy 2.0 MCU = atmega32u4 # Processor frequency. @@ -121,11 +118,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration #HHKB_JP = yes # HHKB JP support -ifdef HHKB_JP - OPT_DEFS += -DHHKB_JP -endif - - # # Keymap file # @@ -134,12 +126,17 @@ ifdef KEYMAP else ifdef HHKB_JP SRC := keymap_jp.c $(SRC) - else - SRC := keymap_hasu.c $(SRC) + else + SRC := keymap_hhkb.c $(SRC) endif endif +ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) + OPT_DEFS += -DHHKB_JP +endif + + # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) @@ -154,4 +151,5 @@ debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) debug-off: all diff --git a/keyboard/hhkb/README.md b/keyboard/hhkb/README.md index d4a2cd0223..fcd72e1941 100644 --- a/keyboard/hhkb/README.md +++ b/keyboard/hhkb/README.md @@ -10,11 +10,17 @@ See [this thread][AltController] in geekhack.org. [AltController]: http://geekhack.org/index.php?topic=12047.0 +## Update +* Bluetooth module RN-42 is supported.(2015/01) +* V-USB and iWRAP are no longer supported now, but still it'll works with a little fix. See not_supported directory.(2015/01) + + ##Features * Customizable keymap * More keymap layers(more Fn keys) * Mouse keys * USB NKRO +* Bluetooth(RN-42) See README of [tmk_keyboard] for more. @@ -43,12 +49,16 @@ See [doc/HHKB.txt](doc/HHKB.txt) and files under [doc/](doc/) for internal of HH See [this document](../../doc/build.md) first. ### Configuration -Set `MCU`, `BOOTLOADER_SIZE` and other build options in `Makefile` and `config.h`. If your target is **HHKB JP** you need to set `HHKB_JP` build option in `Makefile`. +If your target is **HHKB JP** you need to set `HHKB_JP` build option in `Makefile` or use `Makefile.jp` instead of `Makefile`. + +If you use other than **TMK Alt Controller Board** set proper `MCU`, `BOOTLOADER_SIZE` and other build options in `Makefile` and `config.h`. At least PJRC Teensy requires changing `BOOTLOADER_SIZE` to 512. ### Build Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. Just `make` with `KEYMAP` option like: - $ make KEYMAP=[hasu|hhkb|spacefn|<name>] + $ make -f Makefile.<jp|pjrc|rn42> KEYMAP=(hasu|hhkb|spacefn|<name>) + +You can omit `-f` option when you use `Makefile`. `Makefile` is used for **Pro2 and Pro**, `Makefile.jp` fits for **JP** model and `Makefile.rn42` supports Bluetooth module **RN-42**. `Makefile.pjrc` uses **PJRC** as output protocol instead of **LUFA**. ### Program @@ -56,11 +66,11 @@ First, push reset button on board to start bootloader. This command programs the controller with [dfu-programmer] if the tool is installed and configured properly. - $ make dfu + $ make -f Makefile.<variant> KEYMAP=<name> dfu Or you can also use [FLIP] command to program. Also the tool should be installed and configured properly. FLIP GUI application is also available. - $ make flip + $ make -f Makefile.<variant> KEYMAP=<name> flip Use [Teensy Loader] if your controller is Teensy/Teensy++. diff --git a/keyboard/hhkb_rn42/config.h b/keyboard/hhkb/config_rn42.h index 21e73f1c53..21e73f1c53 100644 --- a/keyboard/hhkb_rn42/config.h +++ b/keyboard/hhkb/config_rn42.h diff --git a/keyboard/hhkb/hhkb_avr.h b/keyboard/hhkb/hhkb_avr.h index b7bd507b5d..7ea6322c73 100644 --- a/keyboard/hhkb/hhkb_avr.h +++ b/keyboard/hhkb/hhkb_avr.h @@ -41,17 +41,32 @@ static inline void KEY_UNABLE(void) { (PORTB |= (1<<6)); } static inline bool KEY_STATE(void) { return (PIND & (1<<7)); } static inline void KEY_PREV_ON(void) { (PORTB |= (1<<7)); } static inline void KEY_PREV_OFF(void) { (PORTB &= ~(1<<7)); } +#ifdef HHKB_POWER_SAVING +static inline void KEY_POWER_ON(void) { + DDRB = 0xFF; PORTB = 0x40; // change pins output + DDRD |= (1<<4); PORTD |= (1<<4); // MOS FET switch on + /* Without this wait you will miss or get false key events. */ + _delay_ms(5); // wait for powering up +} +static inline void KEY_POWER_OFF(void) { + /* input with pull-up consumes less than without it when pin is open. */ + DDRB = 0x00; PORTB = 0xFF; // change pins input with pull-up + DDRD |= (1<<4); PORTD &= ~(1<<4); // MOS FET switch off +} +static inline bool KEY_POWER_STATE(void) { return PORTD & (1<<4); } +#else static inline void KEY_POWER_ON(void) {} static inline void KEY_POWER_OFF(void) {} +static inline bool KEY_POWER_STATE(void) { return true; } +#endif static inline void KEY_INIT(void) { + /* row,col,prev: output */ DDRB = 0xFF; - PORTB = 0x00; + |