Browse Source

version 1.0.

tags/v1.9
tmk 13 years ago
parent
commit
479af4bdcd
5 changed files with 57 additions and 46 deletions
  1. 1
    1
      Makefile
  2. 45
    34
      README
  3. 9
    9
      keymap.c
  4. 0
    0
      tmk.c
  5. 2
    2
      usb_keycodes.h

+ 1
- 1
Makefile View File





# 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.)

+ 45
- 34
README View File

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 VERSION
------- -------
0.1 2010/08/23 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 target board
http://www.pjrc.com/teensy 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_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
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

+ 9
- 9
keymap.c View File

{ {
{ 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_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_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 },
{ 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 },
{ 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 },
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 = 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; current_layer = layer;

mykey.c → tmk.c View File


+ 2
- 2
usb_keycodes.h View File

KB_RGUI, /* 0x80 */ KB_RGUI, /* 0x80 */


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

Loading…
Cancel
Save