Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Keyboard: Initial 25 port (#4394)
* Initial 25 port * Initial 25 port - fix info.json and hand_swap_config * Review comments - fix layout macros, copyright comments, and duplicated use of layering macros
- Loading branch information
Showing
with
676 additions
and 0 deletions.
- +60 −0 keyboards/40percentclub/25/25.c
- +85 −0 keyboards/40percentclub/25/25.h
- +230 −0 keyboards/40percentclub/25/config.h
- +29 −0 keyboards/40percentclub/25/info.json
- +19 −0 keyboards/40percentclub/25/keymaps/default/config.h
- +87 −0 keyboards/40percentclub/25/keymaps/default/keymap.c
- +1 −0 keyboards/40percentclub/25/keymaps/default/readme.md
- +19 −0 keyboards/40percentclub/25/keymaps/macro/config.h
- +42 −0 keyboards/40percentclub/25/keymaps/macro/keymap.c
- +1 −0 keyboards/40percentclub/25/keymaps/macro/readme.md
- +18 −0 keyboards/40percentclub/25/readme.md
- +85 −0 keyboards/40percentclub/25/rules.mk
@@ -0,0 +1,60 @@ | ||
/* Copyright 2018 | ||
* | ||
* 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 "25.h" | ||
|
||
void matrix_init_kb(void) { | ||
// put your keyboard start-up code here | ||
// runs once when the firmware starts up | ||
|
||
matrix_init_user(); | ||
} | ||
|
||
void matrix_scan_kb(void) { | ||
// put your looping keyboard code here | ||
// runs every cycle (a lot) | ||
|
||
matrix_scan_user(); | ||
} | ||
|
||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||
// put your per-action keyboard code here | ||
// runs for every action, just before processing by the firmware | ||
|
||
return process_record_user(keycode, record); | ||
} | ||
|
||
void led_set_kb(uint8_t usb_led) { | ||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here | ||
|
||
led_set_user(usb_led); | ||
} | ||
|
||
#ifdef SWAP_HANDS_ENABLE | ||
__attribute__ ((weak)) | ||
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { | ||
{{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, | ||
{{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, | ||
{{4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, | ||
{{4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}}, | ||
{{4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}}, | ||
|
||
{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}}, | ||
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}}, | ||
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}}, | ||
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}}, | ||
{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}}, | ||
}; | ||
#endif |
@@ -0,0 +1,85 @@ | ||
/* Copyright 2018 | ||
* | ||
* 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 ___ KC_NO | ||
|
||
#ifndef FLIP_HALF | ||
#define LAYOUT_ortho_5x10( \ | ||
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ | ||
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ | ||
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ | ||
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34, \ | ||
L40, L41, L42, L43, L44, R40, R41, R42, R43, R44 \ | ||
) { \ | ||
{ L00, L01, L02, L03, L04 }, \ | ||
{ L10, L11, L12, L13, L14 }, \ | ||
{ L20, L21, L22, L23, L24 }, \ | ||
{ L30, L31, L32, L33, L34 }, \ | ||
{ L40, L41, L42, L43, L44 }, \ | ||
{ R04, R03, R02, R01, R00 }, \ | ||
{ R14, R13, R12, R11, R10 }, \ | ||
{ R24, R23, R22, R21, R20 }, \ | ||
{ R34, R33, R32, R31, R30 }, \ | ||
{ R44, R43, R42, R41, R40 } \ | ||
} | ||
#else | ||
#define LAYOUT_ortho_5x10( \ | ||
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ | ||
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ | ||
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ | ||
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34, \ | ||
L40, L41, L42, L43, L44, R40, R41, R42, R43, R44 \ | ||
) { \ | ||
{ L00, L01, L02, L03, L04 }, \ | ||
{ L10, L11, L12, L13, L14 }, \ | ||
{ L20, L21, L22, L23, L24 }, \ | ||
{ L30, L31, L32, L33, L34 }, \ | ||
{ L40, L41, L42, L43, L44 }, \ | ||
{ R00, R01, R02, R03, R04 }, \ | ||
{ R10, R11, R12, R13, R14 }, \ | ||
{ R20, R21, R22, R23, R24 }, \ | ||
{ R30, R31, R32, R33, R34 }, \ | ||
{ R40, R41, R42, R43, R44 } \ | ||
} | ||
#endif | ||
|
||
#define LAYOUT_ortho_5x5( \ | ||
L00, L01, L02, L03, L04, \ | ||
L10, L11, L12, L13, L14, \ | ||
L20, L21, L22, L23, L24, \ | ||
L30, L31, L32, L33, L34, \ | ||
L40, L41, L42, L43, L44 \ | ||
) { \ | ||
{ L00, L01, L02, L03, L04 }, \ | ||
{ L10, L11, L12, L13, L14 }, \ | ||
{ L20, L21, L22, L23, L24 }, \ | ||
{ L30, L31, L32, L33, L34 }, \ | ||
{ L40, L41, L42, L43, L44 }, \ | ||
{ ___, ___, ___, ___, ___ }, \ | ||
{ ___, ___, ___, ___, ___ }, \ | ||
{ ___, ___, ___, ___, ___ }, \ | ||
{ ___, ___, ___, ___, ___ }, \ | ||
{ ___, ___, ___, ___, ___ } \ | ||
} | ||
|
||
#define LAYOUT_macro LAYOUT_ortho_5x5 | ||
#define LAYOUT_split LAYOUT_ortho_5x10 | ||
|
||
#ifdef USE_I2C | ||
#error "I2C not Supported" | ||
#endif |
@@ -0,0 +1,230 @@ | ||
/* Copyright 2018 | ||
* | ||
* 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 0xFEED | ||
#define PRODUCT_ID 0x0A0C | ||
#define DEVICE_VER 0x0F25 | ||
#define MANUFACTURER di0ib | ||
#define PRODUCT The 5x5 Keyboard | ||
#define DESCRIPTION A split 50 key keyboard | ||
|
||
#define USE_SERIAL | ||
|
||
/* Select hand configuration */ | ||
#define MASTER_LEFT | ||
//#define MASTER_RIGHT | ||
//#define EE_HANDS | ||
|
||
/* key matrix size */ | ||
// Rows are doubled-up | ||
#define MATRIX_ROWS 5*2 | ||
#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) | ||
* | ||
*/ | ||
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } | ||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 } | ||
#define UNUSED_PINS | ||
|
||
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ | ||
#define DIODE_DIRECTION COL2ROW | ||
|
||
// #define BACKLIGHT_PIN B7 | ||
// #define BACKLIGHT_BREATHING | ||
// #define BACKLIGHT_LEVELS 3 | ||
|
||
// #define RGB_DI_PIN E2 | ||
// #ifdef RGB_DI_PIN | ||
// #define RGBLIGHT_ANIMATIONS | ||
// #define RGBLED_NUM 16 | ||
// #define RGBLIGHT_HUE_STEP 8 | ||
// #define RGBLIGHT_SAT_STEP 8 | ||
// #define RGBLIGHT_VAL_STEP 8 | ||
// #endif | ||
|
||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||
#define DEBOUNCING_DELAY 5 | ||
|
||
/* define if matrix has ghost (lacks anti-ghosting diodes) */ | ||
//#define MATRIX_HAS_GHOST | ||
|
||
/* number of backlight levels */ | ||
|
||
/* 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 | ||
|
||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. | ||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc). | ||
*/ | ||
// #define GRAVE_ESC_CTRL_OVERRIDE | ||
|
||
/* | ||
* Force NKRO | ||
* | ||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved | ||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the | ||
* makefile for this to work.) | ||
* | ||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) | ||
* until the next keyboard reset. | ||
* | ||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is | ||
* fully operational during normal computer usage. | ||
* | ||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) | ||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by | ||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a | ||
* power-up. | ||
* | ||
*/ | ||
//#define FORCE_NKRO | ||
|
||
/* | ||
* Magic Key Options | ||
* | ||
* Magic keys are hotkey commands that allow control over firmware functions of | ||
* the keyboard. They are best used in combination with the HID Listen program, | ||
* found here: https://www.pjrc.com/teensy/hid_listen.html | ||
* | ||
* The options below allow the magic key functionality to be changed. This is | ||
* useful if your keyboard/keypad is missing keys and you want magic key support. | ||
* | ||
*/ | ||
|
||
/* key combination for magic key command */ | ||
#define IS_COMMAND() ( \ | ||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
) | ||
|
||
/* control how magic key switches layers */ | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false | ||
|
||
/* override magic key keymap */ | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS | ||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM | ||
//#define MAGIC_KEY_HELP1 H | ||
//#define MAGIC_KEY_HELP2 SLASH | ||
//#define MAGIC_KEY_DEBUG D | ||
//#define MAGIC_KEY_DEBUG_MATRIX X | ||
//#define MAGIC_KEY_DEBUG_KBD K | ||
//#define MAGIC_KEY_DEBUG_MOUSE M | ||
//#define MAGIC_KEY_VERSION V | ||
//#define MAGIC_KEY_STATUS S | ||
//#define MAGIC_KEY_CONSOLE C | ||
//#define MAGIC_KEY_LAYER0_ALT1 ESC | ||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE | ||
//#define MAGIC_KEY_LAYER0 0 | ||
//#define MAGIC_KEY_LAYER1 1 | ||
//#define MAGIC_KEY_LAYER2 2 | ||
//#define MAGIC_KEY_LAYER3 3 | ||
//#define MAGIC_KEY_LAYER4 4 | ||
//#define MAGIC_KEY_LAYER5 5 | ||
//#define MAGIC_KEY_LAYER6 6 | ||
//#define MAGIC_KEY_LAYER7 7 | ||
//#define MAGIC_KEY_LAYER8 8 | ||
//#define MAGIC_KEY_LAYER9 9 | ||
//#define MAGIC_KEY_BOOTLOADER PAUSE | ||
//#define MAGIC_KEY_LOCK CAPS | ||
//#define MAGIC_KEY_EEPROM E | ||
//#define MAGIC_KEY_NKRO N | ||
//#define MAGIC_KEY_SLEEP_LED Z | ||
|
||
/* | ||
* Feature disable options | ||
* These options are also useful to firmware size reduction. | ||
*/ | ||
|
||
/* disable debug print */ | ||
//#define NO_DEBUG | ||
|
||
/* disable print */ | ||
//#define NO_PRINT | ||
|
||
/* disable action features */ | ||
//#define NO_ACTION_LAYER | ||
//#define NO_ACTION_TAPPING | ||
//#define NO_ACTION_ONESHOT | ||
//#define NO_ACTION_MACRO | ||
//#define NO_ACTION_FUNCTION | ||
|
||
/* | ||
* MIDI options | ||
*/ | ||
|
||
/* Prevent use of disabled MIDI features in the keymap */ | ||
//#define MIDI_ENABLE_STRICT 1 | ||
|
||
/* enable basic MIDI features: | ||
- MIDI notes can be sent when in Music mode is on | ||
*/ | ||
//#define MIDI_BASIC | ||
|
||
/* enable advanced MIDI features: | ||
- MIDI notes can be added to the keymap | ||
- Octave shift and transpose | ||
- Virtual sustain, portamento, and modulation wheel | ||
- etc. | ||
*/ | ||
//#define MIDI_ADVANCED | ||
|
||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||
//#define MIDI_TONE_KEYCODE_OCTAVES 1 | ||
|
||
/* | ||
* HD44780 LCD Display Configuration | ||
*/ | ||
/* | ||
#define LCD_LINES 2 //< number of visible lines of the display | ||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display | ||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode | ||
#if LCD_IO_MODE | ||
#define LCD_PORT PORTB //< port for the LCD lines | ||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 | ||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 | ||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 | ||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 | ||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 | ||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 | ||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 | ||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 | ||
#define LCD_RS_PORT LCD_PORT //< port for RS line | ||
#define LCD_RS_PIN 3 //< pin for RS line | ||
#define LCD_RW_PORT LCD_PORT //< port for RW line | ||
#define LCD_RW_PIN 2 //< pin for RW line | ||
#define LCD_E_PORT LCD_PORT //< port for Enable line | ||
#define LCD_E_PIN 1 //< pin for Enable line | ||
#endif | ||
*/ |
Oops, something went wrong.