Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions hackpads/rowanpad/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Rowanpad

# BOM:
- 4x Cherry MX switches
- 1x Analog Thumb Joystick
- 1x 0.96" SSD1306 OLED Display
- 4x Through-hole 1N4148 Diodes
- 4x M2 Heat Set Inserts
- 4x M2X5 Screws
- 4x M3 Heat Set Inserts
- 4x M3X12 Screws
1 change: 1 addition & 0 deletions hackpads/rowanpad/cad/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
![CAD Screenshot](Screenshot_20241016_180008.png "Rowanpad")
134,093 changes: 134,093 additions & 0 deletions hackpads/rowanpad/cad/Rowanpad.step

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions hackpads/rowanpad/firmware/QMK/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright 2024 Rowan (@GearBoxFox)
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/

/* disable debug print */
//#define NO_DEBUG

/* disable print */
//#define NO_PRINT

/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

// define joystick input
#define JOYSTICK_BUTTON_COUNT 1
#define JOYSTICK_AXIS_COUNT 2
#define JOYSTICK_RESOLUTION 10
36 changes: 36 additions & 0 deletions hackpads/rowanpad/firmware/QMK/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"manufacturer": "Rowan",
"keyboard_name": "rowanpad",
"maintainer": "GearBoxFox",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["GP2", "GP4"],
"rows": ["GP26", "GP27"]
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [1, 0], "x": 2, "y": 0},
{"matrix": [1, 1 ], "x": 3, "y": 0}
]
}
}
}
60 changes: 60 additions & 0 deletions hackpads/rowanpad/firmware/QMK/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

enum layers {
_BASE = 0,
_ARROWS,
_MEDIA
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/**
* -----------
* |
* -----------
*/
[_BASE] = LAYOUT_ortho_4x4(
KC_P7, KC_P8, KC_P4, KC_P5
),

[_ARROWS] = LAYOUT_ortho_4x4(
KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT
),

[_MEDIA] = LAYOUT_ortho_4x4(
KC_VOLU, KC_VOLD, KC_MPLY, KC_MSTP
)
};

// Joystick input setup
joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = {
JOYSTICK_AXIS_IN(GP1, 127, 0, -127),
JOYSTICK_AXIS_IN(GP29 , 127, 0, -127),
};

// OLED Driver
#ifdef OLED_ENABLE
bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);

switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("Default\n"), false);
break;
case _ARROWS:
oled_write_P(PSTR("Arrow Keys\n"), false);
break;
case _MEDIA:
oled_write_P(PSTR("Media\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}

return false;
}
#endif
27 changes: 27 additions & 0 deletions hackpads/rowanpad/firmware/QMK/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# rowanpad

![rowanpad](imgur.com image replace me!)

*A short description of the keyboard/project*

* Keyboard Maintainer: [Rowan](https://github.com/GearBoxFox)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*

Make example for this keyboard (after setting up your build environment):

make rowanpad:default

Flashing example for this keyboard:

make rowanpad:default:flash

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

## Bootloader

Enter the bootloader in 3 ways:

* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
4 changes: 4 additions & 0 deletions hackpads/rowanpad/firmware/QMK/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# This file intentionally left blank

OLED_ENABLE = yes
JOYSTICK_ENABLE = yes
48 changes: 48 additions & 0 deletions hackpads/rowanpad/pcb/assets/JOYSTICK.kicad_mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
(module JOYSTICK (layer F.Cu) (tedit 200000)
(attr virtual)
(fp_text reference >NAME (at -1.905 4.445) (layer B.SilkS)
(effects (font (size 1.27 1.27) (thickness 0.1016)))
)
(fp_text value >VALUE (at -1.27 5.715) (layer B.SilkS)
(effects (font (size 1.27 1.27) (thickness 0.1016)))
)
(fp_line (start 5.588 -13.97) (end -5.588 -13.97) (layer B.SilkS) (width 0.2032))
(fp_line (start 4.826 11.43) (end -4.826 11.43) (layer B.SilkS) (width 0.2032))
(fp_line (start 4.826 11.43) (end 4.826 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start -4.826 11.43) (end -4.826 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start 4.826 8.89) (end 7.62 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start -4.826 8.89) (end -7.62 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start 9.525 -4.064) (end 9.525 4.064) (layer B.SilkS) (width 0.2032))
(fp_line (start 7.62 -4.064) (end 7.62 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start 7.62 4.064) (end 7.62 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start 7.62 -4.064) (end 9.525 -4.064) (layer B.SilkS) (width 0.2032))
(fp_line (start 7.62 4.064) (end 9.525 4.064) (layer B.SilkS) (width 0.2032))
(fp_line (start 7.62 -6.985) (end 5.588 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start -5.588 -6.985) (end -7.62 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start 5.588 -13.97) (end 5.588 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start -5.588 -13.97) (end -5.588 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start -7.62 -4.826) (end -11.176 -4.826) (layer B.SilkS) (width 0.2032))
(fp_line (start -7.62 4.826) (end -11.176 4.826) (layer B.SilkS) (width 0.2032))
(fp_line (start -11.176 -4.826) (end -11.176 4.826) (layer B.SilkS) (width 0.2032))
(fp_line (start -7.62 -4.826) (end -7.62 -6.985) (layer B.SilkS) (width 0.2032))
(fp_line (start -7.62 4.826) (end -7.62 8.89) (layer B.SilkS) (width 0.2032))
(fp_line (start -1.905 -7.62) (end -0.635 -7.62) (layer F.SilkS) (width 0.2032))
(fp_line (start -0.635 -7.62) (end 0.635 -8.255) (layer F.SilkS) (width 0.2032))
(fp_line (start 0.635 -7.62) (end 1.905 -7.62) (layer F.SilkS) (width 0.2032))
(fp_circle (center 0 0) (end -0.3175 0.3175) (layer B.SilkS) (width 0.1016))
(fp_circle (center 0 0) (end -6.35 6.35) (layer F.SilkS) (width 0.1016))
(pad B1A thru_hole circle (at -3.175 -12.7) (size 1.778 1.778) (drill 0.89916) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad B1B thru_hole circle (at 3.175 -12.7) (size 1.778 1.778) (drill 0.89916) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad B2A thru_hole circle (at -3.175 -7.62) (size 1.778 1.778) (drill 0.89916) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad B2B thru_hole circle (at 3.175 -7.62) (size 1.778 1.778) (drill 0.89916) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad H1 thru_hole circle (at -2.54 10.16) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad H2 thru_hole circle (at 0 10.16) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad H3 thru_hole circle (at 2.54 10.16) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad MOUN thru_hole circle (at -7.62 -6.6675) (size 2.286 2.286) (drill 1.397) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad MOUN thru_hole circle (at -7.62 6.6675) (size 2.286 2.286) (drill 1.397) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad MOUN thru_hole circle (at 7.62 6.6675) (size 2.286 2.286) (drill 1.397) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad MOUN thru_hole circle (at 7.62 -6.6675) (size 2.286 2.286) (drill 1.397) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad V1 thru_hole circle (at -10.16 -2.54) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad V2 thru_hole circle (at -10.16 0) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
(pad V3 thru_hole circle (at -10.16 2.54) (size 1.778 1.778) (drill 0.889) (layers F&B.Cu F.Paste F.SilkS F.Mask))
)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading