Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds keyboard ergodox_extended #23340

Open
wants to merge 42 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
d1505e1
Somewhat working
Gephorian Mar 10, 2024
8cdf49f
Renames
Gephorian Mar 10, 2024
3df97c0
Remap keys
Gephorian Mar 10, 2024
380339d
Right side mostly working
Gephorian Mar 10, 2024
05303c0
Right side completely working
Gephorian Mar 10, 2024
ce459d9
Progress on the left side
Gephorian Mar 10, 2024
1d34dad
Iteration
Gephorian Mar 24, 2024
7e63733
Put stuff all in one place
Gephorian Mar 24, 2024
02942e7
Partially working, reversed diodes
Gephorian Mar 24, 2024
9aabeea
Working with default keyset
Gephorian Mar 24, 2024
b1d816c
Fix a key
Gephorian Mar 24, 2024
9dc6924
Update license header
Gephorian Mar 24, 2024
01fe827
Update readme
Gephorian Mar 24, 2024
569c399
Add license header to ergodox_extended.c
Gephorian Mar 24, 2024
24b1ca8
Add to ergodox community layouts
Gephorian Mar 25, 2024
7ddc137
Move user settings into "features"
Gephorian Mar 25, 2024
6b67e32
Move user settings into "features"
Gephorian Mar 25, 2024
1a215f3
Add Gephorian keymap to satisfy the linter
Gephorian Mar 24, 2024
9aaa322
Add default_ergodox keymap
Gephorian Mar 25, 2024
206faa6
Remove user layout and stacked layout
Gephorian Mar 25, 2024
0f4e5fd
Un-stack the keymap
Gephorian Mar 25, 2024
bfc6dec
Format info.json
Gephorian Mar 25, 2024
8d76091
Remove ROW_SHIFTER
Gephorian Mar 25, 2024
e36c184
Prettify layout
Gephorian Mar 25, 2024
ba25ee5
Compiles but doesnt work
Gephorian Mar 25, 2024
b408990
Remove ROW2COL option, hardware does not work that way
Gephorian Mar 26, 2024
309ffcc
Merge branch 'ergodox-extended' into ergodox-extended-lite-firmware
Gephorian Mar 26, 2024
54e5212
Reading keys
Gephorian Mar 26, 2024
95c4de8
Disable debounce
Gephorian Mar 26, 2024
21cdc25
Set debounce to 0 (disabled)
Gephorian Mar 26, 2024
288493f
Remove debounce, handled by lite
Gephorian Mar 26, 2024
c29cfb9
Match keymap.c comments to keymap
Gephorian Mar 26, 2024
d00521a
Cleanup
Gephorian Mar 26, 2024
413f4c1
More cleanup
Gephorian Mar 26, 2024
7600b9c
print -> dprint
Gephorian Mar 27, 2024
f563fdd
Cleanup: i2c, pin_t
Gephorian Mar 27, 2024
1e21b87
Use library functions for pin setting/getting
Gephorian Mar 27, 2024
7b4825e
Fix includes in matrix.c
Gephorian Mar 27, 2024
3abe70c
Cleanup
Gephorian Mar 27, 2024
d11c668
Fixed...
Gephorian Mar 27, 2024
51a597f
Remove SWAP_HANDS config
Gephorian Mar 27, 2024
4282a3d
Remove empty file
Gephorian Mar 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
53 changes: 53 additions & 0 deletions keyboards/ergodox_extended/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
Copyright 2017 Erin Call <hello@erincall.com>
Copyright 2020 Marcus Young <myoung34@my.apsu.edu>
Copyright 2024 Adam Coleman <gephorian@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

