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

Ferris reorg #10564

Merged
merged 10 commits into from
Oct 17, 2020
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ 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 "ferris.h"
#include "0.1.h"
pierrechevalier83 marked this conversation as resolved.
Show resolved Hide resolved
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
39 changes: 39 additions & 0 deletions keyboards/ferris/keymaps/pierrec83/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
Copyright 2020 Pierre Chevalier <[email protected]>

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
118 changes: 118 additions & 0 deletions keyboards/ferris/keymaps/pierrec83/keymap.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{ "version": 1,
"notes": "My awesome keymap",
"documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
"keyboard": "handwired/ferris",
"keymap": "pierrec83",
"layout": "LAYOUT",
"layers": [
["KC_Q" , "KC_D" , "KC_R" , "KC_W" , "KC_B",
"KC_J" , "KC_F" , "KC_U" , "KC_P" , "KC_SCLN",

"LSFT_T(KC_A)" , "LT(6,KC_S)" , "LT(2,KC_H)" , "LT(4,KC_T)" , "KC_G",
"KC_Y" , "LT(5,KC_N)" , "LT(3,KC_E)" , "LT(7,KC_O)" , "LSFT_T(KC_I)",

"KC_Z" , "LCTL_T(KC_X)" , "LALT_T(KC_M)" , "KC_C" , "KC_V",
"KC_K" , "KC_L" , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)" , "KC_SLSH",

"LCA(KC_UP)" , "KC_BSPC",
"LT(8,KC_SPC)" , "LCA(KC_DOWN)"
],
["KC_Q" , "KC_C" , "KC_M" , "KC_Y" , "KC_COLN",
"KC_Z" , "KC_W" , "KC_COMM" , "KC_U" , "KC_J",

"LSFT_T(KC_R)" , "LT(6,KC_S)" , "LT(2,KC_T)" , "LT(4,KC_H)" , "KC_X",
"KC_TRNS" , "LT(5,KC_N)" , "LT(3,KC_A)" , "LT(7,KC_I)" , "LSFT_T(KC_O)",

"KC_B" , "LCTL_T(KC_F)" , "LALT_T(KC_G)" , "KC_D" , "KC_V",
"KC_ESC" , "KC_L" , "LALT_T(KC_DOT)" , "LCTL_T(KC_BSPC)" , "KC_K",

"LCA(KC_UP)" , "KC_E",
"LT(8,KC_SPC)" , "LCA(KC_DOWN)"
],
["KC_TRNS" , "ANY(LCTL(LSFT(KC_C)))", "KC_TRNS" , "ANY(LCTL(LSFT(KC_V)))", "KC_TRNS",
"KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS",

"KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS",
"KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R",

"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS",

"ANY(LCTL(LSFT(KC_TAB)))", "KC_TRNS",
"KC_TRNS" , "LCTL(KC_TAB)"
],
["KC_TRNS" , "KC_TRNS" , "KC_PGUP" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_LEFT" , "KC_UP" , "KC_DOWN" , "KC_RGHT" , "KC_TRNS",
"KC_TRNS" , "KC_LGUI" , "KC_NO" , "LCTL(KC_LALT)" , "LCA(KC_LSFT)",

"KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"LGUI(KC_LEFT)" , "KC_TRNS",
"KC_TRNS" , "LGUI(KC_RGHT)"
],
["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS",

"KC_CIRC" , "KC_ASTR" , "KC_AMPR" , "KC_NO" , "KC_TRNS",
"KC_HASH" , "KC_TILD" , "KC_SLSH" , "KC_DQUO" , "KC_DLR",

"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS",

"KC_BRID" , "KC_TRNS",
"KC_TRNS" , "KC_BRIU"
],
["KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_LCBR" , "KC_RCBR" , "KC_LPRN" , "KC_RPRN" , "KC_AT",
"KC_TRNS" , "KC_NO" , "KC_EQL" , "KC_PLUS" , "KC_PERC",

"KC_TRNS" , "KC_EXLM" , "KC_LBRC" , "KC_RBRC" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_VOLD" , "KC_TRNS",
"KC_TRNS" , "KC_VOLU"
],
["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10",

"KC_TRNS" , "KC_TRNS" , "LCTL(KC_LALT)" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F11",

"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F12",

"KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS"
],
["KC_PSLS" , "KC_7" , "KC_8" , "KC_9" , "KC_PPLS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_PMNS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO" , "KC_TRNS",

"KC_PAST" , "KC_4" , "KC_5" , "KC_6" , "KC_PEQL",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS"
],
["KC_TRNS" , "KC_ESC" , "KC_COLN" , "KC_TRNS" , "KC_TRNS",
"DF(2)" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_DEL",

"KC_TRNS" , "KC_PERC" , "KC_SLSH" , "KC_ENT" , "KC_EXLM",
"DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",

"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)" , "RESET",

"KC_TRNS" , "KC_TAB",
"KC_NO" , "KC_TRNS"
]
],
"author": "@pierrec83"
}
43 changes: 43 additions & 0 deletions keyboards/ferris/keymaps/pierrec83/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
@pierrec83's personal keymap for the Ferris keyboard
====================================================

