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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

README.md 5.2KB

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

  • ps2_usb - PS/2 keyboard to USB
  • adb_usb - ADB keyboard to USB
  • m0110_usb - Machintosh 128K/512K/Plus keyboard to USB
  • terminal_usb - IBM Model M terminal keyboard(PS/2 scancode set3) to USB
  • sony_usb - Sony NEWS keyboard to USB
  • x68k_usb - Sharp X68000 keyboard to USB

keyboard

  • hhkb - Happy Hacking Keyboard professional
  • macway - Compact keyboard mod
  • hbk - Happy Buckling sprint keyboard(IBM Model M mod)

Files & Directories

Top

  • common/ common codes
  • protocol/ keyboard protocol support
  • keyboard/ keyboard projects
  • converter/ protocol converter projects
  • doc/ documents

Keyboard Protocols

  • pjrc/ PJRC USB stack
  • vusb/ Objective Development V-USB
  • iwrap/ Bluetooth HID for Bluegiga iWRAP
  • ps2 PS/2 protocol
  • adb Apple Desktop Bus protocol
  • m0110 Macintosh 128K/512K/Plus keyboard protocol
  • news Sony NEWS keyboard protocol
  • x68k 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_.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