/* Matrix config */
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
#define COL_EXPANDED { true, true, true, true, true, true, true, false, false, false, false, false, false, false }
#define MATRIX_ONBOARD_ROW_PINS { F0, F1, F4, F5, F6, F7, D7 }
#define MATRIX_ONBOARD_COL_PINS { 0, 0, 0, 0, 0, 0, 0, B0, B1, B2, B3, D2, D3, C6 }
#define EXPANDER_COL_REGISTER GPIOB
#define EXPANDER_ROW_REGISTER GPIOA
#define MATRIX_EXPANDER_COL_PINS {0, 1, 2, 3, 4, 5, 6}
#define MATRIX_EXPANDER_ROW_PINS {0, 1, 2, 3, 4, 5, 6}

/* I2C config */
#define I2C_TIMEOUT 100
#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
#define GPPUB 0x0D
#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT)
#define GPIOB 0x13

/* key combination for command */
#define IS_COMMAND() ( \
get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
)

/* fix space cadet rollover issue */
#define DISABLE_SPACE_CADET_ROLLOVER
32 changes: 32 additions & 0 deletions keyboards/ergodox_extended/ergodox_extended.c
Gephorian marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
Copyright 2020 Marcus Young <myoung34@my.apsu.edu>
Copyright 2024 Adam Coleman <gephorian@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "quantum.h"

