Open-source keyboard firmware for Atmel AVR and Arm USB families https://qmk.fm
Go to file
2013-01-01 03:20:53 +09:00
common Add bitpop16() in util.c. 2012-11-24 16:34:59 +09:00
converter Add ADB extended keyboard support by blargg@GH. 2012-12-12 09:49:59 +09:00
doc Moved files to common, protocol and doc directory 2012-06-07 02:47:33 +09:00
keyboard Fix debouncing code.(gh60) 2013-01-01 03:20:53 +09:00
protocol Remove DEBUG_LED from pjrc stack. 2012-12-27 02:33:40 +09:00
.gitignore add mouse function. 2010-09-30 14:50:23 +09:00
.gitmodules Add submodule USB_Host_Shield_2.0 from my repositry. 2012-09-02 23:06:02 +09:00
common.mk Initial version of new code for layer switch is added. 2012-10-17 15:55:37 +09:00
protocol.mk Made directories for keyboard and converter projects. 2012-06-08 13:32:38 +09:00
README.md Fix README.md: remove bad links 2012-06-11 15:20:40 +09:00
rules.mk Use software serial for Sun. 2012-10-19 15:07:23 +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.
  • keyboard protocols - PS/2, ADB and old keyboard protocols.

Projects

converter

keyboard

Files & Directories

Top

  • 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

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 a 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

Makefile Options

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 Options

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

4. PS/2 mouse

5. COMMAND key combination

#define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_RSHIFT))) 

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