t.m.k. Keyboard Firmware ======================== http://github.com/tmk/tmk_keyboard This is keyboard firmware for AVR USB MCUs or Teensy/Teensy++. http://www.pjrc.com/teensy The project is heavily based on PJRC USB Keyboard/Mouse Example and owes a debt to preceding keyboard firmware projects. This firmware is used in following projects: HHKB mod: http://geekhack.org/showwiki.php?title=Island:12047 Macway mod: http://geekhack.org/showwiki.php?title=Island:11930 Features -------- Mouse key control mouse cursor from keyboard. System Control Key Power Down, Sleep, Wake Up & USB Remote Wake up Media Control Key Volume Down/Up, Mute USB NKRO send 120 keys(+ 8 modifiers) at most simultaneously. PS/2 mouse support integrate PS/2 mouse(TrackPoint) into keyboard as composite device. Limitations ----------- Build ----- To compile needs AVR GCC, AVR Libc and GNU make. You can use WinAVR on Windows. http://winavr.sourceforge.net/ $ cd (hhkb or macway currently) $ make The firmware will be compiled as a file tmk_.hex. Build your own firmware ----------------------- Copying exsistent target(macway) is easy way. 1. Copy contens of macway/ to your own target directory. 2. Edit Makefile. See next section. 3. Edit config.h. See next section. 4. Edit matrix.c. You will need to fix followings at least. matrix_init() matrix_scan() read_col() unselect_rows() select_row() 5. Edit keymap.c. NOTE: It is not final design and a bit messy. You will need to fix followings at least. KEYMAP fn_layer[] fn_keycode[] keymaps[] 6. Build. If you have a build error like following, comment out "--relax" option in Makefile.common. (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12' Build Options ------------- /Makefile: 1. Set target name for your firmware. TARGET = tmk_ 2. Choose a MCU and its frequency. MCU = atmega32u4 # Teensy 2.0 #MCU = at90usb1286 # Teensy++ 2.0 F_CPU = 16000000 3. Choose optional modules as needed. Comment out to disable optional modules. MOUSEKEY_ENABLE = yes # Mouse keys PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control) USB_NKRO_ENABLE = yes # USB Nkey Rollover /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 if needed. 4. PS/2 mouse configuration if needed. Debuging & Rescue ----------------- Use PJRC's hid_listen.exe to see debug messages. Press right Control + Shift + Alt + GUI + H to debug menu. Pressing any 3 keys when connected enables debug output. Pressing any 4 keys when connected makes bootloader comes up. Projects related ---------------- 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/ EOF