diff options
author | Pierre Chevalier <pierrechevalier83@gmail.com> | 2020-07-18 04:57:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-18 13:57:33 +1000 |
commit | a8c230743ae3a5721b291558e6fa0e4aac2bc564 (patch) | |
tree | 51b32f85c5d444b5d62a1601ce5c5416f7342816 /keyboards/handwired/ferris/keymaps/default | |
parent | 3c84157d83ed18f6c31632a4728d6a0be5b68d59 (diff) |
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 <fauxpark@gmail.com>
* Remove MIDI_ENABLE from rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove FAUXCLICKY_ENABLE from rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Prefer wait_ms over _delay_ms
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused includeh
Co-authored-by: Ryan <fauxpark@gmail.com>
* 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 <fauxpark@gmail.com>
Diffstat (limited to 'keyboards/handwired/ferris/keymaps/default')
-rw-r--r-- | keyboards/handwired/ferris/keymaps/default/config.h | 39 | ||||
-rw-r--r-- | keyboards/handwired/ferris/keymaps/default/keymap.c | 39 |
2 files changed, 78 insertions, 0 deletions
diff --git a/keyboards/handwired/ferris/keymaps/default/config.h b/keyboards/handwired/ferris/keymaps/default/config.h new file mode 100644 index 0000000000..cf0fb7478e --- /dev/null +++ b/keyboards/handwired/ferris/keymaps/default/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2020 Pierre Chevalier <pierrechevalier83@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 +// Set the mouse settings to a comfortable speed/accuracy trade-off, +// assuming a screen refresh rate of 60 Htz or higher +// The default is 50. This makes the mouse ~3 times faster and more accurate +#define MOUSEKEY_INTERVAL 16 +// The default is 20. Since we made the mouse about 3 times faster with the previous setting, +// give it more time to accelerate to max speed to retain precise control over short distances. +#define MOUSEKEY_TIME_TO_MAX 40 +// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive +#define MOUSEKEY_DELAY 100 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 + +// Pick good defaults for enabling homerow modifiers +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD 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 <pierrechevalier83@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 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) +}; |