summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rw-r--r--common/avr/suspend.c27
-rw-r--r--common/command.c1
-rw-r--r--common/matrix.h9
-rw-r--r--common/mbed/xprintf.cpp5
-rw-r--r--common/print.c12
-rw-r--r--common/suspend.h2
-rw-r--r--converter/adb_usb/README.md2
-rw-r--r--converter/ps2_usb/Makefile.mbed2
-rw-r--r--converter/terminal_bluefruit/Makefile16
-rw-r--r--converter/terminal_usb/Makefile15
-rw-r--r--converter/usb_usb/README16
-rw-r--r--doc/other_projects.md1
-rw-r--r--keyboard/hhkb/Makefile10
-rw-r--r--keyboard/hhkb/Makefile.jp2
-rw-r--r--keyboard/hhkb/Makefile.rn42 (renamed from keyboard/hhkb_rn42/Makefile)22
-rw-r--r--keyboard/hhkb/README.md18
-rw-r--r--keyboard/hhkb/config_rn42.h (renamed from keyboard/hhkb_rn42/config.h)0
-rw-r--r--keyboard/hhkb/hhkb_avr.h28
-rw-r--r--keyboard/hhkb/keymap_hasu.c34
-rw-r--r--keyboard/hhkb/matrix.c27
-rw-r--r--keyboard/hhkb/not_supported/Makefile.iwrap (renamed from keyboard/hhkb/Makefile.iwrap)0
-rw-r--r--keyboard/hhkb/not_supported/Makefile.vusb (renamed from keyboard/hhkb/Makefile.vusb)0
-rw-r--r--keyboard/hhkb/not_supported/config_iwrap.h (renamed from keyboard/hhkb/config_iwrap.h)0
-rw-r--r--keyboard/hhkb/not_supported/config_vusb.h (renamed from keyboard/hhkb/config_vusb.h)0
-rw-r--r--keyboard/hhkb/not_supported/iwrap.txt (renamed from keyboard/hhkb/iwrap.txt)0
-rw-r--r--keyboard/hhkb/not_supported/usbconfig.h (renamed from keyboard/hhkb/usbconfig.h)0
-rw-r--r--keyboard/hhkb/rn42.mk (renamed from keyboard/hhkb_rn42/rn42.mk)0
-rw-r--r--keyboard/hhkb/rn42/MEMO.txt255
-rw-r--r--keyboard/hhkb/rn42/PowerSave.txt (renamed from keyboard/hhkb_rn42/PowerSave.txt)64
-rw-r--r--keyboard/hhkb/rn42/RN42.txt408
-rw-r--r--keyboard/hhkb/rn42/battery.c (renamed from keyboard/hhkb_rn42/rn42/battery.c)20
-rw-r--r--keyboard/hhkb/rn42/battery.h (renamed from keyboard/hhkb_rn42/rn42/battery.h)0
-rw-r--r--keyboard/hhkb/rn42/main.c (renamed from keyboard/hhkb_rn42/rn42/main.c)19
-rw-r--r--keyboard/hhkb/rn42/rn42.c (renamed from keyboard/hhkb_rn42/rn42/rn42.c)31
-rw-r--r--keyboard/hhkb/rn42/rn42.h (renamed from keyboard/hhkb_rn42/rn42/rn42.h)3
-rw-r--r--keyboard/hhkb/rn42/rn42_task.c478
-rw-r--r--keyboard/hhkb/rn42/rn42_task.h (renamed from keyboard/hhkb_rn42/rn42/rn42_task.h)0
-rw-r--r--keyboard/hhkb/rn42/suart.S (renamed from keyboard/hhkb_rn42/rn42/suart.S)0
-rw-r--r--keyboard/hhkb/rn42/suart.h (renamed from keyboard/hhkb_rn42/rn42/suart.h)0
-rw-r--r--keyboard/hhkb_rn42/MEMO.txt523
-rw-r--r--keyboard/hhkb_rn42/hhkb_avr.h164
-rw-r--r--keyboard/hhkb_rn42/keymap_common.h84
-rw-r--r--keyboard/hhkb_rn42/keymap_hasu.c282
-rw-r--r--keyboard/hhkb_rn42/keymap_jp.c50
-rw-r--r--keyboard/hhkb_rn42/matrix.c191
-rw-r--r--keyboard/hhkb_rn42/rn42/rn42_task.c294
-rw-r--r--keyboard/infinity/Makefile37
-rw-r--r--keyboard/infinity/README81
-rw-r--r--keyboard/infinity/config.h39
-rw-r--r--keyboard/infinity/keymap.c47
-rw-r--r--keyboard/infinity/keymap_common.c (renamed from keyboard/hhkb_rn42/keymap_common.c)3
-rw-r--r--keyboard/infinity/keymap_common.h58
-rw-r--r--keyboard/infinity/led.c (renamed from keyboard/hhkb_rn42/led.c)8
-rw-r--r--keyboard/infinity/main.cpp44
-rw-r--r--keyboard/infinity/matrix.c107
-rw-r--r--keyboard/infinity/mbed-infinity.mk47
-rw-r--r--keyboard/infinity/mbed-infinity/README39
-rw-r--r--keyboard/infinity/mbed-infinity/USBHAL_KL25Z.cpp557
-rw-r--r--keyboard/infinity/mbed-infinity/cmsis_nvic.c55
-rw-r--r--keyboard/infinity/mbed-infinity/infinity.ld156
-rw-r--r--keyboard/infinity/mbed-infinity/system_MK20D5.c299
-rw-r--r--keyboard/infinity/tool/README25
-rw-r--r--keyboard/infinity/tool/k20dx32_flash.cfg124
-rw-r--r--keyboard/infinity/tool/openocd.cfg13
-rw-r--r--keyboard/nerd/Makefile (renamed from keyboard/hhkb/Makefile.nodebug)53
-rw-r--r--keyboard/nerd/README.md52
-rw-r--r--keyboard/nerd/backlight.c81
-rw-r--r--keyboard/nerd/backlight.h40
-rw-r--r--keyboard/nerd/config.h49
-rw-r--r--keyboard/nerd/keymap_60_ansi150.c30
-rw-r--r--keyboard/nerd/keymap_80_ansi150.c33
-rw-r--r--keyboard/nerd/keymap_common.c29
-rw-r--r--keyboard/nerd/keymap_common.h89
-rw-r--r--keyboard/nerd/matrix.c221
-rw-r--r--protocol/adb.c2
-rw-r--r--protocol/bluefruit/bluefruit.c4
-rw-r--r--protocol/bluefruit/main.c2
-rw-r--r--protocol/lufa/lufa.c41
-rw-r--r--protocol/pjrc/main.c3
-rw-r--r--protocol/pjrc/usb_keyboard.c2
-rw-r--r--protocol/ps2_interrupt.c1
-rw-r--r--protocol/ps2_usart.c1
-rw-r--r--tool/mbed/common.mk2
-rw-r--r--tool/mbed/gcc.mk37
-rw-r--r--tool/mbed/lpc11u35_501.mk50
-rw-r--r--tool/mbed/mbed.mk150
87 files changed, 3928 insertions, 1903 deletions
diff --git a/README.md b/README.md
index 550f1267de..3dceb96398 100644
--- a/README.md
+++ b/README.md
@@ -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
* [ghost_squid](keyboard/ghost_squid/) - [The Ghost Squid][ghost_squid] controller for [Cooler Master QuickFire XT][cmxt]
[GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930
@@ -73,6 +77,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
[ghost_squid]: http://deskthority.net/wiki/Costar_replacement_controllers#The_Ghost_Squid
[cmxt]: http://gaming.coolermaster.com/en/products/keyboards/quickfirext/
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/command.c b/common/command.c
index 971ef7f0af..1a507e3a46 100644
--- a/common/command.c
+++ b/common/command.c
@@ -194,6 +194,7 @@ static bool command_common(uint8_t code)
case KC_CAPSLOCK:
if (host_get_driver()) {
host_driver = host_get_driver();
+ clear_keyboard();
host_set_driver(0);
print("Locked.\n");
} else {
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/converter/terminal_bluefruit/Makefile b/converter/terminal_bluefruit/Makefile
index 83d68fc252..28b7397bae 100644
--- a/converter/terminal_bluefruit/Makefile
+++ b/converter/terminal_bluefruit/Makefile
@@ -83,21 +83,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
-ifdef PS2_USE_USART
- SRC += protocol/ps2_usart.c
- OPT_DEFS += -DPS2_USE_USART
-endif
-
-ifdef PS2_USE_INT
- SRC += protocol/ps2.c
- OPT_DEFS += -DPS2_USE_INT
-endif
-
-ifdef PS2_USE_BUSYWAIT
- SRC += protocol/ps2.c
- OPT_DEFS += -DPS2_USE_BUSYWAIT
-endif
-
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
@@ -107,6 +92,7 @@ VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
+include $(TOP_DIR)/protocol.mk
include $(TOP_DIR)/protocol/bluefruit.mk
include $(TOP_DIR)/protocol.mk
include $(TOP_DIR)/common.mk
diff --git a/converter/terminal_usb/Makefile b/converter/terminal_usb/Makefile
index 6154d86826..16df638b94 100644
--- a/converter/terminal_usb/Makefile
+++ b/converter/terminal_usb/Makefile
@@ -82,21 +82,6 @@ PS2_USE_USART = yes # uses hardware USART engine for PS/2 signal receive(recomen
#PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
-ifdef PS2_USE_USART
- SRC += protocol/ps2_usart.c
- OPT_DEFS += -DPS2_USE_USART
-endif
-
-ifdef PS2_USE_INT
- SRC += protocol/ps2.c
- OPT_DEFS += -DPS2_USE_INT
-endif
-
-ifdef PS2_USE_BUSYWAIT
- SRC += protocol/ps2.c
- OPT_DEFS += -DPS2_USE_BUSYWAIT
-endif
-
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
diff --git a/converter/usb_usb/README b/converter/usb_usb/README
index 69caabb278..30d5deb1e5 100644
--- a/converter/usb_usb/README
+++ b/converter/usb_usb/README
@@ -7,7 +7,19 @@ Arduino Leonardo
http://arduino.cc/en/Main/ArduinoBoardLeonardo
Circuit@Home USB Host Shield 2.0
- http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino
+ https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino-assembled/
+
+Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be the easiest way, you won't need even soldering iron.
+Arduino's Shield will also work well but I think Sparkfun's needs to be modified.
+
+ http://arduino.cc/en/Main/ArduinoUSBHostShield
+ https://www.sparkfun.com/products/9947
+
+Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with some fixes on signal/power routing.
+ https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini
+ https://www.sparkfun.com/products/12587
+ https://www.pjrc.com/teensy/td_libs_USBHostShield.html
+
Build firmware
@@ -32,6 +44,8 @@ Limitation
Only supports 'HID Boot protocol'.
Not support keyboard LED yet.
+Note that the converter can host only USB "boot protocol" keyboard(6KRO) and not NKRO, it is possible to support NKRO keyboard but you will need to write HID report parser for that. Every NKRO keyboard can have different HID report and it is difficult to support all kind of NKRO keyboards in the market.
+
Update
diff --git a/doc/other_projects.md b