Open-source keyboard firmware for Atmel AVR and Arm USB families. Mirror of https://github.com/qmk/qmk_firmware
Go to file
2012-01-16 04:40:14 +09:00
adb_usb fixed a bug on host_system_send(). 2011-12-22 01:05:28 +09:00
hhkb fixed a bug on host_system_send(). 2011-12-22 01:05:28 +09:00
iwrap Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
m0110_usb M0110: added keymaps, mousekeys 2011-12-19 14:06:53 +09:00
macway add debouncing into macway/matrix.c. 2011-09-29 17:08:57 +09:00
pjrc fixed a bug on host_system_send(). 2011-12-22 01:05:28 +09:00
ps2_usb Fixed wrong description about pins. 2012-01-16 04:40:14 +09:00
sony_usb added SONY NEWS keyboard NWP-5461 support. 2012-01-06 01:37:33 +09:00
vusb Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
.gitignore add mouse function. 2010-09-30 14:50:23 +09:00
adb.c added copyright and license notice. 2011-07-21 00:32:52 +09:00
adb.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
bootloader.c Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
bootloader.h Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
command.c Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
command.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
common.mk Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
controller_teensy.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
COPYING.GPLv2 added copyright and license notice. 2011-07-21 00:32:52 +09:00
COPYING.GPLv3 added copyright and license notice. 2011-07-21 00:32:52 +09:00
debug.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
host_driver.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
host.c fixed a bug on host_system_send(). 2011-12-22 01:05:28 +09:00
host.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
iwrap.mk Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
keyboard.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
keyboard.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
keymap.h Added USART implementation for PS/2 signal handling. 2012-01-16 00:41:06 +09:00
layer.c Added USART implementation for PS/2 signal handling. 2012-01-16 00:41:06 +09:00
layer.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
led.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
LICENSE.txt added copyright and license notice. 2011-07-21 00:32:52 +09:00
m0110.c M0110: added keymaps, mousekeys 2011-12-19 14:06:53 +09:00
m0110.h M0110: added keymaps, mousekeys 2011-12-19 14:06:53 +09:00
matrix.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
mousekey.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
mousekey.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
pjrc.mk Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00
POWER.txt Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
print.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
print.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
ps2_mouse.c added copyright and license notice. 2011-07-21 00:32:52 +09:00
ps2_mouse.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
ps2_usart.c Added USART implementation for PS/2 signal handling. 2012-01-16 00:41:06 +09:00
ps2.c added copyright and license notice. 2011-07-21 00:32:52 +09:00
ps2.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
README Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
report.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
rules.mk PS/2 to USB: fix comments. 2011-12-09 14:51:30 +09:00
sendchar_null.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
sendchar_uart.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
sendchar.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
timer.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
timer.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
uart.c Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
uart.h Added Bulegiga iWRAP support into HHKB.(Bluetooth) 2011-09-17 23:53:18 +09:00
usb_keycodes.h added SONY NEWS keyboard NWP-5461 support. 2012-01-06 01:37:33 +09:00
USB_NKRO.txt Add PS/2 mouse support to connect TrackPoint Unit. 2011-01-02 23:52:13 +09:00
util.c added copyright and license notice. 2011-07-21 00:32:52 +09:00
util.h added copyright and license notice. 2011-07-21 00:32:52 +09:00
vusb.mk Refactored bootloader jumping. Added USBaspLoader support. 2011-09-22 16:56:36 +09:00

t.m.k. Keyboard Firmware
========================
This is keyboard firmware for Teensy(AVR USB MCU) and V-USB board.

source code repository:
http://github.com/tmk/tmk_keyboard

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
PS2 to USB: http://geekhack.org/showwiki.php?title=Island:14618
ADB to USB: http://geekhack.org/showwiki.php?title=Island:14290

The project is heavily based on PJRC USB Keyboard/Mouse Example and
owes a debt to preceding keyboard firmware projects.
http://www.pjrc.com/teensy


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


Files & Directories
-------------------
Target:
hhkb/                           keyboard controller for PFU HHKB pro
macway/                         keyboard controller for Macway mod
ps2_usb/                        PS2 to USB keyboard converter
adb_usb/                        ADB to USB keyboard converter

USB Protocol Stack:
pjrc/                           PJRC  USB stack
vusb/                           V-USB USB stack
ps2.[ch]                        PS/2 protocol
adb.[ch]                        ADB protocol


Build
-----
To compile needs AVR GCC, AVR Libc and GNU make.
You can use WinAVR on Windows.  http://winavr.sourceforge.net/

$ cd <target>
$ make

The firmware will be compiled as a file tmk_<target>.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
-------------
<target>/Makefile:
1. Set target name for your firmware.
     TARGET = tmk_<target>
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
     EXTRAKEY_ENABLE = yes	# Enhanced feature for Windows(Audio control and System control)
     NKRO_ENABLE = yes		# USB Nkey Rollover

<target>/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 <COMMAND> + H to debug menu. 
(see config.h for <COMMAND> key combination.)

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