Open-source keyboard firmware for Atmel AVR and Arm USB families
Go to file
2012-06-11 10:53:02 +09:00
common Fixed Makefile to adjust new directories. 2012-06-07 12:35:24 +09:00
converter Moved protocol files; news and x68k. 2012-06-11 10:51:46 +09:00
doc Moved files to common, protocol and doc directory 2012-06-07 02:47:33 +09:00
keyboard Moved protocol files; news and x68k. 2012-06-11 10:51:46 +09:00
protocol Moved protocol files; news and x68k. 2012-06-11 10:51:46 +09:00
.gitignore add mouse function. 2010-09-30 14:50:23 +09:00
common.mk Fixed Makefile to adjust new directories. 2012-06-07 12:35:24 +09:00
protocol.mk Made directories for keyboard and converter projects. 2012-06-08 13:32:38 +09:00
README.md Moved protocol files; news and x68k. 2012-06-11 10:51:46 +09:00
rules.mk Fixed Makefile to adjust new directories. 2012-06-07 12:35:24 +09: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

  • 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.

Projects

converter

keyboard

Files & Directories

Top

Keyboard Protocols

  • 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

Build & Program

Build firmware

To compile you need AVR GCC, AVR Libc and GNU make. You can use WinAVR on Windows and CrossPack on Mac.

$ cd <project>
$ make

The firmware will be compiled as a file tmk_<project>.hex.

Program Controller

If you have proper program command in Makefile just type this.

$ make program

As for Teensy you can use PJRC's loader to program hex file. http://www.pjrc.com/teensy/loader.html

Build Options

Makefile

1. MCU and Frequency.

MCU = atmega32u4       # Teensy 2.0
#MCU = at90usb1286      # Teensy++ 2.0
F_CPU = 16000000

2. Features

Note that comment out to disable them. 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

3. Programmer

Set proper command for your controller, bootloader and programmer. # 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

config.h

1. USB vendor/product ID and device description

#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

2. Keyboard matrix configuration

#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_HAS_GHOST

3. Mouse keys configuration

4. PS/2 mouse configuration

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

kbupgrade

c64key

rump

dulcimer

humblehacker-keyboard

ps2avr