From a8c230743ae3a5721b291558e6fa0e4aac2bc564 Mon Sep 17 00:00:00 2001 From: Pierre Chevalier Date: Sat, 18 Jul 2020 04:57:33 +0100 Subject: Write firmware for the Ferris keyboard (#9634) * Write firmware for the Ferris keyboard Took inspiration from the gergoplex and the ergodox_ez firmware for the split matrix with io_expander on the right hand. Cleaned up a lot of bit fiddling on the mcu side by taking inspiration from the `split_custom` in quantum. Still bit fiddling on the mcp side as it is particularly natural to do so with the abstractions provided by the i2c protocol. Would be good to clean that up and abstract away the wiring from the generic i2c code in a similar fashion as quantum and the mcp side behave. One improvement over the ergodox_ez and the gergoplex firmwares is that the wiring is straight forward as opposed to swapping rows and columns in two different places that end up cancelling out for some reason. At this stage, I have flashed this firmware to a board and have verified that all keys are behaving as intended by shorting pins. I still have to solder in some switches and test that everything works correctly at normal typing speeds, but I don't expect any major issues given I'm building up on previous effort, including the debouncing code from the ergodox_ez. * Remove rotation from info.json and label the keys as per default keymap * Comply with minor review feedback points * Use CUSTOM_MATRIX=lite to remove boilerplate * Update keyboards/handwired/ferris/info.json Didn't play nicely in the configurator Co-authored-by: Ryan * Remove MIDI_ENABLE from rules.mk Co-authored-by: Ryan * Remove FAUXCLICKY_ENABLE from rules.mk Co-authored-by: Ryan * Prefer wait_ms over _delay_ms Co-authored-by: Ryan * Remove unused include Co-authored-by: Ryan * Remove unused include Co-authored-by: Ryan * Remove unused include Co-authored-by: Ryan * Remove unused includeh Co-authored-by: Ryan * Use dprint over print and remove include for print.h * Remove all unused includes * Remove unused code * Cleanups thanks to code review * Move more personal settings from the ferris config to the default keymap config These setting happen to be unused in the default keymap at the moment, as it has only one layer with no homerow modifiers and no mouse key; but I would like to keep it there for two reasons: * It can serve as an example to people creating their own keymap * I plan to design a more usable default keymap that uses these features once this PR which adds the Ferris keyboard is merged. * Consolidate mcp logic inside matrix.c Co-authored-by: Ryan --- .../handwired/ferris/keymaps/default/keymap.c | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 keyboards/handwired/ferris/keymaps/default/keymap.c (limited to 'keyboards/handwired/ferris/keymaps/default/keymap.c') diff --git a/keyboards/handwired/ferris/keymaps/default/keymap.c b/keyboards/handwired/ferris/keymaps/default/keymap.c new file mode 100644 index 0000000000..faf5203e7d --- /dev/null +++ b/keyboards/handwired/ferris/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 Pierre Chevalier + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Blank template at the bottom +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Qwerty + * + * ,-----------------------------. ,-----------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |-----+-----+-----+-----+-----| |-----------------------------| + * | A | S | D | F | G | | H | J | K | L | ; | + * |-----+-----+-----+-----+-----+ |-----------------------------| + * | Z | X | C | V | B | | N | M | < | > | ? | + * `-----+-----+-----+-----+-----+--. ,-+-----------------------------' + * | BSPC | SPC | | SPC | ENT | + * '------------' '-----------' + */ +[0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_BSPC, KC_SPC, KC_SPC, KC_ENT) +}; -- cgit v1.2.3