2012-06-07 15:37:46 +00:00
t.m.k. Keyboard Firmware Collection
====================================
This is a keyboard firmware with some features for Atmel AVR controller.
Source code is available here: < http: / / github . com / tmk / tmk_keyboard >
Features
--------
2012-06-11 06:20:40 +00:00
* Mouse key - Mouse control by keyboard.
* System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up.
* Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc.
* USB NKRO - Can send 120 keys(+ 8 modifiers) simultaneously.
* PS/2 mouse support - integrate PS/2 mouse(TrackPoint) into keyboard as composite device.
* keyboard protocols - PS/2, ADB and old keyboard protocols.
2012-06-07 15:37:46 +00:00
Projects
--------
### converter
2012-06-11 06:20:40 +00:00
* ps2_usb - [PS/2 keyboard to USB][GH_ps2]
* adb_usb - [ADB keyboard to USB][GH_adb]
* m0110_usb - [Machintosh 128K/512K/Plus keyboard to USB][GH_m0110]
* terminal_usb - [IBM Model M terminal keyboard(PS/2 scancode set3) to USB][GH_terminal]
* news_usb - [Sony NEWS keyboard to USB][GH_news]
* x68k_usb - [Sharp X68000 keyboard to USB][GH_x68k]
2012-06-07 15:37:46 +00:00
### keyboard
2012-06-11 06:20:40 +00:00
* hhkb - [Happy Hacking Keyboard professional][GH_hhkb]
* macway - [Compact keyboard mod][GH_macway]
* hbkb - [Happy Buckling sprint keyboard(IBM Model M mod)][GH_hbkb]
2012-06-07 15:37:46 +00:00
[GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930
[GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047
[GH_ps2]: http://geekhack.org/showwiki.php?title=Island:14618
[GH_adb]: http://geekhack.org/showwiki.php?title=Island:14290
[GH_hhkb_bt]: http://geekhack.org/showwiki.php?title=Island:20851
[GH_m0110]: http://geekhack.org/showwiki.php?title=Island:24965
2012-06-10 14:50:47 +00:00
[GH_news]: http://geekhack.org/showwiki.php?title=Island:25759
2012-06-07 15:37:46 +00:00
[GH_terminal]: http://geekhack.org/showwiki.php?title=Island:27272
[GH_x68k]: http://geekhack.org/showwiki.php?title=Island:29060
2012-06-10 14:50:47 +00:00
[GH_hbkb]: http://geekhack.org/showwiki.php?title=Island:29483
2012-06-07 15:37:46 +00:00
Files & Directories
-------------------
### Top
2012-06-11 06:20:40 +00:00
* common/ - common codes
* protocol/ - keyboard protocol support
* keyboard/ - keyboard projects
* converter/ - protocol converter projects
* doc/ - documents
* common.mk - Makefile for common
* protoco.mk - Makefile for protocol
* rules.mk - Makefile for build rules
2012-06-07 15:37:46 +00:00
### Keyboard Protocols
2012-06-11 06:20:40 +00:00
* pjrc/ - PJRC USB stack
* vusb/ - Objective Development V-USB
* iwrap/ - Bluetooth HID for Bluegiga iWRAP
* ps2.c - PS/2 protocol
* adb.c - Apple Desktop Bus protocol
* m0110.c - Macintosh 128K/512K/Plus keyboard protocol
* news.c - Sony NEWS keyboard protocol
* x68k.c - Sharp X68000 keyboard protocol
2012-06-07 15:37:46 +00:00
Build & Program
---------------
### Build firmware
To compile you need `AVR GCC` , `AVR Libc` and `GNU make` .
2012-06-10 14:50:47 +00:00
You can use [WinAVR][winavr] on Windows and [CrossPack][crosspack] on Mac.
2012-06-07 15:37:46 +00:00
$ cd < project >
$ make
2012-06-10 14:50:47 +00:00
The firmware will be compiled as a file `tmk_<project>.hex` .
2012-06-07 15:37:46 +00:00
2012-06-10 14:50:47 +00:00
[winavr]: http://winavr.sourceforge.net/
[crosspack]: http://www.obdev.at/products/crosspack/index.html
2012-06-07 15:37:46 +00:00
### Program Controller
2012-06-11 06:20:40 +00:00
If you have a proper program command in `Makefile` just type this.
2012-06-07 15:37:46 +00:00
$ make program
As for `Teensy` you can use `PJRC's loader` to program hex file. < http: // www . pjrc . com / teensy / loader . html >
2012-06-11 06:20:40 +00:00
Makefile Options
----------------
### 1. MCU and Frequency.
2012-06-07 15:37:46 +00:00
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb1286 # Teensy++ 2.0
F_CPU = 16000000
2012-06-11 06:20:40 +00:00
### 2. Features
2012-06-07 15:37:46 +00:00
Note that ** *comment out*** to disable them.
2012-06-11 06:20:40 +00:00
2012-06-07 15:37:46 +00:00
MOUSEKEY_ENABLE = yes # Mouse keys
PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support
EXTRAKEY_ENABLE = yes # Enhanced feature for Windows(Audio control and System control)
NKRO_ENABLE = yes # USB Nkey Rollover
2012-06-11 06:20:40 +00:00
### 3. Programmer
2012-06-07 15:37:46 +00:00
Set proper command for your controller, bootloader and programmer.
2012-06-11 06:20:40 +00:00
2012-06-07 15:37:46 +00:00
# for PJRC Teensy
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# for Atmel AT90USBKEY
PROGRAM_CMD = dfu-programmer $(MCU) flash $(TARGET).hex
# avrdude
PROGRAM_CMD = avrdude -p $(MCU) -c avrispmkII -P USB -U flash:w:$(TARGET).hex
PROGRAM_CMD = avrdude -p $(MCU) -c usbasp -U flash:w:$(TARGET).hex
PROGRAM_CMD = avrdude -p $(MCU) -c arduino -P COM1 -b 57600 -U flash:w:$(TARGET).hex
2012-06-11 06:20:40 +00:00
config.h Options
----------------
### 1. USB vendor/product ID and device description
2012-06-07 15:37:46 +00:00
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0xBEEF
/* device description */
#define MANUFACTURER t.m.k.
#define PRODUCT Macway mod
#define DESCRIPTION t.m.k. keyboard firmware for Macway mod
2012-06-11 06:20:40 +00:00
### 2. Keyboard matrix configuration
2012-06-07 15:37:46 +00:00
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_HAS_GHOST
2012-06-11 06:20:40 +00:00
### 3. Mouse keys
### 4. PS/2 mouse
### 5. COMMAND key combination
2012-06-07 15:37:46 +00:00
2012-06-11 06:20:40 +00:00
#define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_RSHIFT)))
2012-06-07 15:37:46 +00:00
Keymap
------
Build your own firmware
-----------------------
Debuging
--------
Use PJRC's `hid_listen` to see debug messages and press `<COMMAND> + H` to debug menu.
See `config.h` for definition of `<COMMAND>` key combination.
Other Keyboard Projects
-----------------------
### PJRC USB Keyboard/Mouse Example
- < http: // www . pjrc . com / teensy / usb_keyboard . html >
- < http: // www . pjrc . com / teensy / usb_mouse . html >
### kbupgrade
- < http: // github . com / rhomann / kbupgrade >
- < http: // geekhack . org / showwiki . php ? title = Island:8406 >
### c64key
- < http: // symlink . dk / projects / c64key />
### rump
- < http: // mg8 . org / rump />
- < http: // github . com / clee / rump >
### dulcimer
- < http: // www . schatenseite . de / dulcimer . html >
### humblehacker-keyboard
- < http: // github . com / humblehacker >
- < http: // www . humblehacker . com / keyboard />
- < http: // geekhack . org / showwiki . php ? title = Island:6292 >
### ps2avr
- < http: // sourceforge . net / projects / ps2avr />