Alternative Controller for HHKB =============================== Feature ------- - Mouse Keys - NKRO on USB(PJRC Tennsy only) - Keymap Layers Customize Keymap ---------------- see keymap.c. Build ===== PJRC Teensy ----------- 0. Edit matrix.c. adjust scan code to your pin configuration.(see doc/HHKB.txt for pinouts) 1. Define macros in config_pjrc.h.(Optional) VENDOR_ID, PRODUCT_ID and string descriptor. IS_COMMAND 2. Edit Makefile for MCU setting and build options. MCU, F_CPU MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, NKRO_ENABLE 3. Build hex file. $ make -f Makefile.pjrc 4. Program MCU. $ make -f Makefile.pjrc program V-USB ----- 0. Edit matrix.c and usbconfig.h. adjust scan code to your pin configuration.(see doc/HHKB.txt for pinouts) define macros for V-USB in usbconfig.h. 1. Define macros in config_vusb.h.(Optional) IS_COMMAND 2. Edit Makefile.vusb for MCU setting and build options. MCU, F_CPU MOUSEKEY_ENABLE, EXTRAKEY_ENABLE 3. Build hex file. $ make -f Makefile.vusb 4. Program MCU. $ make -f Makefile.vusb program Using a bootloader to program for convenience is recommended. Once program this V-USB bootloader at first, you can program MCU without extra programmer. You should have reset switch to start up as bootloader mode in this case. USBaspLoader: http://www.obdev.at/products/vusb/usbasploader.html iWRAP ----- 0. Edit matrix.c and usbconfig.h. adjust scan code to your pin configuration.(see doc/HHKB.txt for pinouts) define macros for V-USB in usbconfig.h. 1. Define macros in config_iwrap.h.(Optional) IS_COMMAND 2. Edit Makefile.iwrap for MCU setting and build options. MCU, F_CPU MOUSEKEY_ENABLE, EXTRAKEY_ENABLE 3. Build hex file. $ make -f Makefile.iwrap 4. Program MCU. $ make -f Makefile.iwrap program Hardware ======== PJRC Teensy ----------- +---------------+ | Teensy++ | | | | | HHKB | | ~~~~ | PB0-2|------->ROW(6-8) | PB3-5|------->COL(9-11) | PB6|------->ENABLE(12) | PE6|<-------KEY(4) | PE7|------->PREV(5) | | | | | | +---------------+ V-USB ----- +---+ +---------------+ USB GND | | ATmega168 | ~~~ C3 | | 5V <-------+--------+---|Vcc,AVCC | HHKB R1 | | ~~~~ D- <----+--+-----R2-----|INT1 PB2-4|------->ROW(6-8) D+ <----|---+----R3-----|INT0 PC0-2|------->COL(9-11) Z1 Z2 | PC3|------->ENABLE(12) GND<----+---+-----------|GND PB0|<-------KEY(4) | PB1|------->PREV(5) | | GND+-C2--+--|XTAL1 RXD|------->Debug Console X1 | TXD|<-------Debug Console GND+-C3--+--|XTAL2 RST|---SW--+GND +---------------+ R1: 1.5K Ohm R2,R3: 68 Ohm Z1,Z2: Zener 3.6V C1,C2: 22pF C3: 0.1uF X1: Crystal 20MHz(16MHz/12MHz) SW: Push Switch(Optional for bootloader) iWRAP ----- +---------------+ WT12 5V | ATmega168 | 5V/3.3V~~~~ +-----+---|Vcc,AVCC PC4|---/--->iWRAP(RxD) USB | C3 | PC5|<--/----iWRAP(TxD) ~~~ | + | | 5V <--BATT + GND | | HHKB R1 | | ~~~~ D- <----+-----+--R2-----|INT1 PB2-4|------->ROW(6-8) D+ <----|---+----R3-----|INT0 PC0-2|------->COL(9-11) Z1 Z2 | PC3|------->ENABLE(12) GND<----+---+-----------|GND PB0|<-------KEY(4) | PB1|------->PREV(5) | | GND+-C2--+--|XTAL1 RXD|------->Debug Console X1 | TXD|<-------Debug Console GND+-C3--+--|XTAL2 RST|---SW--+GND +---------------+ R1: 1.5K Ohm R2,R3: 68 Ohm Z1,Z2: Zener 3.6V C1,C2: 22pF C3: 0.1uF X1: Crystal 12MHz SW: Push Switch(Optional) BATT: Li-Po Battery, Battery Charger and Voltage Regulator(5V and 3.3V). EOF