~ruther/qmk_firmware

479af4bdcd08560a3400426b30c247c620f6204e — tmk 15 years ago df5b4ea
version 1.0.
5 files changed, 57 insertions(+), 46 deletions(-)

M Makefile
M README
M keymap.c
R {mykey => tmk}.c
M usb_keycodes.h
M Makefile => Makefile +1 -1
@@ 41,7 41,7 @@


# Target file name (without extension).
TARGET = mykey
TARGET = tmk


# List C source files here. (C dependencies are automatically generated.)

M README => README +45 -34
@@ 1,40 1,29 @@
Keyboard Firmware
=================
2010/08/23 noname
t.m.k. Keyboard Firmware
========================
This is keyboard firmware for PFU HHKB style keyboard and 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
        implemented for macway modified.
        It works as normal keyboard now.

        It works as normal keyboard.
        It is for modified Macway keyboard(TP-999KB-E).

TODO
----
modulization
    clean source
debouncing
    will be coded when bouncing occurs.
    bouncing doesnt occur on my alps switch so far.
    scan rate is too slow?(to be measure)
anti-ghost
    2010/09/13 done
sleep&wakeup
boot keyboard support
mouse key
keymap layer
    2010/09/16 simple layer(HHKB/vi cursor)
    key combination switch
    toggle siwtch
setting menu(wizard)
    debug console
    keymap setting
    matrix display
PS/2 keyboard mode
HHKB support
Trackpoint(PS/2) support
    Thinkpad keyboard support
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


target board


@@ 43,10 32,11 @@ Teensy 2.0
http://www.pjrc.com/teensy


projects based on/related to
----------------------------
PJRC USB Keyboard Example
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


@@ 65,4 55,25 @@ ps2avr
    http://sourceforge.net/projects/ps2avr/


TODO
----
licensing notes(GPL)
    I think GPL is not infringement of PJRC license.
souce code cleaning
sleep&wakeup
debouncing
    will be coded when bouncing occurs.
    bouncing doesnt occur on my ALPS switch so far.
    scan rate is too slow?(to be measure)
setting menu(wizard)
    debug console
    keymap setting
    matrix display
PS/2 keyboard mode
support for HHKB pro matrix signal
Trackpoint(PS/2) support
Thinkpad keyboard support
mouse horizontal wheel


EOF

M keymap.c => keymap.c +9 -9
@@ 12,15 12,15 @@ static const uint8_t PROGMEM Keymap[][MATRIX_ROWS][MATRIX_COLS] = {
    {
        { KB_LALT, KB_NO,     KB_BSPACE,  KB_NO, KB_LEFT,   KB_NO,      KB_ENTER, KB_SPACE },
        { KB_1,    KB_ESCAPE, KB_TAB,     KB_Q,  KB_A,      KB_LCTRL,   KB_Z,     KB_RIGHT },
        { KB_2,    FN_0,      KB_LGUI,    KB_W,  KB_S,      KB_NO,      KB_X,     KB_UP },
        { KB_3,    KB_NO,     KB_RSHIFT,  KB_E,  KB_D,      FN_1,       KB_C,     KB_DOWN },
        { KB_2,    FN_1,      KB_LGUI,    KB_W,  KB_S,      KB_NO,      KB_X,     KB_UP },
        { KB_3,    KB_NO,     KB_RSHIFT,  KB_E,  KB_D,      FN_2,       KB_C,     KB_DOWN },
        { KB_4,    KB_5,      KB_T,       KB_R,  KB_F,      KB_G,       KB_V,     KB_B },
        { KB_7,    KB_6,      KB_Y,       KB_U,  KB_J,      KB_H,       KB_M,     KB_N },
        { KB_8,    KB_EQUAL,  KB_RBRACKET,KB_I,  KB_K,      KB_NO,      KB_COMMA, KB_LSHIFT },
        { KB_9,    KB_NO,     KB_NO,      KB_O,  KB_L,      FN_2,       KB_DOT,   KB_NO },
        { KB_9,    KB_NO,     KB_NO,      KB_O,  KB_L,      FN_3,       KB_DOT,   KB_NO },
        { KB_0,    KB_MINUS,  KB_LBRACKET,KB_P,  KB_SCOLON, KB_QUOTE,   KB_NO,    KB_SLASH }
    },
    // 1: FN_0(RIGHT ALT)
    // 1: FN_1(RIGHT ALT)
    {
        { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, KB_NO,     KB_NO,      KB_BSLASH,KB_NO },
        { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, KB_NO,     KB_LCTRL,   KB_NO,    KB_NO },


@@ 32,7 32,7 @@ static const uint8_t PROGMEM Keymap[][MATRIX_ROWS][MATRIX_COLS] = {
        { KB_F9,   KB_NO,     KB_NO,      KB_NO, KB_RIGHT,  KB_NO,      KB_END,   KB_NO },
        { KB_F10,  KB_F11,    KB_NO,      KB_NO, KB_NO,     KB_NO,      KB_NO,    KB_NO }
    },
    // 2: FN_1(HHKB Fn)
    // 2: FN_2(HHKB Fn)
    {
        { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, KB_NO,     KB_NO,      KB_BSLASH,KB_NO },
        { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, KB_VOLDOWN,KB_LCTRL,   KB_NO,    KB_NO },


@@ 44,7 44,7 @@ static const uint8_t PROGMEM Keymap[][MATRIX_ROWS][MATRIX_COLS] = {
        { KB_F9,   KB_NO,     KB_NO,      KB_NO, KB_PGUP,   KB_NO,      KB_PGDOWN,KB_NO },
        { KB_F10,  KB_F11,    KB_UP,      KB_NO, KB_LEFT,   KB_RIGHT,   KB_NO,    KB_DOWN }
    },
    // 3: FN_2(LEFT Bottom)
    // 3: FN_3(LEFT Bottom)
    {
        { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, MS_LEFT,   KB_NO,      KB_BSLASH,  MS_BTN1 },
        { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, MS_BTN1,   KB_LCTRL,   KB_NO,      MS_RIGHT },


@@ 73,9 73,9 @@ int get_layer(void) {
    for (int row = 0; row < MATRIX_ROWS; row++) {
        for (int col = 0; col < MATRIX_ROWS; col++) {
            if (matrix[row] & 1<<col) continue;
            if (get_keycode(0, row, col) == FN_0) layer = 1;
            if (get_keycode(0, row, col) == FN_1) layer = 2;
            if (get_keycode(0, row, col) == FN_2) layer = 3;
            if (get_keycode(0, row, col) == FN_1) layer = 1;
            if (get_keycode(0, row, col) == FN_2) layer = 2;
            if (get_keycode(0, row, col) == FN_3) layer = 3;
        }
    }
    current_layer = layer;

R mykey.c => tmk.c +0 -0
M usb_keycodes.h => usb_keycodes.h +2 -2
@@ 262,10 262,10 @@ enum keycodes {
    KB_RGUI,            /* 0x80 */

    /* extensions for internal use */
    FN_0 = 0xE8,
    FN_1,
    FN_1 = 0xE8,
    FN_2,
    FN_3,
    FN_4,
    MS_UP = 0xF0,
    MS_DOWN,
    MS_LEFT,