t.m.k. Keyboard Firmware
========================
http://github.com/tmk/tmk_keyboard

This is keyboard firmware for PFU HHKB style keyboard and Teensy/Teensy++ 2.0.
OS see this as composite device which has keyboard and mouse.

The project is heavily based on PJRC USB Keyboard/Mouse Example and
owes a debt to preceding keyboard firmware projects.


Version
-------
0.1     2010/08/23
        It works as normal keyboard.
        It is for modified Macway keyboard(TP-999KB-E).

1.0     2010/10/02
        keyboard has mouse key now.
        keyboard with layers.(see keymap.c)
            FN_1(right cmd):
                vi style layer
            FN_2(next to right shift):
                HHKB style layer
            FN_3(left bottom):
                h j k l:   mouse move
                a s d spc: mouse buttons
                m ,:       mouse wheel

1.1     2010/10/08
        Matrix wiring changed for casing.
        (and my Teensy PD3 seems to be latchuped and unusable. :<)

1.2     2010/10/13
        HHKB support
        horizontal mouse wheel support
        change keymaps


Build
-----
Compiling sources need AVR GCC, AVR Libc and GNU make.(You can use WinAVR on Windows.)

$ cd <target> (hhkb or macway)
$ make


Debuging
--------
Debug print is on if 4 keys are pressed during booting. 
Use PJRC's hid_listen.exe to see debug messages.


AVR Target board
----------------
Teensy/Teensy++
http://www.pjrc.com/teensy


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/


TODO & ideas
------------
licensing notes(GPL)
    I think GPL is not infringement of PJRC license.
souce code cleaning
sleep&wakeup
debouncing logic
    will be coded when bouncing occurs.
    bouncing doesnt occur on my ALPS switch so far.
    scan rate is too slow?(to be measure)
layer switching
    time before switching
    timeout when not used during specific time
debug on/off
    Fn key conbination during normal operation
    matrix print on/off
    key print on/off
    mouse print on/off

Trackpoint(PS/2)
    receive PS/2 signal from TrackPoint
    send USB HID report
Thinkpad keyboard support
    turn keyboard to USB keyboard/mouse composite device
mouse horizontal wheel
    http://www.microchip.com/forums/tm.aspx?high=&m=391435&mpage=1#391521
    http://www.keil.com/forum/15671/
    http://www.microsoft.com/whdc/device/input/wheel.mspx
setting menu(configure without changing firmware)
    console for display
    keymap/layer setting
    mouse speed/acceleration
    matrix display
PS/2 keyboard mode
    with USB to PS/2 dumb adapter(possible?)
AT90USBKEY support
    and other AVR USB boards

DONE:
support for HHKB pro matrix signal
    exchange controller board with teensy
    2010/10/11
keymap
    Matias half keyboard style
    2010/10/23
souce code cleaning
    2010/10/23
debug on/off
    debug off by default
    pressing keys during booting
    2010/10/23


EOF