#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
// swap-hands action needs a matrix to define the swap
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{0,11}, {0,10}, {0,9}, {0,8}, {0,7}, {0,6}, {0,5}, {0,4}, {0,3}, {0,2}, {0,1}, {0,0}},
{{1,11}, {1,11}, {1,9}, {1,8}, {1,7}, {1,6}, {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {1,0}},
{{2,11}, {2,12}, {2,9}, {2,8}, {2,7}, {2,6}, {2,5}, {2,4}, {2,3}, {2,2}, {2,1}, {2,0}},
{{3,11}, {3,13}, {3,9}, {3,8}, {3,7}, {3,6}, {3,5}, {3,4}, {3,3}, {3,2}, {3,1}, {3,0}},
{{4,11}, {4,14}, {4,9}, {4,8}, {4,7}, {4,6}, {4,5}, {4,4}, {4,3}, {4,2}, {4,1}, {4,0}},
{{5,11}, {5,15}, {5,9}, {5,8}, {5,7}, {5,6}, {5,5}, {5,4}, {5,3}, {5,2}, {5,1}, {5,0}},
};
#endif
123 changes: 123 additions & 0 deletions keyboards/ergodox_extended/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{
"manufacturer": "Gephorian",
"keyboard_name": "ergodox_extended",
"maintainer": "Gephorian",
"bootloader": "atmel-dfu",
"features": {
Gephorian marked this conversation as resolved.
Show resolved Hide resolved
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"processor": "atmega32u4",
"url": "https://github.com/Gephorian/ergodox-extended",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
Gephorian marked this conversation as resolved.
Show resolved Hide resolved
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0.5, "y": 0.35},
{"matrix": [0, 1], "x": 1.5, "y": 0.35},
{"matrix": [0, 2], "x": 2.5, "y": 0.2},
{"matrix": [0, 3], "x": 3.5, "y": 0},
{"matrix": [0, 4], "x": 4.5, "y": 0},
{"matrix": [0, 5], "x": 5.5, "y": 0.2},
{"matrix": [0, 6], "x": 6.5, "y": 0.2},
{"matrix": [0, 7], "x": 11.5, "y": 0.2},
{"matrix": [0, 8], "x": 12.5, "y": 0.2},
{"matrix": [0, 9], "x": 13.5, "y": 0},
{"matrix": [0, 10], "x": 14.5, "y": 0},
{"matrix": [0, 11], "x": 15.5, "y": 0.2},
{"matrix": [0, 12], "x": 16.5, "y": 0.35},
{"matrix": [0, 13], "x": 17.5, "y": 0.35},
{"matrix": [1, 0], "x": 0, "y": 1.35, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1.35},
{"matrix": [1, 2], "x": 2.5, "y": 1.2},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1.2},
{"matrix": [1, 6], "x": 6.5, "y": 1.2},
{"matrix": [1, 7], "x": 11.5, "y": 1.2},
{"matrix": [1, 8], "x": 12.5, "y": 1.2},
{"matrix": [1, 9], "x": 13.5, "y": 1},
{"matrix": [1, 10], "x": 14.5, "y": 1},
{"matrix": [1, 11], "x": 15.5, "y": 1.2},
{"matrix": [1, 12], "x": 16.5, "y": 1.35},
{"matrix": [1, 13], "x": 17.5, "y": 1.35, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.35, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.35},
{"matrix": [2, 2], "x": 2.5, "y": 2.2},
{"matrix": [2, 3], "x": 3.5, "y": 2},
{"matrix": [2, 4], "x": 4.5, "y": 2},
{"matrix": [2, 5], "x": 5.5, "y": 2.2},
{"matrix": [2, 6], "x": 6.5, "y": 2.2, "h": 1.5},
{"matrix": [2, 7], "x": 11.5, "y": 2.2, "h": 1.5},
{"matrix": [2, 8], "x": 12.5, "y": 2.2},
{"matrix": [2, 9], "x": 13.5, "y": 2},
{"matrix": [2, 10], "x": 14.5, "y": 2},
{"matrix": [2, 11], "x": 15.5, "y": 2.2},
{"matrix": [2, 12], "x": 16.5, "y": 2.35},
{"matrix": [2, 13], "x": 17.5, "y": 2.35, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 3.35, "w": 1.5},
{"matrix": [3, 1], "x": 1.5, "y": 3.35},
{"matrix": [3, 2], "x": 2.5, "y": 3.2},
{"matrix": [3, 3], "x": 3.5, "y": 3},
{"matrix": [3, 4], "x": 4.5, "y": 3},
{"matrix": [3, 5], "x": 5.5, "y": 3.2},
{"matrix": [3, 6], "x": 6.5, "y": 3.7, "h": 1.5},
{"matrix": [3, 7], "x": 11.5, "y": 3.7, "h": 1.5},
{"matrix": [3, 8], "x": 12.5, "y": 3.2},
{"matrix": [3, 9], "x": 13.5, "y": 3},
{"matrix": [3, 10], "x": 14.5, "y": 3},
{"matrix": [3, 11], "x": 15.5, "y": 3.2},
{"matrix": [3, 12], "x": 16.5, "y": 3.35},
{"matrix": [3, 13], "x": 17.5, "y": 3.35, "w": 1.5},
{"matrix": [4, 0], "x": 0, "y": 4.35, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4.35},
{"matrix": [4, 2], "x": 2.5, "y": 4.2},
{"matrix": [4, 3], "x": 3.5, "y": 4},
{"matrix": [4, 4], "x": 4.5, "y": 4},
{"matrix": [4, 5], "x": 5.5, "y": 4.2},
{"matrix": [4, 8], "x": 12.5, "y": 4.2},
{"matrix": [4, 9], "x": 13.5, "y": 4},
{"matrix": [4, 10], "x": 14.5, "y": 4},
{"matrix": [4, 11], "x": 15.5, "y": 4.2},
{"matrix": [4, 12], "x": 16.5, "y": 4.35},
{"matrix": [4, 13], "x": 17.5, "y": 4.35, "w": 1.5},
{"matrix": [5, 0], "x": 0.5, "y": 5.35},
{"matrix": [5, 1], "x": 1.5, "y": 5.35},
{"matrix": [5, 2], "x": 2.5, "y": 5.2},
{"matrix": [5, 3], "x": 3.5, "y": 5},
{"matrix": [5, 4], "x": 4.5, "y": 5},
{"matrix": [5, 9], "x": 13.5, "y": 5},
{"matrix": [5, 10], "x": 14.5, "y": 5},
{"matrix": [5, 11], "x": 15.5, "y": 5.2},
{"matrix": [5, 12], "x": 16.5, "y": 5.35},
{"matrix": [5, 13], "x": 17.5, "y": 5.35},
{"matrix": [4, 6], "x": 6, "y": 5.5},
{"matrix": [6, 6], "x": 7, "y": 5.5},
{"matrix": [6, 5], "x": 8, "y": 5.5},
{"matrix": [6, 8], "x": 10, "y": 5.5},
{"matrix": [6, 7], "x": 11, "y": 5.5},
{"matrix": [4, 7], "x": 12, "y": 5.5},
{"matrix": [5, 5], "x": 5, "y": 6.5, "h": 2},
{"matrix": [5, 6], "x": 6, "y": 6.5},
{"matrix": [6, 4], "x": 7, "y": 6.5},
{"matrix": [6, 3], "x": 8, "y": 6.5},
{"matrix": [6, 10], "x": 10, "y": 6.5},
{"matrix": [6, 9], "x": 11, "y": 6.5},
{"matrix": [5, 7], "x": 12, "y": 6.5},
{"matrix": [5, 8], "x": 13, "y": 6.5, "h": 2},
{"matrix": [6, 2], "x": 6, "y": 7.5},
{"matrix": [6, 1], "x": 7, "y": 7.5},
{"matrix": [6, 0], "x": 8, "y": 7.5},
{"matrix": [6, 13], "x": 10, "y": 7.5},
{"matrix": [6, 12], "x": 11, "y": 7.5},
{"matrix": [6, 11], "x": 12, "y": 7.5}
]
}
}
}
37 changes: 37 additions & 0 deletions keyboards/ergodox_extended/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright 2024 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌──────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬──────┐
* │ Esc │F1 │F2 │F3 │F4 │F5 │F6 │ │F7 │F8 │F9 │F10│F11│F12│ F13 │
* ├──────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼──────┤
* │ `~ │ 1 │ 2 │ 3 │ 4 │ 5 │ - │ │ = │ 6 │ 7 │ 8 │ 9 │ 0 │ Bsp │
* ├──────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼──────┤
* │ Tab │ Q │ W │ E │ R │ T │Bsp│ │Bsp│ Y │ U │ I │ O │ P │ \ │
* ├──────┼───┼───┼───┼───┼───┤ │ │ ├───┼───┼───┼───┼───┼──────┤
* │Escape│ A │ S │ D │ F │ G ├───┤ ├───┤ H │ J │ K │ L │ ; │ Enter│
* ├──────┼───┼───┼───┼───┼───┤ │ │ ├───┼───┼───┼───┼───┼──────┤
* │Shift │ Z │ X │ C │ V │ B │Ent│ │Del│ N │ M │ , │ . │ / │ Shift│
* └──┬───┼───┼───┼───┼───┼───┴───┘ ┌───┬───┬───┐ ┌───┬───┬───┐ └───┴───┼───┼───┼───┼───┼───┬──┘
* │Ctl│Gui│Alt│ │Alt│ │Hom│Del│PgU│ │Pgu│Ins│Pau│ │ " │ [ │ ] │Gui│Ctl│
* └───┴───┴───┴───┴───┘ ┌───┼───┼───┼───┤ ├───┼───┼───┼───┐ └───┴───┴───┴───┴───┘
* │ │End│ ↑ │PgD│ │PgD│ ↑ │Prt│ │
* │Bsp├───┼───┼───┤ ├───┼───┼───┤Ent│
* │ │ ← │ ↓ │ → │ │ ← │ ↓ │ → │ │
* └───┴───┴───┴───┘ └───┴───┴───┴───┘
*/
[0] = LAYOUT(
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_F13,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
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_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_LALT, KC_QUOT, KC_LBRC, KC_RBRC, KC_RGUI, KC_RCTL,
KC_HOME, KC_DEL, KC_PGUP, KC_PGUP, KC_INS, KC_PAUS,
KC_SPC, KC_END, KC_UP, KC_PGDN, KC_PGDN, KC_UP, KC_PSCR, KC_SPC,
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
)
};