# | # | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | MOUSEKEY_ENABLE = yes # Mouse keys | ||||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | #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 | #USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||
# | |||||
# Makefile for PJRC Teensy | |||||
# | |||||
# Target file name (without extension). | # Target file name (without extension). | ||||
TARGET = hhkb | |||||
TARGET = hhkb_pjrc | |||||
# Directory common source filess exist | # Directory common source filess exist | ||||
COMMON_DIR = .. | COMMON_DIR = .. | ||||
matrix.c \ | matrix.c \ | ||||
led.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 | # MCU name, you MUST set this to match the board you are using | ||||
# comment out to disable the options. | # comment out to disable the options. | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | MOUSEKEY_ENABLE = yes # Mouse keys | ||||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | #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 | USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||
# | |||||
# Makefile for V-USB | |||||
# | |||||
# Target file name (without extension). | # Target file name (without extension). | ||||
TARGET = hhkb_vusb | TARGET = hhkb_vusb | ||||
# MCU name, you MUST set this to match the board you are using | # 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 | # 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 | MCU = atmega168 | ||||
# comment out to disable the options. | # comment out to disable the options. | ||||
# | # | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | 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 | #USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||
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 |
#endif | #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 | #endif |
# | # | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | MOUSEKEY_ENABLE = yes # Mouse keys | ||||
#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | #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 | #USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||
#---------------- Programming Options -------------------------- | #---------------- 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 | |||||
# | |||||
# Makefile for PJRC Teensy | |||||
# | |||||
# Target file name (without extension). | # Target file name (without extension). | ||||
TARGET = ps2_usb | |||||
TARGET = ps2_usb_pjrc | |||||
# Directory common source filess exist | # Directory common source filess exist | ||||
COMMON_DIR = .. | COMMON_DIR = .. | ||||
# comment out to disable the options. | # comment out to disable the options. | ||||
# | # | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | 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 | USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||
# | |||||
# Makefile for V-USB | |||||
# | |||||
# Target file name (without extension). | # Target file name (without extension). | ||||
TARGET = ps2_vusb | |||||
TARGET = ps2_usb_vusb | |||||
# Directory common source filess exist | # Directory common source filess exist | ||||
COMMON_DIR = .. | COMMON_DIR = .. | ||||
# comment out to disable the options. | # comment out to disable the options. | ||||
# | # | ||||
MOUSEKEY_ENABLE = yes # Mouse keys | 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 | #USB_NKRO_ENABLE = yes # USB Nkey Rollover | ||||