@@ -38,7 +38,7 @@ F_CPU = 16000000 | |||
# | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | |||
USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
#USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||
@@ -1,5 +1,10 @@ | |||
# | |||
# Makefile for PJRC Teensy | |||
# | |||
# Target file name (without extension). | |||
TARGET = hhkb | |||
TARGET = hhkb_pjrc | |||
# Directory common source filess exist | |||
COMMON_DIR = .. | |||
@@ -13,7 +18,7 @@ TARGET_SRC = main_pjrc.c \ | |||
matrix.c \ | |||
led.c | |||
CONFIG_H = config.h | |||
CONFIG_H = config_pjrc.h | |||
# MCU name, you MUST set this to match the board you are using | |||
@@ -36,7 +41,7 @@ F_CPU = 16000000 | |||
# comment out to disable the options. | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | |||
USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||
@@ -1,3 +1,8 @@ | |||
# | |||
# Makefile for V-USB | |||
# | |||
# Target file name (without extension). | |||
TARGET = hhkb_vusb | |||
@@ -23,10 +28,6 @@ OPT_DEFS = -DDEBUG_LEVEL=0 | |||
# MCU name, you MUST set this to match the board you are using | |||
# type "make clean" after changing this, so all files will be rebuilt | |||
#MCU = at90usb162 # Teensy 1.0 | |||
#MCU = atmega32u4 # Teensy 2.0 | |||
#MCU = at90usb646 # Teensy++ 1.0 | |||
#MCU = at90usb1286 # Teensy++ 2.0 | |||
MCU = atmega168 | |||
@@ -42,7 +43,7 @@ F_CPU = 20000000 | |||
# comment out to disable the options. | |||
# | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
#USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||
@@ -0,0 +1,80 @@ | |||
Alternative Controller for HHKB | |||
=============================== | |||
Feature | |||
------- | |||
- Mouse Keys | |||
- NKRO on USB | |||
- Keymap Layers | |||
Customize Keymap | |||
---------------- | |||
see keymap.c. | |||
Build for 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, USB_EXTRA_ENABLE, USB_NKRO_ENABLE | |||
3. Build hex file. | |||
$ make | |||
4. Program MCU. | |||
$ make program | |||
Build for 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, USB_EXTRA_ENABLE, USB_NKRO_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 | |||
V-USB Circuit | |||
------------- | |||
+---+ +---------------+ | |||
USB GND | | ATmega168 | | |||
=== C3 | | | |||
5V <-------+--------+---|Vcc,AVCC | HHKB | |||
R1 | | ==== | |||
D- <----+--+-----R2-----|INT1 PB0-2|------->ROW | |||
D+ <----|---+----R3-----|INT0 PB3-5|------->COL | |||
Z1 Z2 | PB6|------->ENABLE | |||
GND<----+---+--+--+-----|GND PE6|------->KEY | |||
| | | PE7|------->PREV | |||
| C2-+--|XTAL1 | (see doc/HHKB.txt for pinouts) | |||
| X1 | | | |||
+--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) | |||
EOF |
@@ -29,92 +29,4 @@ | |||
#endif | |||
/* PS/2 lines */ | |||
#ifdef PS2_MOUSE_ENABLE | |||
#define PS2_CLOCK_PORT PORTD | |||
#define PS2_CLOCK_PIN PIND | |||
#define PS2_CLOCK_DDR DDRD | |||
#define PS2_CLOCK_BIT 4 | |||
#define PS2_DATA_PORT PORTD | |||
#define PS2_DATA_PIN PIND | |||
#define PS2_DATA_DDR DDRD | |||
#define PS2_DATA_BIT 0 | |||
// Synchronous USART is used to receive data from keyboard. | |||
// Use RXD pin for PS/2 DATA line and XCK for PS/2 CLOCK. | |||
// NOTE: This is recomended strongly if you use V-USB library. | |||
#define PS2_USE_USART | |||
// External or Pin Change Interrupt is used to receive data from keyboard. | |||
// Use INT1 or PCINTxx for PS/2 CLOCK line. see below. | |||
//#define PS2_USE_INT | |||
#ifdef PS2_USE_USART | |||
// synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge | |||
// set DDR of CLOCK as input to be slave | |||
#define PS2_USART_INIT() do { \ | |||
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \ | |||
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \ | |||
UCSR0C = ((1 << UMSEL00) | \ | |||
(3 << UPM00) | \ | |||
(0 << USBS0) | \ | |||
(3 << UCSZ00) | \ | |||
(0 << UCPOL0)); \ | |||
UCSR0A = 0; \ | |||
UBRR0H = 0; \ | |||
UBRR0L = 0; \ | |||
} while (0) | |||
#define PS2_USART_RX_INT_ON() do { \ | |||
UCSR0B = ((1 << RXCIE0) | \ | |||
(1 << RXEN0)); \ | |||
} while (0) | |||
#define PS2_USART_RX_POLL_ON() do { \ | |||
UCSR0B = (1 << RXEN0); \ | |||
} while (0) | |||
#define PS2_USART_OFF() do { \ | |||
UCSR0C = 0; \ | |||
UCSR0B &= ~((1 << RXEN0) | \ | |||
(1 << TXEN0)); \ | |||
} while (0) | |||
#define PS2_USART_RX_READY (UCSR0A & (1<<RXC0)) | |||
#define PS2_USART_RX_DATA UDR0 | |||
#define PS2_USART_ERROR (UCSR0A & ((1<<FE0) | (1<<DOR0) | (1<<UPE0))) | |||
#define PS2_USART_RX_VECT USART_RX_vect | |||
#endif | |||
#ifdef PS2_USE_INT | |||
/* INT1 | |||
#define PS2_INT_INIT() do { \ | |||
EICRA |= ((1<<ISC11) | \ | |||
(0<<ISC10)); \ | |||
} while (0) | |||
#define PS2_INT_ON() do { \ | |||
EIMSK |= (1<<INT1); \ | |||
} while (0) | |||
#define PS2_INT_OFF() do { \ | |||
EIMSK &= ~(1<<INT1); \ | |||
} while (0) | |||
#define PS2_INT_VECT INT1_vect | |||
*/ | |||
/* PCINT20 */ | |||
#define PS2_INT_INIT() do { \ | |||
PCICR |= (1<<PCIE2); \ | |||
} while (0) | |||
#define PS2_INT_ON() do { \ | |||
PCMSK2 |= (1<<PCINT20); \ | |||
} while (0) | |||
#define PS2_INT_OFF() do { \ | |||
PCMSK2 &= ~(1<<PCINT20); \ | |||
PCICR &= ~(1<<PCIE2); \ | |||
} while (0) | |||
#define PS2_INT_VECT PCINT2_vect | |||
#endif | |||
#endif | |||
#endif |
@@ -37,13 +37,13 @@ F_CPU = 16000000 | |||
# | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | |||
USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
#USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||
#---------------- Programming Options -------------------------- | |||
PROGRAM_CMD = teensy_loader_cli.exe -mmcu=$(MCU) -w -v $(TARGET).hex | |||
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex | |||
@@ -1,5 +1,10 @@ | |||
# | |||
# Makefile for PJRC Teensy | |||
# | |||
# Target file name (without extension). | |||
TARGET = ps2_usb | |||
TARGET = ps2_usb_pjrc | |||
# Directory common source filess exist | |||
COMMON_DIR = .. | |||
@@ -37,7 +42,7 @@ F_CPU = 16000000 | |||
# comment out to disable the options. | |||
# | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||
@@ -1,5 +1,10 @@ | |||
# | |||
# Makefile for V-USB | |||
# | |||
# Target file name (without extension). | |||
TARGET = ps2_vusb | |||
TARGET = ps2_usb_vusb | |||
# Directory common source filess exist | |||
COMMON_DIR = .. | |||
@@ -43,7 +48,7 @@ F_CPU = 20000000 | |||
# comment out to disable the options. | |||
# | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
#USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) | |||
USB_EXTRA_ENABLE = yes # Audio control and System control | |||
#USB_NKRO_ENABLE = yes # USB Nkey Rollover | |||