Skip to content

Instantly share code, notes, and snippets.

@penk
Last active September 25, 2024 00:06
Show Gist options
  • Save penk/309847adc4c4a323ec03c1262fdc24b3 to your computer and use it in GitHub Desktop.
Save penk/309847adc4c4a323ec03c1262fdc24b3 to your computer and use it in GitHub Desktop.
QMK firmware for Toshiba T1200
{
"keyboard_name": "toshiba_t1200",
"manufacturer": "Toshiba",
"url": "",
"maintainer": "penk",
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "1.0"
},
"processor": "RP2040",
"bootloader": "rp2040",
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "label":"F1", "x":0, "y":0}, {"matrix": [0, 1], "label":"Num Lock", "x":1, "y":0}, {"matrix": [0, 2], "label":"F3", "x":2, "y":0}, {"matrix": [0, 3], "label":"PgDn", "x":3, "y":0}, {"matrix": [0, 4], "label":"F5", "x":4, "y":0}, {"matrix": [0, 5], "label":"F7", "x":5, "y":0}, {"matrix": [0, 6], "label":"F9", "x":6, "y":0}, {"matrix": [0, 7], "label":"End", "x":7, "y":0},
{"matrix": [1, 0], "label":"F2", "x":0, "y":1}, {"matrix": [1, 1], "label":"Scroll Lock", "x":1, "y":1}, {"matrix": [1, 2], "label":"F4", "x":2, "y":1}, {"matrix": [1, 3], "label":"PgUp", "x":3, "y":1}, {"matrix": [1, 4], "label":"F6", "x":4, "y":1}, {"matrix": [1, 5], "label":"F8", "x":5, "y":1}, {"matrix": [1, 6], "label":"F10", "x":6, "y":1}, {"matrix": [1, 7], "label":"Alt", "x":7, "y":1},
{"matrix": [2, 0], "label":"Esc", "x":0, "y":2}, {"matrix": [2, 1], "label":"1", "x":1, "y":2}, {"matrix": [2, 2], "label":"Tab", "x":2, "y":2}, {"matrix": [2, 3], "label":"Q", "x":3, "y":2}, {"matrix": [2, 4], "label":"A", "x":4, "y":2}, {"matrix": [2, 5], "label":"Ctrl", "x":5, "y":2}, {"matrix": [2, 6], "label":"Shift", "x":6, "y":2}, {"matrix": [2, 7], "label":"\\", "x":7, "y":2},
{"matrix": [3, 0], "label":"2", "x":0, "y":3}, {"matrix": [3, 1], "label":"3", "x":1, "y":3}, {"matrix": [3, 2], "label":"W", "x":2, "y":3}, {"matrix": [3, 3], "label":"E", "x":3, "y":3}, {"matrix": [3, 4], "label":"S", "x":4, "y":3}, {"matrix": [3, 5], "label":"D", "x":5, "y":3}, {"matrix": [3, 6], "label":"Z", "x":6, "y":3}, {"matrix": [3, 7], "label":"X", "x":7, "y":3},
{"matrix": [4, 0], "label":"4", "x":0, "y":4}, {"matrix": [4, 1], "label":"5", "x":1, "y":4}, {"matrix": [4, 2], "label":"R", "x":2, "y":4}, {"matrix": [4, 3], "label":"T", "x":3, "y":4}, {"matrix": [4, 4], "label":"F", "x":4, "y":4}, {"matrix": [4, 5], "label":"G", "x":5, "y":4}, {"matrix": [4, 6], "label":"V", "x":6, "y":4}, {"matrix": [4, 7], "label":"C", "x":7, "y":4},
{"matrix": [5, 0], "label":"6", "x":0, "y":5}, {"matrix": [5, 1], "label":"7", "x":1, "y":5}, {"matrix": [5, 2], "label":"Y", "x":2, "y":5}, {"matrix": [5, 3], "label":"U", "x":3, "y":5}, {"matrix": [5, 4], "label":"H", "x":4, "y":5}, {"matrix": [5, 5], "label":"B", "x":5, "y":5}, {"matrix": [5, 6], "label":"N", "x":6, "y":5}, {"matrix": [5, 7], "label":"Space", "x":7, "y":5},
{"matrix": [6, 0], "label":"8", "x":0, "y":6}, {"matrix": [6, 1], "label":"9", "x":1, "y":6}, {"matrix": [6, 2], "label":"I", "x":2, "y":6}, {"matrix": [6, 3], "label":"O", "x":3, "y":6}, {"matrix": [6, 4], "label":"J", "x":4, "y":6}, {"matrix": [6, 5], "label":"K", "x":5, "y":6}, {"matrix": [6, 6], "label":",", "x":6, "y":6}, {"matrix": [6, 7], "label":"M", "x":7, "y":6},
{"matrix": [7, 0], "label":"0", "x":0, "y":7}, {"matrix": [7, 1], "label":"-", "x":1, "y":7}, {"matrix": [7, 2], "label":"P", "x":2, "y":7}, {"matrix": [7, 3], "label":"Left", "x":3, "y":7}, {"matrix": [7, 4], "label":"L", "x":4, "y":7}, {"matrix": [7, 5], "label":";", "x":5, "y":7}, {"matrix": [7, 6], "label":".", "x":6, "y":7}, {"matrix": [7, 7], "label":"Delete", "x":7, "y":7},
{"matrix": [8, 0], "label":"=", "x":0, "y":8}, {"matrix": [8, 1], "label":"Up", "x":1, "y":8}, {"matrix": [8, 2], "label":"[", "x":2, "y":8}, {"matrix": [8, 3], "label":"]", "x":3, "y":8}, {"matrix": [8, 4], "label":"Right", "x":4, "y":8}, {"matrix": [8, 5], "label":"'", "x":5, "y":8}, {"matrix": [8, 6], "label":"/", "x":6, "y":8}, {"matrix": [8, 7], "label":"Caps Lock", "x":7, "y":8},
{"matrix": [9, 0], "label":"Backspace", "x":0, "y":9}, {"matrix": [9, 1], "label":"Down", "x":1, "y":9}, {"matrix": [9, 2], "label":"Home", "x":2, "y":9}, {"matrix": [9, 3], "label":"Enter", "x":3, "y":9}, {"matrix": [9, 4], "label":"`", "x":4, "y":9}, {"matrix": [9, 5], "label":"Right Shift", "x":5, "y":9}, {"matrix": [9, 6], "label":"Print Screen", "x":6, "y":9}, {"matrix": [9, 7], "label":"Insert", "x":7, "y":9},
{"matrix": [10, 0], "label":"GUI", "x":0, "y":10}, {"matrix": [10, 1], "label":"Fn", "x":1, "y":10}
]
}
},
"matrix_pins": {
"rows": ["GP0", "GP9", "GP1", "GP2", "GP10", "GP3", "GP11", "GP12", "GP5", "GP29", "GP6"],
"cols": ["GP28", "GP7", "GP27", "GP8", "GP4", "GP15", "GP14", "GP13"]
},
"diode_direction": "COL2ROW"
}
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_F1, KC_LNUM, KC_F3, KC_PGDN, KC_F5, KC_F7, KC_F9, KC_END,
KC_F2, KC_LSCR, KC_F4, KC_PGUP, KC_F6, KC_F8, KC_F10, KC_LALT,
KC_ESC, KC_1, KC_TAB, KC_Q, KC_A, KC_LCTL, KC_LSFT, KC_BSLS,
KC_2, KC_3, KC_W, KC_E, KC_S, KC_D, KC_Z, KC_X,
KC_4, KC_5, KC_R, KC_T, KC_F, KC_G, KC_V, KC_C,
KC_6, KC_7, KC_Y, KC_U, KC_H, KC_B, KC_N, KC_SPC,
KC_8, KC_9, KC_I, KC_O, KC_J, KC_K, KC_COMM, KC_M,
KC_0, KC_MINS, KC_P, KC_LEFT, KC_L, KC_SCLN, KC_DOT, KC_DEL,
KC_EQL, KC_UP, KC_LBRC, KC_RBRC, KC_RGHT, KC_QUOT, KC_SLSH, KC_CAPS,
KC_BSPC, KC_DOWN, KC_HOME, KC_ENT, KC_GRV, KC_RSFT, KC_PSCR, KC_INS,
MO(_FN), KC_LGUI
),
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______
)
};
@penk
Copy link
Author

penk commented Aug 13, 2024

IMG_7052

I used @thedalles77's awesome T4p1_thruhole PCB and a 22-pin 1.25mm pitch FFC connector. Too impatient to wait for the Teensy 4.1 order to arrive, I used that board as a breakout, slapped on an RP2040 Zero, and translated the Arduino code to QMK firmware.

Here's how I connected the RP2040 Zero:

0     1     2     3     4     5     6     7     8     9      10      11
GP9   x     GP10  GP11  GP12  GP29  GP28  GP27  x     GP15   GP14    GP13

23    22    21    20    19    18    17    16    15    14
GP0   GP1   GP2   GP3   x     GP5   GP6   GP7   GP8   GP4 

And matrix_pins looks like this:

{
    "rows": ["GP0", "GP9", "GP1", "GP2", "GP10", "GP3", "GP11", "GP12", "GP5", "GP29", "GP6"],
    "cols": ["GP28", "GP7", "GP27", "GP8", "GP4", "GP15", "GP14", "GP13"]
}

@thedalles77
Copy link

That's a good looking cat, and the keyboard's nice too!
Great job getting it working with the RP2040 and QMK. I'm still trying to figure them both out.
Cheers
Frank

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment