version 1.0.

daktil_thumb_popravljen
tmk 2010-10-02 11:51:42 +09:00
parent df5b4ea7d9
commit 479af4bdcd
5 changed files with 57 additions and 46 deletions

View File

@ -41,7 +41,7 @@
# Target file name (without extension). # Target file name (without extension).
TARGET = mykey TARGET = tmk
# List C source files here. (C dependencies are automatically generated.) # List C source files here. (C dependencies are automatically generated.)

79
README
View File

@ -1,40 +1,29 @@
Keyboard Firmware t.m.k. Keyboard Firmware
================= ========================
2010/08/23 noname 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 VERSION
------- -------
0.1 2010/08/23 0.1 2010/08/23
implemented for macway modified. It works as normal keyboard.
It works as normal keyboard now. It is for modified Macway keyboard(TP-999KB-E).
1.0 2010/10/02
TODO keyboard has mouse key now.
---- keyboard with layers.(see keymap.c)
modulization FN_1(right cmd):
clean source vi style layer
debouncing FN_2(next to right shift):
will be coded when bouncing occurs. HHKB style layer
bouncing doesnt occur on my alps switch so far. FN_3(left bottom):
scan rate is too slow?(to be measure) h j k l: mouse move
anti-ghost a s d spc: mouse buttons
2010/09/13 done m ,: mouse wheel
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
target board target board
@ -43,10 +32,11 @@ Teensy 2.0
http://www.pjrc.com/teensy http://www.pjrc.com/teensy
projects based on/related to projects related
---------------------------- ----------------
PJRC USB Keyboard Example PJRC USB Keyboard/Mouse Example
http://www.pjrc.com/teensy/usb_keyboard.html http://www.pjrc.com/teensy/usb_keyboard.html
http://www.pjrc.com/teensy/usb_mouse.html
kbupgrade kbupgrade
http://github.com/rhomann/kbupgrade http://github.com/rhomann/kbupgrade
http://geekhack.org/showwiki.php?title=Island:8406 http://geekhack.org/showwiki.php?title=Island:8406
@ -65,4 +55,25 @@ ps2avr
http://sourceforge.net/projects/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 EOF

View File

@ -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_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_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_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_1, KB_C, KB_DOWN }, { 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_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_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_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 } { 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_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 }, { 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_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 } { 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_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 }, { 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_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 } { 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_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 }, { 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 row = 0; row < MATRIX_ROWS; row++) {
for (int col = 0; col < MATRIX_ROWS; col++) { for (int col = 0; col < MATRIX_ROWS; col++) {
if (matrix[row] & 1<<col) continue; 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 = 1;
if (get_keycode(0, row, col) == FN_1) layer = 2; if (get_keycode(0, row, col) == FN_2) layer = 2;
if (get_keycode(0, row, col) == FN_2) layer = 3; if (get_keycode(0, row, col) == FN_3) layer = 3;
} }
} }
current_layer = layer; current_layer = layer;

View File

View File

@ -262,10 +262,10 @@ enum keycodes {
KB_RGUI, /* 0x80 */ KB_RGUI, /* 0x80 */
/* extensions for internal use */ /* extensions for internal use */
FN_0 = 0xE8, FN_1 = 0xE8,
FN_1,
FN_2, FN_2,
FN_3, FN_3,
FN_4,
MS_UP = 0xF0, MS_UP = 0xF0,
MS_DOWN, MS_DOWN,
MS_LEFT, MS_LEFT,