Skip to content

Commit d908501

Browse files
committed
Merge remote-tracking branch 'origin/master' into develop
2 parents acb2f34 + 5650894 commit d908501

File tree

7 files changed

+657
-0
lines changed

7 files changed

+657
-0
lines changed
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Model-B
2+
3+
A 75% keyboard based on the RP2040.
4+
5+
* Keyboard Maintainer: [Brian Hill](https://github.com/TrojanPinata)
6+
* Hardware Supported: [GitHub](https://github.com/TrojanPinata/Model-B)
7+
8+
## Revisions
9+
10+
At the current moment there is only one variant of the Model-B, the rev-0 (aka the prototype board). Any others are clones and may not have the exact firmware requirements.
11+
12+
## Building and Flashing
13+
14+
Make example for this keyboard (after setting up your build environment):
15+
16+
make trojan_pinata/model-b/rev0:default
17+
18+
Flashing example for this keyboard:
19+
20+
make trojan_pinata/model-b/rev0:default:flash
21+
22+
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
23+
24+
## Bootloader
25+
26+
Enter the bootloader in 3 ways:
27+
28+
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving.
29+
* **Physical reset button**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button.
30+
* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the Esc key.
31+
32+
After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2022 Stefan Kerkmann
2+
// SPDX-License-Identifier: GPL-2.0-or-later
3+
4+
#pragma once
5+
6+
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
7+
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
8+
9+
// settings for the oled keyboard demo with Adafruit 0.91" OLED display on the Stemma QT port
10+
#define I2C_DRIVER I2CD0
11+
#define I2C1_SDA_PIN GP0
12+
#define I2C1_SCL_PIN GP1
13+
14+
#define OLED_TIMEOUT 3000000 // 5 minutes before oled turns off
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
{
2+
"manufacturer": "Trojan_Pinata",
3+
"keyboard_name": "Model-B",
4+
"maintainer": "Trojan_Pinata",
5+
"bootloader": "rp2040",
6+
"diode_direction": "COL2ROW",
7+
"encoder": {
8+
"rotary": [
9+
{"pin_a": "GP27", "pin_b": "GP26"}
10+
]
11+
},
12+
"features": {
13+
"bootmagic": true,
14+
"command": false,
15+
"console": false,
16+
"extrakey": true,
17+
"mousekey": true,
18+
"nkro": true,
19+
"oled": true,
20+
"encoder": true
21+
},
22+
"matrix_pins": {
23+
"cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22"],
24+
"rows": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"]
25+
},
26+
"processor": "RP2040",
27+
"url": "https://github.com/TrojanPinata/Model-B",
28+
"usb": {
29+
"device_version": "1.0.0",
30+
"pid": "0xA500",
31+
"vid": "0xE739"
32+
},
33+
"layouts": {
34+
"LAYOUT": {
35+
"layout": [
36+
{"matrix": [0, 0], "x": 0, "y": 0},
37+
{"matrix": [0, 2], "x": 1.25, "y": 0},
38+
{"matrix": [0, 3], "x": 2.25, "y": 0},
39+
{"matrix": [0, 4], "x": 3.25, "y": 0},
40+
{"matrix": [0, 5], "x": 4.25, "y": 0},
41+
{"matrix": [0, 6], "x": 5.5, "y": 0},
42+
{"matrix": [0, 7], "x": 6.5, "y": 0},
43+
{"matrix": [0, 8], "x": 7.5, "y": 0},
44+
{"matrix": [0, 9], "x": 8.5, "y": 0},
45+
{"matrix": [0, 10], "x": 9.75, "y": 0},
46+
{"matrix": [0, 11], "x": 10.75, "y": 0},
47+
{"matrix": [0, 12], "x": 11.75, "y": 0},
48+
{"matrix": [0, 13], "x": 12.75, "y": 0},
49+
{"matrix": [0, 14], "x": 15.75, "y": 0},
50+
{"matrix": [1, 0], "x": 0, "y": 1.5},
51+
{"matrix": [1, 1], "x": 1, "y": 1.5},
52+
{"matrix": [1, 2], "x": 2, "y": 1.5},
53+
{"matrix": [1, 3], "x": 3, "y": 1.5},
54+
{"matrix": [1, 4], "x": 4, "y": 1.5},
55+
{"matrix": [1, 5], "x": 5, "y": 1.5},
56+
{"matrix": [1, 6], "x": 6, "y": 1.5},
57+
{"matrix": [1, 7], "x": 7, "y": 1.5},
58+
{"matrix": [1, 8], "x": 8, "y": 1.5},
59+
{"matrix": [1, 9], "x": 9, "y": 1.5},
60+
{"matrix": [1, 10], "x": 10, "y": 1.5},
61+
{"matrix": [1, 11], "x": 11, "y": 1.5},
62+
{"matrix": [1, 12], "x": 12, "y": 1.5},
63+
{"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
64+
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
65+
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
66+
{"matrix": [2, 1], "x": 1.5, "y": 2.5},
67+
{"matrix": [2, 2], "x": 2.5, "y": 2.5},
68+
{"matrix": [2, 3], "x": 3.5, "y": 2.5},
69+
{"matrix": [2, 4], "x": 4.5, "y": 2.5},
70+
{"matrix": [2, 5], "x": 5.5, "y": 2.5},
71+
{"matrix": [2, 6], "x": 6.5, "y": 2.5},
72+
{"matrix": [2, 7], "x": 7.5, "y": 2.5},
73+
{"matrix": [2, 8], "x": 8.5, "y": 2.5},
74+
{"matrix": [2, 9], "x": 9.5, "y": 2.5},
75+
{"matrix": [2, 10], "x": 10.5, "y": 2.5},
76+
{"matrix": [2, 11], "x": 11.5, "y": 2.5},
77+
{"matrix": [2, 12], "x": 12.5, "y": 2.5},
78+
{"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5},
79+
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
80+
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
81+
{"matrix": [3, 1], "x": 1.75, "y": 3.5},
82+
{"matrix": [3, 2], "x": 2.75, "y": 3.5},
83+
{"matrix": [3, 3], "x": 3.75, "y": 3.5},
84+
{"matrix": [3, 4], "x": 4.75, "y": 3.5},
85+
{"matrix": [3, 5], "x": 5.75, "y": 3.5},
86+
{"matrix": [3, 6], "x": 6.75, "y": 3.5},
87+
{"matrix": [3, 7], "x": 7.75, "y": 3.5},
88+
{"matrix": [3, 8], "x": 8.75, "y": 3.5},
89+
{"matrix": [3, 9], "x": 9.75, "y": 3.5},
90+
{"matrix": [3, 10], "x": 10.75, "y": 3.5},
91+
{"matrix": [3, 11], "x": 11.75, "y": 3.5},
92+
{"matrix": [3, 12], "x": 14, "y": 0},
93+
{"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
94+
{"matrix": [3, 14], "x": 16.25, "y": 1.5},
95+
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
96+
{"matrix": [4, 1], "x": 2.25, "y": 4.5},
97+
{"matrix": [4, 2], "x": 3.25, "y": 4.5},
98+
{"matrix": [4, 3], "x": 4.25, "y": 4.5},
99+
{"matrix": [4, 4], "x": 5.25, "y": 4.5},
100+
{"matrix": [4, 5], "x": 6.25, "y": 4.5},
101+
{"matrix": [4, 6], "x": 7.25, "y": 4.5},
102+
{"matrix": [4, 7], "x": 8.25, "y": 4.5},
103+
{"matrix": [4, 8], "x": 9.25, "y": 4.5},
104+
{"matrix": [4, 9], "x": 10.25, "y": 4.5},
105+
{"matrix": [4, 10], "x": 11.25, "y": 4.5},
106+
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
107+
{"matrix": [4, 13], "x": 14.3, "y": 4.6},
108+
{"matrix": [4, 14], "x": 16.25, "y": 2.5},
109+
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25},
110+
{"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25},
111+
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25},
112+
{"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25},
113+
{"matrix": [5, 9], "x": 10, "y": 5.5},
114+
{"matrix": [5, 10], "x": 11, "y": 5.5},
115+
{"matrix": [5, 11], "x": 12, "y": 5.5},
116+
{"matrix": [5, 12], "x": 13.3, "y": 5.6},
117+
{"matrix": [5, 13], "x": 14.3, "y": 5.6},
118+
{"matrix": [5, 14], "x": 15.3, "y": 5.6}
119+
]
120+
}
121+
}
122+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/* Copyright 2024 Brian H (@Trojan_Pinata)
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
17+
#include QMK_KEYBOARD_H
18+
19+
// keymaps
20+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21+
[0] = LAYOUT(
22+
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE,
23+
24+
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
25+
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
26+
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, QK_KB, KC_ENT, KC_HOME,
27+
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
28+
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
29+
),
30+
[1] = LAYOUT(
31+
QK_BOOT, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE,
32+
33+
EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
34+
DB_TOGG, _______, _______, KC_MYCM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV,
35+
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP,
36+
_______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT,
37+
_______, _______, _______, _______, _______, _______, _______, KC_EXEC, _______, _______
38+
)
39+
};
40+
41+
// encoder handling
42+
#if defined(ENCODER_MAP_ENABLE)
43+
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
44+
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
45+
[1] = { ENCODER_CCW_CW(_______, _______) },
46+
};
47+
#endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/* Copyright 2020 QMK
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
#pragma once
17+
18+
#include_next <mcuconf.h>
19+
20+
#undef RP_I2C_USE_I2C0
21+
#define RP_I2C_USE_I2C0 TRUE
22+
23+
#undef RP_I2C_USE_I2C1
24+
#define RP_I2C_USE_I2C1 TRUE

0 commit comments

Comments
 (0)