mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-03 23:02:34 +01:00 
			
		
		
		
	OddForge VE.A (#11875)
* VEA Support * Update LEDs to use QMK methods * Enable Backlight * Update Vendor ID * Updates to enable split RGB * Update readme * Update to split RGB * remove unnecessary reference * Knight animation starts at the back * remove hardcoded variable Co-authored-by: Major Koos <MajorKoos@noreply.users.github.com>
This commit is contained in:
		
							parent
							
								
									74372424ae
								
							
						
					
					
						commit
						b2a0e98a60
					
				
							
								
								
									
										46
									
								
								keyboards/oddforge/vea/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								keyboards/oddforge/vea/config.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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       0xFFFE
 | 
				
			||||||
 | 
					#define PRODUCT_ID      0x4155
 | 
				
			||||||
 | 
					#define DEVICE_VER      0x0100
 | 
				
			||||||
 | 
					#define MANUFACTURER    OddForge
 | 
				
			||||||
 | 
					#define PRODUCT         VE.A
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* matrix size */
 | 
				
			||||||
 | 
					#define MATRIX_ROWS 8
 | 
				
			||||||
 | 
					#define MATRIX_COLS 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DEBOUNCE 5
 | 
				
			||||||
 | 
					#define LOCKING_SUPPORT_ENABLE
 | 
				
			||||||
 | 
					#define LOCKING_RESYNC_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DYNAMIC_KEYMAP_LAYER_COUNT 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RGBLED_NUM 18
 | 
				
			||||||
 | 
					#define RGBLIGHT_ANIMATIONS
 | 
				
			||||||
 | 
					#define RGBLIGHT_SLEEP
 | 
				
			||||||
 | 
					#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LED_NUM_LOCK_PIN D0
 | 
				
			||||||
 | 
					#define LED_CAPS_LOCK_PIN D1
 | 
				
			||||||
 | 
					#define LED_SCROLL_LOCK_PIN D6
 | 
				
			||||||
 | 
					#define BACKLIGHT_PIN D4
 | 
				
			||||||
							
								
								
									
										12
									
								
								keyboards/oddforge/vea/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								keyboards/oddforge/vea/info.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "keyboard_name": "VE.A",
 | 
				
			||||||
 | 
					    "url": "https://drop.com/buy/ve-a",
 | 
				
			||||||
 | 
					    "maintainer": "MajorKoos",
 | 
				
			||||||
 | 
					    "width": 19.75,
 | 
				
			||||||
 | 
					    "height": 6,
 | 
				
			||||||
 | 
					    "layouts": {
 | 
				
			||||||
 | 
					        "LAYOUT": {
 | 
				
			||||||
 | 
					            "layout": [{"label":"5,0", "x":2.25, "y":0}, {"label":"5,1", "x":3.25, "y":0}, {"label":"5,2", "x":4.25, "y":0}, {"label":"5,3", "x":5.25, "y":0}, {"label":"5,4", "x":6.25, "y":0}, {"label":"5,5", "x":7.25, "y":0}, {"label":"5,6", "x":8.25, "y":0}, {"label":"5,8", "x":10.75, "y":0}, {"label":"5,9", "x":11.75, "y":0}, {"label":"5,10", "x":12.75, "y":0}, {"label":"5,11", "x":13.75, "y":0}, {"label":"5,12", "x":14.75, "y":0}, {"label":"5,13", "x":15.75, "y":0}, {"label":"6,11", "x":16.75, "y":0}, {"label":"7,11", "x":17.75, "y":0}, {"label":"6,13", "x":18.75, "y":0}, {"label":"6,1", "x":0, "y":1}, {"label":"7,1", "x":1, "y":1}, {"label":"4,0", "x":2.25, "y":1}, {"label":"4,1", "x":3.25, "y":1}, {"label":"4,2", "x":4.25, "y":1}, {"label":"4,3", "x":5.25, "y":1}, {"label":"4,4", "x":6.25, "y":1}, {"label":"4,5", "x":7.25, "y":1}, {"label":"4,6", "x":8.25, "y":1}, {"label":"4,8", "x":10.75, "y":1}, {"label":"4,9", "x":11.75, "y":1}, {"label":"4,10", "x":12.75, "y":1}, {"label":"4,11", "x":13.75, "y":1}, {"label":"4,12", "x":14.75, "y":1}, {"label":"4,13", "x":15.75, "y":1}, {"label":"4,14", "x":16.75, "y":1, "w":2}, {"label":"6,10", "x":18.75, "y":1}, {"label":"6,2", "x":0, "y":2}, {"label":"7,2", "x":1, "y":2}, {"label":"3,0", "x":2.25, "y":2, "w":1.5}, {"label":"3,1", "x":3.75, "y":2}, {"label":"3,2", "x":4.75, "y":2}, {"label":"3,3", "x":5.75, "y":2}, {"label":"3,4", "x":6.75, "y":2}, {"label":"3,5", "x":7.75, "y":2}, {"label":"1,8", "x":10.25, "y":2}, {"label":"1,9", "x":11.25, "y":2}, {"label":"1,10", "x":12.25, "y":2}, {"label":"1,11", "x":13.25, "y":2}, {"label":"1,12", "x":14.25, "y":2}, {"label":"1,13", "x":15.25, "y":2}, {"label":"1,14", "x":16.25, "y":2}, {"label":"2,14", "x":17.25, "y":2, "w":1.5}, {"label":"7,10", "x":18.75, "y":2}, {"label":"6,3", "x":0, "y":3}, {"label":"7,3", "x":1, "y":3}, {"label":"2,0", "x":2.25, "y":3, "w":1.75}, {"label":"2,1", "x":4, "y":3}, {"label":"2,2", "x":5, "y":3}, {"label":"2,3", "x":6, "y":3}, {"label":"2,4", "x":7, "y":3}, {"label":"2,5", "x":8, "y":3}, {"label":"2,8", "x":10.5, "y":3}, {"label":"2,9", "x":11.5, "y":3}, {"label":"2,10", "x":12.5, "y":3}, {"label":"2,11", "x":13.5, "y":3}, {"label":"2,12", "x":14.5, "y":3}, {"label":"2,13", "x":15.5, "y":3}, {"label":"3,13", "x":16.5, "y":3, "w":2.25}, {"label":"6,12", "x":18.75, "y":3}, {"label":"6,4", "x":0, "y":4}, {"label":"7,4", "x":1, "y":4}, {"label":"1,0", "x":2.25, "y":4, "w":2.25}, {"label":"1,1", "x":4.5, "y":4}, {"label":"1,2", "x":5.5, "y":4}, {"label":"1,3", "x":6.5, "y":4}, {"label":"1,4", "x":7.5, "y":4}, {"label":"1,5", "x":8.5, "y":4}, {"label":"3,8", "x":11, "y":4}, {"label":"3,9", "x":12, "y":4}, {"label":"3,10", "x":13, "y":4}, {"label":"3,11", "x":14, "y":4}, {"label":"3,12", "x":15, "y":4}, {"label":"3,14", "x":16, "y":4, "w":1.75}, {"label":"6,8", "x":17.75, "y":4}, {"label":"7,12", "x":18.75, "y":4}, {"label":"6,5", "x":0, "y":5}, {"label":"7,5", "x":1, "y":5}, {"label":"0,0", "x":2.25, "y":5, "w":1.25}, {"label":"0,1", "x":3.5, "y":5, "w":1.25}, {"label":"0,2", "x":4.75, "y":5, "w":1.25}, {"label":"7,7", "x":6, "y":5, "w":2}, {"label":"6,6", "x":8, "y":5}, {"label":"6,14", "x":10.5, "y":5, "w":2.75}, {"label":"0,10", "x":13.25, "y":5, "w":1.25}, {"label":"0,9", "x":14.5, "y":5}, {"label":"0,8", "x":15.5, "y":5, "w":1.25}, {"label":"7,8", "x":16.75, "y":5}, {"label":"6,9", "x":17.75, "y":5}, {"label":"7,9", "x":18.75, "y":5}]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										64
									
								
								keyboards/oddforge/vea/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								keyboards/oddforge/vea/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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] = {
 | 
				
			||||||
 | 
					  /* Base          ,-----------------------------------------.     ,-----------------------------------------------------.
 | 
				
			||||||
 | 
					  *                | ESC | F1  | F2  | F3  | F4  | F5  | F6  |     | F7  | F8  | F9  | F10 | F11 | F12 |Print| Ins | Del |
 | 
				
			||||||
 | 
					  * ,-----------.  |-----+-----+-----+-----+-----+-----+-----|     |-----+-----+-----+-----+-----+-----+-----------+-----|
 | 
				
			||||||
 | 
					  * |  8  |  9  |  |  ~  |  1  |  2  |  3  |  4  |  5  |  6  |     |  7  |  8  |  9  |  0  |  -  |  =  | Backspac  | Home|
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------'  ,--------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  6  |  7  |  | Tab   |  Q  |  W  |  E  |  R  |  T  |     |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |    \    | PgUp|
 | 
				
			||||||
 | 
					  * |-----+-----|  |---------------------------------------.    `--------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  4  |  5  |  | Caps    |  A  |  S  |  D  |  F  |  G  |     |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    | PgDn|
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------.   `-------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  2  |  3  |  | Shift     |  Z  |  X  |  C  |  V  |  B  |     |  N  |  M  |  ,  |  .  |   /   |  Shift  | Up  | End |
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------'   ,-------------------------------------------+-----+-----|
 | 
				
			||||||
 | 
					  * |  0  |  1  |  | Ctrl  |  GUI |  Alt |   Space   |Space|     | Space         |  Alt  |     | Ctrl  | Left| Down|Right|
 | 
				
			||||||
 | 
					  * `-----------'  `---------------------------------------'     `-------------------------------------------------------'
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					[0] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                  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,   KC_PSCR,  KC_INS,  KC_DEL,
 | 
				
			||||||
 | 
					    KC_8, KC_9,   KC_GRAVE, KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,                    KC_7,   KC_8,   KC_9,    KC_0,   KC_MINUS, KC_EQUAL, KC_BSPC,           KC_HOME,
 | 
				
			||||||
 | 
					    KC_6, KC_7,   KC_TAB,   KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,                    KC_U,   KC_I,   KC_O,    KC_P,   KC_LBRC,  KC_RBRC,  KC_BSLS,           KC_PGUP,
 | 
				
			||||||
 | 
					    KC_4, KC_5,   KC_CAPS,  KC_A,    KC_S,    KC_D,   KC_F,   KC_G,                            KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN,  KC_QUOT,  KC_ENTER,          KC_PGDN,
 | 
				
			||||||
 | 
					    KC_2, KC_3,   KC_LSFT,  KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,                            KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,            KC_RSFT,  KC_UP,   KC_END,
 | 
				
			||||||
 | 
					    KC_0, KC_1,   KC_LCTL,  KC_LGUI, KC_LALT, KC_SPC, KC_SPC,                                  KC_SPC,         KC_RALT, KC_APP, KC_RCTL,            KC_LEFT,  KC_DOWN, KC_RIGHT
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                          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, 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, 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, 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,    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,           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, 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, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS, KC_TRNS
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[2] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                          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, 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, 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, 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,    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,           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, 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, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS, KC_TRNS
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										64
									
								
								keyboards/oddforge/vea/keymaps/via/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								keyboards/oddforge/vea/keymaps/via/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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] = {
 | 
				
			||||||
 | 
					  /* Base          ,-----------------------------------------.     ,-----------------------------------------------------.
 | 
				
			||||||
 | 
					  *                | ESC | F1  | F2  | F3  | F4  | F5  | F6  |     | F7  | F8  | F9  | F10 | F11 | F12 |Print| Ins | Del |
 | 
				
			||||||
 | 
					  * ,-----------.  |-----+-----+-----+-----+-----+-----+-----|     |-----+-----+-----+-----+-----+-----+-----------+-----|
 | 
				
			||||||
 | 
					  * |  8  |  9  |  |  ~  |  1  |  2  |  3  |  4  |  5  |  6  |     |  7  |  8  |  9  |  0  |  -  |  =  | Backspac  | Home|
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------'  ,--------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  6  |  7  |  | Tab   |  Q  |  W  |  E  |  R  |  T  |     |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |    \    | PgUp|
 | 
				
			||||||
 | 
					  * |-----+-----|  |---------------------------------------.    `--------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  4  |  5  |  | Caps    |  A  |  S  |  D  |  F  |  G  |     |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    | PgDn|
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------.   `-------------------------------------------------+-----|
 | 
				
			||||||
 | 
					  * |  2  |  3  |  | Shift     |  Z  |  X  |  C  |  V  |  B  |     |  N  |  M  |  ,  |  .  |   /   |  Shift  | Up  | End |
 | 
				
			||||||
 | 
					  * |-----+-----|  |-----------------------------------------'   ,-------------------------------------------+-----+-----|
 | 
				
			||||||
 | 
					  * |  0  |  1  |  | Ctrl  |  GUI |  Alt |   Space   |Space|     | Space         |  Alt  |     | Ctrl  | Left| Down|Right|
 | 
				
			||||||
 | 
					  * `-----------'  `---------------------------------------'     `-------------------------------------------------------'
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					[0] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                  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,   KC_PSCR,  KC_INS,  KC_DEL,
 | 
				
			||||||
 | 
					    KC_8, KC_9,   KC_GRAVE, KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,                    KC_7,   KC_8,   KC_9,    KC_0,   KC_MINUS, KC_EQUAL, KC_BSPC,           KC_HOME,
 | 
				
			||||||
 | 
					    KC_6, KC_7,   KC_TAB,   KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,                    KC_U,   KC_I,   KC_O,    KC_P,   KC_LBRC,  KC_RBRC,  KC_BSLS,           KC_PGUP,
 | 
				
			||||||
 | 
					    KC_4, KC_5,   KC_CAPS,  KC_A,    KC_S,    KC_D,   KC_F,   KC_G,                            KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN,  KC_QUOT,  KC_ENTER,          KC_PGDN,
 | 
				
			||||||
 | 
					    KC_2, KC_3,   KC_LSFT,  KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,                            KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,            KC_RSFT,  KC_UP,   KC_END,
 | 
				
			||||||
 | 
					    KC_0, KC_1,   KC_LCTL,  KC_LGUI, KC_LALT, KC_SPC, KC_SPC,                                  KC_SPC,         KC_RALT, KC_APP, KC_RCTL,            KC_LEFT,  KC_DOWN, KC_RIGHT
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                          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, 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, 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, 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,    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,           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, 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, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS, KC_TRNS
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[2] = LAYOUT(
 | 
				
			||||||
 | 
					    //--------------------------------Left Hand-----------------------------------------|       |--------------------------------Right Hand------------------------------------------------
 | 
				
			||||||
 | 
					                          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, 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, 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, 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,    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,           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, 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, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS, KC_TRNS
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										2
									
								
								keyboards/oddforge/vea/keymaps/via/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/oddforge/vea/keymaps/via/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					VIA_ENABLE = yes
 | 
				
			||||||
 | 
					LTO_ENABLE = yes
 | 
				
			||||||
							
								
								
									
										192
									
								
								keyboards/oddforge/vea/matrix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								keyboards/oddforge/vea/matrix.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,192 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 <string.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include "quantum.h"
 | 
				
			||||||
 | 
					#include "i2c_master.h"
 | 
				
			||||||
 | 
					#include "vea.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RIGHT_HALF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_set_row_status(uint8_t row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(RIGHT_HALF)
 | 
				
			||||||
 | 
					/* ----------------------- hardware I/O abstraction ------------------------ */
 | 
				
			||||||
 | 
					#define PORTCOLUMNS PORTB  ///< port on which we read the state of the columns
 | 
				
			||||||
 | 
					#define PINCOLUMNS  PINB   ///< port on which we read the state of the columns
 | 
				
			||||||
 | 
					#define DDRCOLUMNS  DDRB   ///< port on which we read the state of the columns
 | 
				
			||||||
 | 
					#define PORTROWS1   PORTA  ///< first port connected to the matrix rows
 | 
				
			||||||
 | 
					#define PINROWS1    PINA   ///< first port connected to the matrix rows
 | 
				
			||||||
 | 
					#define DDRROWS1    DDRA   ///< first port connected to the matrix rows
 | 
				
			||||||
 | 
					#define PORTROWS2   PORTC  ///< second port connected to the matrix rows
 | 
				
			||||||
 | 
					#define PINROWS2    PINC   ///< second port connected to the matrix rows
 | 
				
			||||||
 | 
					#define DDRROWS2    DDRC   ///< second port connected to the matrix rows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// register addresses (see "mcp23018.md")
 | 
				
			||||||
 | 
					#define IODIRA 0x00  // i/o direction register
 | 
				
			||||||
 | 
					#define IODIRB 0x01
 | 
				
			||||||
 | 
					#define GPPUA  0x0C  // GPIO pull-up resistor register
 | 
				
			||||||
 | 
					#define GPPUB  0x0D
 | 
				
			||||||
 | 
					#define GPIOA  0x12  // general purpose i/o port register (write modifies OLAT)
 | 
				
			||||||
 | 
					#define GPIOB  0x13
 | 
				
			||||||
 | 
					#define OLATA  0x14  // output latch register
 | 
				
			||||||
 | 
					#define OLATB  0x15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define TW_READ		1
 | 
				
			||||||
 | 
					#define TW_WRITE	0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MCP23018_TWI_ADDRESS 0b0100000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TWI aliases
 | 
				
			||||||
 | 
					#define TWI_ADDR_WRITE ( (MCP23018_TWI_ADDRESS<<1) | TW_WRITE )
 | 
				
			||||||
 | 
					#define TWI_ADDR_READ  ( (MCP23018_TWI_ADDRESS<<1) | TW_READ  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define I2C_TIMEOUT     10
 | 
				
			||||||
 | 
					#define MCP_ROWS_START	8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t mcp23018_init(void) {
 | 
				
			||||||
 | 
						uint8_t ret;
 | 
				
			||||||
 | 
						uint8_t data[3];
 | 
				
			||||||
 | 
						// set pin direction
 | 
				
			||||||
 | 
						// - unused  : input  : 1
 | 
				
			||||||
 | 
						// - input   : input  : 1
 | 
				
			||||||
 | 
						// - driving : output : 0
 | 
				
			||||||
 | 
						data[0] = IODIRA;
 | 
				
			||||||
 | 
						data[1] = 0b00000000;  // IODIRA
 | 
				
			||||||
 | 
						data[2] = (0b11111111);  // IODIRB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = i2c_transmit(TWI_ADDR_WRITE, (uint8_t *)data, 3, I2C_TIMEOUT);
 | 
				
			||||||
 | 
						if (ret) goto out;  // make sure we got an ACK
 | 
				
			||||||
 | 
						// set pull-up
 | 
				
			||||||
 | 
						// - unused  : on  : 1
 | 
				
			||||||
 | 
						// - input   : on  : 1
 | 
				
			||||||
 | 
						// - driving : off : 0
 | 
				
			||||||
 | 
						data[0] = GPPUA;
 | 
				
			||||||
 | 
						data[1] = 0b00000000;  // IODIRA
 | 
				
			||||||
 | 
						data[2] = (0b11111111);  // IODIRB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = i2c_transmit(TWI_ADDR_WRITE, (uint8_t *)data, 3, I2C_TIMEOUT);
 | 
				
			||||||
 | 
						if (ret) goto out;  // make sure we got an ACK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// set logical value (doesn't matter on inputs)
 | 
				
			||||||
 | 
						// - unused  : hi-Z : 1
 | 
				
			||||||
 | 
						// - input   : hi-Z : 1
 | 
				
			||||||
 | 
						// - driving : hi-Z : 1
 | 
				
			||||||
 | 
						data[0] = OLATA;
 | 
				
			||||||
 | 
						data[1] = 0b11111111;  // IODIRA
 | 
				
			||||||
 | 
						data[2] = (0b11111111);  // IODIRB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = i2c_transmit(TWI_ADDR_WRITE, (uint8_t *)data, 3, I2C_TIMEOUT);
 | 
				
			||||||
 | 
					out:
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_init_custom(void) {
 | 
				
			||||||
 | 
					    // initialize matrix ports - cols, rows
 | 
				
			||||||
 | 
						// PB0-PB7 : col0 .. col7
 | 
				
			||||||
 | 
						// PA0-PA7 : row0 .. row7
 | 
				
			||||||
 | 
						// PC7-PC2 : row8 .. row13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// PD0 : NUM
 | 
				
			||||||
 | 
					    // PD1 : CAPS
 | 
				
			||||||
 | 
					    // PD2 : D+ / Clock
 | 
				
			||||||
 | 
					    // PD3 : D- / Data
 | 
				
			||||||
 | 
					    // PD4 : FULL LED
 | 
				
			||||||
 | 
					    // PD5 : 3.6V switch TR
 | 
				
			||||||
 | 
						// PD6 : SCRL
 | 
				
			||||||
 | 
					    // PD7 : row14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// signal direction : col -> row
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // pc(PORTROWS1)0, 1 : twi
 | 
				
			||||||
 | 
						DDRCOLUMNS 	= 0xFF;	// all outputs for cols
 | 
				
			||||||
 | 
						PORTCOLUMNS	= 0xFF;	// high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// all inputs for rows
 | 
				
			||||||
 | 
						DDRROWS1	= 0x00;
 | 
				
			||||||
 | 
						DDRROWS2	&= ~(0x111111<<2); //0x00;
 | 
				
			||||||
 | 
						DDRD        &= ~(1<<PIND7); // row 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// all rows pull-up.
 | 
				
			||||||
 | 
						PORTROWS1	= 0xFF;
 | 
				
			||||||
 | 
						PORTROWS2	|= (0b111111<<2); //0x11111100;
 | 
				
			||||||
 | 
						PORTD 		|= (1<<PIND7);// row 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    i2c_init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(RIGHT_HALF)
 | 
				
			||||||
 | 
					    // Initialize the chip on the other half
 | 
				
			||||||
 | 
					    mcp23018_init();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool matrix_scan_custom(matrix_row_t current_matrix[]) {
 | 
				
			||||||
 | 
					    bool matrix_has_changed = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
 | 
				
			||||||
 | 
					        // Store last value of row prior to reading
 | 
				
			||||||
 | 
					        matrix_row_t last_row_value = current_matrix[row];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        matrix_row_t cols = 0;
 | 
				
			||||||
 | 
						    // Select the row to scan
 | 
				
			||||||
 | 
					        matrix_set_row_status(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        matrix_io_delay();
 | 
				
			||||||
 | 
						    //Set the local row
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(RIGHT_HALF)
 | 
				
			||||||
 | 
							// Initialize to 0x7F in case I2C read fails,
 | 
				
			||||||
 | 
							// as 0x75 would be no keys pressed
 | 
				
			||||||
 | 
							uint8_t data = 0x7F;
 | 
				
			||||||
 | 
							// Receive the columns from right half
 | 
				
			||||||
 | 
							i2c_receive(TWI_ADDR_WRITE, &data, 1, I2C_TIMEOUT);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // cols |= ((~(PINA | 0x80)) & 0x7F);
 | 
				
			||||||
 | 
					        cols |= ((~(PINA)) & 0xFF);
 | 
				
			||||||
 | 
					#if defined(RIGHT_HALF)
 | 
				
			||||||
 | 
							cols |= (((~(data | 0x80)) & 0x7F) << MCP_ROWS_START);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        current_matrix[row] = cols;
 | 
				
			||||||
 | 
					        matrix_has_changed |= (last_row_value != current_matrix[row]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return matrix_has_changed;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_set_row_status(uint8_t row) {
 | 
				
			||||||
 | 
					#if defined(RIGHT_HALF)
 | 
				
			||||||
 | 
					    uint8_t txdata[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Set the remote row on port A
 | 
				
			||||||
 | 
					    txdata[0] = (GPIOA);
 | 
				
			||||||
 | 
					    txdata[1] = ( 0xFF & ~(1<<row) );
 | 
				
			||||||
 | 
					    i2c_transmit(TWI_ADDR_WRITE, (uint8_t *)txdata, 2, I2C_TIMEOUT);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Set the local row on port B
 | 
				
			||||||
 | 
					    DDRB = (1 << row);
 | 
				
			||||||
 | 
					    PORTB = ~(1 << row);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								keyboards/oddforge/vea/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/oddforge/vea/readme.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					# Vermillion's Ergo - Armored Edition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a port of the QMK firmware for the VE.A. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Keyboard Maintainer: [Major Koos](https://github.com/MajorKoos)
 | 
				
			||||||
 | 
					* Keyboard Manufacturer: OddForge
 | 
				
			||||||
 | 
					* Hardware Availability: [Drop.com](https://drop.com/buy/ve-a)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make example for this keyboard (after setting up your build environment):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    make oddforge/vea:default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    make oddforge/vea:default:flash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					or
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bootloadHID -r oddforge_vea_default.hex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## How to get QMK working on the VE.A
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Reset Key**: Hold down the key located at 3rd left position in the bottom row, commonly programmed as Left Control while plugging in the keyboard.  There is also a jumper on the bottom of the PCB (JP_FW) which you can short to get into the bootloader.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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).
 | 
				
			||||||
							
								
								
									
										18
									
								
								keyboards/oddforge/vea/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								keyboards/oddforge/vea/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					# MCU name
 | 
				
			||||||
 | 
					MCU = atmega32a
 | 
				
			||||||
 | 
					BOOTLOADER = bootloadHID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build Options
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
 | 
				
			||||||
 | 
					RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
 | 
				
			||||||
 | 
					WS2812_DRIVER = i2c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# custom matrix setup
 | 
				
			||||||
 | 
					CUSTOM_MATRIX = lite
 | 
				
			||||||
 | 
					SRC = matrix.c
 | 
				
			||||||
 | 
					QUANTUM_LIB_SRC += i2c_master.c
 | 
				
			||||||
							
								
								
									
										33
									
								
								keyboards/oddforge/vea/vea.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/oddforge/vea/vea.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 "vea.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { vea_setleds(start_led, num_leds); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void vea_rgb_init(void) { i2c_init(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Setleds for standard RGB
 | 
				
			||||||
 | 
					void vea_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
				
			||||||
 | 
					    static bool s_init = false;
 | 
				
			||||||
 | 
					    if (!s_init) {
 | 
				
			||||||
 | 
					        vea_rgb_init();
 | 
				
			||||||
 | 
					        s_init = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    i2c_transmit(WS2812_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_TIMEOUT);
 | 
				
			||||||
 | 
					    i2c_transmit(WS2812_ADDRESS_SPLIT, (uint8_t *)ledarray+(sizeof(LED_TYPE) * (leds >> 1)), sizeof(LED_TYPE) * (leds - (leds >> 1)), WS2812_TIMEOUT);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										66
									
								
								keyboards/oddforge/vea/vea.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								keyboards/oddforge/vea/vea.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2021 MajorKoos <github.com/majorkoos>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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"
 | 
				
			||||||
 | 
					#include "i2c_master.h"
 | 
				
			||||||
 | 
					#include "rgblight.h"
 | 
				
			||||||
 | 
					#include "ws2812.h"
 | 
				
			||||||
 | 
					#include "led.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define WS2812_ADDRESS 0xb0
 | 
				
			||||||
 | 
					#define WS2812_ADDRESS_SPLIT 0xb8
 | 
				
			||||||
 | 
					#define WS2812_TIMEOUT 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void vea_setleds(LED_TYPE *ledarray, uint16_t leds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					LEFT
 | 
				
			||||||
 | 
					            .5,0. .5,1. .5,2. .5,3. .5,4. .5,5. .5,6.
 | 
				
			||||||
 | 
					.6,1. .7,1. .4,0. .4,1. .4,2. .4,3. .4,4. .4,5. .4,6.
 | 
				
			||||||
 | 
					.6,2. .7,2. .3,0. .3,1. .3,2. .3,3. .3,4. .3,5.
 | 
				
			||||||
 | 
					.6,3. .7,3. .2,0. .2,1. .2,2. .2,3. .2,4. .2,5.
 | 
				
			||||||
 | 
					.6,4. .7,4. .1,0. .1,1. .1,2. .1,3. .1,4. .1,5.
 | 
				
			||||||
 | 
					.6,5. .7,5. .0,0. .0,1. .0,2. .7,7. .6,6.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RIGHT
 | 
				
			||||||
 | 
					.5,8. .5,9. .5,10. .5,11. .5,12. .5,13. .6,11. .7,11. .6,13.
 | 
				
			||||||
 | 
					.4,8. .4,9. .4,10. .4,11. .4,12. .4,13. .4,14. .6,10.
 | 
				
			||||||
 | 
					.1,8. .1,9. .1,10. .1,11. .1,12. .1,13. .1,14. .2,14. .7,10.
 | 
				
			||||||
 | 
					.2,8. .2,9. .2,10. .2,11. .2,12. .2,13. .3,13. .6,12.
 | 
				
			||||||
 | 
					.3,8. .3,9. .3,10. .3,11. .3,12. .3,14. .6,8. .7,12.
 | 
				
			||||||
 | 
					.6,14. .0,10. .0,9. .0,8. .7,8. .6,9. .7,9.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LAYOUT( \
 | 
				
			||||||
 | 
					            K50,  K51,  K52,  K53,  K54,  K55,  K56,              K58,  K59,  K5A,  K5B,  K5C,  K5D,  K6B,  K7B,  K6D, \
 | 
				
			||||||
 | 
					K61,  K71,  K40,  K41,  K42,  K43,  K44,  K45,  K46,              K48,  K49,  K4A,  K4B,  K4C,  K4D,  K4E,  K6A,       \
 | 
				
			||||||
 | 
					K62,  K72,  K30,  K31,  K32,  K33,  K34,  K35,                    K18,  K19,  K1A,  K1B,  K1C,  K1D,  K1E,  K2E,  K7A, \
 | 
				
			||||||
 | 
					K63,  K73,  K20,  K21,  K22,  K23,  K24,  K25,                    K28,  K29,  K2A,  K2B,  K2C,  K2D,  K3D,  K6C,       \
 | 
				
			||||||
 | 
					K64,  K74,  K10,  K11,  K12,  K13,  K14,  K15,                    K38,  K39,  K3A,  K3B,  K3C,  K3E,  K68,  K7C,       \
 | 
				
			||||||
 | 
					K65,  K75,  K00,  K01,  K02,              K77, K66,               K6E,  K0A,  K09,  K08,  K78,  K69,  K79              \
 | 
				
			||||||
 | 
					){ \
 | 
				
			||||||
 | 
					{ K00,    K01,    K02,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  K08,    K09,    K0A,    KC_NO,  KC_NO,  KC_NO,  KC_NO }, \
 | 
				
			||||||
 | 
					{ K10,    K11,    K12,    K13,    K14,    K15,    KC_NO,  KC_NO,  K18,    K19,    K1A,    K1B,    K1C,    K1D,    K1E   }, \
 | 
				
			||||||
 | 
					{ K20,    K21,    K22,    K23,    K24,    K25,    KC_NO,  KC_NO,  K28,    K29,    K2A,    K2B,    K2C,    K2D,    K2E   }, \
 | 
				
			||||||
 | 
					{ K30,    K31,    K32,    K33,    K34,    K35,    KC_NO,  KC_NO,  K38,    K39,    K3A,    K3B,    K3C,    K3D,    K3E   }, \
 | 
				
			||||||
 | 
					{ K40,    K41,    K42,    K43,    K44,    K45,    K46,    KC_NO,  K48,    K49,    K4A,    K4B,    K4C,    K4D,    K4E   }, \
 | 
				
			||||||
 | 
					{ K50,    K51,    K52,    K53,    K54,    K55,    K56,    KC_NO,  K58,    K59,    K5A,    K5B,    K5C,    K5D,    KC_NO }, \
 | 
				
			||||||
 | 
					{ KC_NO,  K61,    K62,    K63,    K64,    K65,    K66,    KC_NO,  K68,    K69,    K6A,    K6B,    K6C,    K6D,    K6E   }, \
 | 
				
			||||||
 | 
					{ KC_NO,  K71,    K72,    K73,    K74,    K75,    KC_NO,  K77,    K78,    K79,    K7A,    K7B,    K7C,    KC_NO,  KC_NO }  \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user