This keymap shares many commonalities with the default keymap.
See its readme for a write-up on many of the decisions, including
how to generate the formatted json file with json2crab.py and the
general philosophy for each layer.

Because this is my own keymap, I didn't refrain from using shortcuts
that make sense for me and may not make sense for most.

Key differences from the default keymap include:

Alpha layers:
-------------

Because I only learned to touch type when I switched from qwerty to workman,
my base layer is workman and my layout doesn't contain a qwerty layer.

My layer 1 hosts a variant of RSTHD that I am developing, inspired from workman's
focus on reducing side-index-motion. It should become my end game keymap eventually,
but I still haven't found the time to learn it to a working proficiency.

Secondary thumbs:
-----------------

Instead of a placeholder 0 and 1, the secondary thumbs on my keymap
perform the following actions:
* Navigate to previous and next workspace the base layer
* Navigate to previous and next tab on the mouse layer
* Volume control on layer
* Brightness control on layer

Mouse layer:
------------

* Copy/Paste shortcuts on the left hand, on the upper row.

Always available layer:
-----------------------

* Esc and column are placed differently to allow easy vim navigation with the positions of w and q in the workman base layer
* Enable permanent switch to the RSTHD layer in addition to the mouse layer
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
A split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris)

* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83)
* Hardware Supported: Ferris PCB
* Hardware Availability: Still in prototype stage
* Hardware Supported:
* Ferris 0.1 (With atmega32u4 chip. Comes in 4 variants: base, low, high and compact)
* Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout)
* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon.

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

make handwired/ferris:default
make ferris/0.1:default
make ferris/sweep:default:avrdude-split-right

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).
76 changes: 76 additions & 0 deletions keyboards/ferris/sweep/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
Copyright 2018 ENDO Katsuhiro <[email protected]>
noroadsleft marked this conversation as resolved.
Show resolved Hide resolved

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

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0xC2AB
#define PRODUCT_ID 0x3939
#define DEVICE_VER 0x0001
#define MANUFACTURER DPB
#define PRODUCT Ferris sweep
#define DESCRIPTION A minimalistic 34 - keys split keyboard
pierrechevalier83 marked this conversation as resolved.
Show resolved Hide resolved

/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5

/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
* NO_DIODE = switches are directly connected to AVR pins
*
*/
#define DIRECT_PINS { \
{ E6, F7, F6, F5, F4 }, \
{ B1, B3, B2, B6, D3 }, \
{ D1, D0, D4, C6, D7 }, \
{ B4, B5, NO_PIN, NO_PIN, NO_PIN } \
}

#define DIRECT_PINS_RIGHT { \
{ F4, F5, F6, F7, E6 }, \
{ D3,B6,B2,B3,B1 }, \
{ D7,C6,D4,D0,D1}, \
{ B5, B4, NO_PIN, NO_PIN, NO_PIN } \
}



#define UNUSED_PINS

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

/* Serial settings */
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D2

#define EE_HANDS
37 changes: 37 additions & 0 deletions keyboards/ferris/sweep/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# MCU name
MCU = atmega32u4

# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
pierrechevalier83 marked this conversation as resolved.
Show resolved Hide resolved
BOOTLOADER = caterina

# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = yes # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
pierrechevalier83 marked this conversation as resolved.
Show resolved Hide resolved

DEBUG_ENABLE = no
CUSTOM_MATRIX = no # Use custom matrix code
pierrechevalier83 marked this conversation as resolved.
Show resolved Hide resolved
SPLIT_KEYBOARD = yes # Use shared split_common code
16 changes: 16 additions & 0 deletions keyboards/ferris/sweep/sweep.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/* Copyright 2018 ENDO Katsuhiro <[email protected]>
noroadsleft marked this conversation as resolved.
Show resolved Hide resolved
*
* 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 "sweep.h"
Loading