Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 5.8KB

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