[Keyboard] Add FnRow v1 keyboard by dinofizz (#11817)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Dino Fizzotti <dinofizz@pop-os.localdomain>
This commit is contained in:
Dino Fizzotti 2021-07-03 04:56:23 +01:00 committed by GitHub
parent 8bba77db0d
commit f51d929bd9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 400 additions and 0 deletions

View file

@ -0,0 +1,35 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/
#pragma once
#define CH_CFG_ST_FREQUENCY 10000
#define CH_CFG_USE_TM FALSE
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
#define CH_CFG_USE_DYNAMIC FALSE
#define CH_DBG_ENABLE_STACK_CHECK FALSE
#include_next <chconf.h>

View file

@ -0,0 +1,36 @@
/*
Copyright 2021 Dino Fizzotti
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"
#define VENDOR_ID 0xD1F1
#define PRODUCT_ID 0x0100
#define DEVICE_VER 0x0001
#define MANUFACTURER Dino Fizzotti
#define PRODUCT FnRow v1
#define MATRIX_ROWS 2
#define MATRIX_COLS 7
#define MATRIX_ROW_PINS { A0, A1 }
#define MATRIX_COL_PINS {B0, B1, B3, B4, B5, B6, B7 }
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5

View file

@ -0,0 +1,51 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once
#define HAL_USE_DAC FALSE
#define HAL_USE_GPT FALSE
#define HAL_USE_I2C FALSE
#define HAL_USE_PWM FALSE
#define HAL_USE_SERIAL_USB FALSE
#define HAL_USE_SPI FALSE
#define PAL_USE_CALLBACKS FALSE
#define PAL_USE_WAIT FALSE
#define ADC_USE_WAIT FALSE
#define ADC_USE_MUTUAL_EXCLUSION FALSE
#define SERIAL_USB_BUFFERS_SIZE 256
#define SPI_USE_WAIT FALSE
#define SPI_USE_MUTUAL_EXCLUSION FALSE
#include_next <halconf.h>

View file

@ -0,0 +1,78 @@
{
"keyboard_name": "FnRow v1",
"maintainer": "dinofizz",
"url": "https://github.com/dinofizz/fnrow-pcb",
"width": 15,
"height": 1,
"layouts": {
"LAYOUT_fn_row": {
"layout": [
{
"label": "SW1",
"x": 0,
"y": 0
},
{
"label": "SW3",
"x": 2,
"y": 0
},
{
"label": "SW5",
"x": 3,
"y": 0
},
{
"label": "SW7",
"x": 4,
"y": 0
},
{
"label": "SW9",
"x": 5,
"y": 0
},
{
"label": "SW11",
"x": 6.5,
"y": 0
},
{
"label": "SW13",
"x": 7.5,
"y": 0
},
{
"label": "SW2",
"x": 8.5,
"y": 0
},
{
"label": "SW4",
"x": 9.5,
"y": 0
},
{
"label": "SW6",
"x": 11,
"y": 0
},
{
"label": "SW8",
"x": 12,
"y": 0
},
{
"label": "SW10",
"x": 13,
"y": 0
},
{
"label": "SW12",
"x": 14,
"y": 0
}
]
}
}
}

View file

@ -0,0 +1,22 @@
/* Copyright 2021 Dino Fizzotti
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_fn_row(
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
),
};

View file

@ -0,0 +1 @@
# The default keymap for FnRow v1

View file

@ -0,0 +1,34 @@
/* Copyright 2021 Dino Fizzotti
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_fn_row(
MO(1), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
),
[1] = LAYOUT_fn_row(
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_HOME, KC_END
),
[2] = LAYOUT_fn_row(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_fn_row(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View file

@ -0,0 +1 @@
VIA_ENABLE = yes

View file

@ -0,0 +1,28 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/mcuconf.h -r platforms/chibios/GENERIC_STM32_F042X6/configs/mcuconf.h`
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USART2
#define STM32_SERIAL_USE_USART2 TRUE

View file

@ -0,0 +1,28 @@
# FnRow v1
A keyboard featuring a single horizontal row of switches in the style of a "function row" layout.
* Keyboard Maintainer: [Dino Fizzotti](https://www.dinofizzotti.com)
* [PCB Schematic and layout](https://github.com/dinofizz/fnrow-pcb)
* [Blog post](https://www.dinofizzotti.com/blog/2021-02-07-fnrow-v1-a-configurable-function-row-layout-mechanical-keyboard/)
## Features
* USB-C
* USB ESD and overcurrent protection
* Dedicated reset switch to enable DFU mode
* Optional status LED
## Compilation
Make compilation example for this keyboard (after setting up your build environment):
make dinofizz/fnrow/v1:default
# Flashing
The FnRow features a hardware reset push-button to the left of the USB-C port. To flash new firmware you will need to enter the bootloader mode first. Plug the FnRow in to your computer using a USB cable and press the reset button momentarily. The board will then show up as an STM32 flash bootloader device. You can then use the following command to flash new firmware to the board.
make dinofizz/fnrow/v1: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).

View file

@ -0,0 +1,25 @@
# MCU name
MCU = STM32F042
# Bootloader selection
BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # 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
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View file

@ -0,0 +1,36 @@
/* Copyright 2021 Dino Fizzotti
*
* 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 "v1.h"
void keyboard_pre_init_kb(void) {
// Immediately set the LED pin as an output and set it ON
setPinOutput(A15);
writePinHigh(A15);
keyboard_pre_init_user();
}
void keyboard_post_init_kb(void) {
// Blink the LED so we know everything is running OK
// Finish with LED OFF
writePinLow(A15);
wait_ms(100);
writePinHigh(A15);
wait_ms(100);
writePinLow(A15);
keyboard_post_init_user();
}

View file

@ -0,0 +1,25 @@
/* Copyright 2021 Dino Fizzotti
*
* 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 "quantum.h"
#define LAYOUT_fn_row( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, }, \
{ K007, K008, K009, K010, K011, K012, KC_NO }, \
}