Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						0f962af691
					
				
					 11 changed files with 657 additions and 1 deletions
				
			
		
							
								
								
									
										55
									
								
								keyboards/kikoslab/ellora65/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								keyboards/kikoslab/ellora65/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Swiftrax <swiftrax@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
 | 
			
		||||
 | 
			
		||||
#include "config_common.h"
 | 
			
		||||
 | 
			
		||||
/* USB Device descriptor parameter */
 | 
			
		||||
#define VENDOR_ID       0x04D8
 | 
			
		||||
#define PRODUCT_ID      0xE88F
 | 
			
		||||
#define DEVICE_VER      0x0001
 | 
			
		||||
#define MANUFACTURER    Kikos Lab
 | 
			
		||||
#define PRODUCT         Ellora65
 | 
			
		||||
/* key matrix size */
 | 
			
		||||
#define MATRIX_ROWS 10
 | 
			
		||||
#define MATRIX_COLS 8
 | 
			
		||||
 | 
			
		||||
// ROWS: Top to bottom, COLS: Left to right
 | 
			
		||||
 | 
			
		||||
#define MATRIX_ROW_PINS { B7, B2, F1, F4, D6, D7, D5, D4, D3, D2 }
 | 
			
		||||
#define MATRIX_COL_PINS { F5, F6, F7, C6, B6, B5, B4, B3 }
 | 
			
		||||
 | 
			
		||||
/* COL2ROW or ROW2COL */
 | 
			
		||||
#define DIODE_DIRECTION COL2ROW
 | 
			
		||||
 | 
			
		||||
#define ENCODERS_PAD_A { B0 }
 | 
			
		||||
#define ENCODERS_PAD_B { B1 }
 | 
			
		||||
 | 
			
		||||
/* define if matrix has ghost */
 | 
			
		||||
//#define MATRIX_HAS_GHOST
 | 
			
		||||
 | 
			
		||||
/* Set 0 if debouncing isn't needed */
 | 
			
		||||
#define DEBOUNCE 5
 | 
			
		||||
 | 
			
		||||
/*RGB TINGS*/
 | 
			
		||||
#define RGB_DI_PIN E6
 | 
			
		||||
#define RGBLED_NUM 12
 | 
			
		||||
 | 
			
		||||
/* bootmagic row col assignment */
 | 
			
		||||
#define BOOTMAGIC_LITE_ROW 1
 | 
			
		||||
#define BOOTMAGIC_LITE_COLUMN 0
 | 
			
		||||
							
								
								
									
										17
									
								
								keyboards/kikoslab/ellora65/ellora65.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								keyboards/kikoslab/ellora65/ellora65.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Swiftrax <swiftrax@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 "ellora65.h"
 | 
			
		||||
							
								
								
									
										40
									
								
								keyboards/kikoslab/ellora65/ellora65.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								keyboards/kikoslab/ellora65/ellora65.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Swiftrax <swiftrax@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
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#define XXX KC_NO
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_all( \
 | 
			
		||||
    K000, K100, K001, K101, K002, K102, K003, K103, K004, K104, K005, K105, K006, K106, K007, K107,\
 | 
			
		||||
    K200, K300, K201, K301, K202, K302, K203, K303, K204, K304, K205, K305, K206, K306, K207      ,\
 | 
			
		||||
    K400, K500, K401, K501, K402, K502, K403, K503, K404, K504, K405, K505, K406, K506, K407, K507,\
 | 
			
		||||
    K600, K700, K601, K701, K602, K702, K603, K703, K604, K704, K605, K705, K606, K706, K607, K707,\
 | 
			
		||||
    K800, K900, K801, K901,       K802,       K803,       K804,       K905, K806, K906, K807, K907 \
 | 
			
		||||
){ \
 | 
			
		||||
    {K000, K001, K002, K003, K004, K005, K006, K007},\
 | 
			
		||||
    {K100, K101, K102, K103, K104, K105, K106, K107},\
 | 
			
		||||
    {K200, K201, K202, K203, K204, K205, K206, K207},\
 | 
			
		||||
    {K300, K301, K302, K303, K304, K305, K306,  XXX},\
 | 
			
		||||
    {K400, K401, K402, K403, K404, K405, K406, K407},\
 | 
			
		||||
    {K500, K501, K502, K503, K504, K505, K506, K507},\
 | 
			
		||||
    {K600, K601, K602, K603, K604, K605, K606, K607},\
 | 
			
		||||
    {K700, K701, K702, K703, K704, K705, K706, K707},\
 | 
			
		||||
    {K800, K801, K802, K803, K804,  XXX, K806, K807},\
 | 
			
		||||
    {K900, K901,  XXX,  XXX,  XXX, K905, K906, K907} \
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								keyboards/kikoslab/ellora65/info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								keyboards/kikoslab/ellora65/info.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard_name": "Ellora65", 
 | 
			
		||||
    "url": "https://github.com/swiftrax", 
 | 
			
		||||
    "maintainer": "swiftrax", 
 | 
			
		||||
    "layouts": {
 | 
			
		||||
        "LAYOUT_all": {
 | 
			
		||||
            "layout": [{"label":"0,0", "x":1.25, "y":0}, {"label":"1,0", "x":2.5, "y":0.25}, {"label":"0,1", "x":3.5, "y":0.25}, {"label":"1,1", "x":4.5, "y":0.25}, {"label":"0,2", "x":5.5, "y":0.25}, {"label":"1,2", "x":6.5, "y":0.25}, {"label":"0,3", "x":7.5, "y":0.25}, {"label":"1,3", "x":8.5, "y":0.25}, {"label":"0,4", "x":9.5, "y":0.25}, {"label":"1,4", "x":10.5, "y":0.25}, {"label":"0,5", "x":11.5, "y":0.25}, {"label":"1,5", "x":12.5, "y":0.25}, {"label":"0,6", "x":13.5, "y":0.25}, {"label":"1,6", "x":14.5, "y":0.25}, {"label":"0,7", "x":15.5, "y":0.25}, {"label":"1,7", "x":16.5, "y":0.25}, {"label":"2,0", "x":1.25, "y":1.25}, {"label":"3,0", "x":2.5, "y":1.25, "w":1.5}, {"label":"2,1", "x":4, "y":1.25}, {"label":"3,1", "x":5, "y":1.25}, {"label":"2,2", "x":6, "y":1.25}, {"label":"3,2", "x":7, "y":1.25}, {"label":"2,3", "x":8, "y":1.25}, {"label":"3,3", "x":9, "y":1.25}, {"label":"2,4", "x":10, "y":1.25}, {"label":"3,4", "x":11, "y":1.25}, {"label":"2,5", "x":12, "y":1.25}, {"label":"3,5", "x":13, "y":1.25}, {"label":"2,6", "x":14, "y":1.25}, {"label":"3,6", "x":15, "y":1.25}, {"label":"2,7", "x":16, "y":1.25, "w":1.5}, {"label":"4,0", "x":1.25, "y":2.25}, {"label":"5,0", "x":2.5, "y":2.25, "w":1.75}, {"label":"4,1", "x":4.25, "y":2.25}, {"label":"5,1", "x":5.25, "y":2.25}, {"label":"4,2", "x":6.25, "y":2.25}, {"label":"5,2", "x":7.25, "y":2.25}, {"label":"4,3", "x":8.25, "y":2.25}, {"label":"5,3", "x":9.25, "y":2.25}, {"label":"4,4", "x":10.25, "y":2.25}, {"label":"5,4", "x":11.25, "y":2.25}, {"label":"4,5", "x":12.25, "y":2.25}, {"label":"5,5", "x":13.25, "y":2.25}, {"label":"4,6", "x":14.25, "y":2.25}, {"label":"5,6", "x":15.25, "y":2.25}, {"label":"4,7", "x":16.25, "y":2.25, "w":1.25}, {"label":"5,7", "x":17.5, "y":2.25}, {"label":"6,0", "x":1.25, "y":3.25}, {"label":"7,0", "x":2.5, "y":3.25, "w":1.25}, {"label":"6,1", "x":3.75, "y":3.25}, {"label":"7,1", "x":4.75, "y":3.25}, {"label":"6,2", "x":5.75, "y":3.25}, {"label":"7,2", "x":6.75, "y":3.25}, {"label":"6,3", "x":7.75, "y":3.25}, {"label":"7,3", "x":8.75, "y":3.25}, {"label":"6,4", "x":9.75, "y":3.25}, {"label":"7,4", "x":10.75, "y":3.25}, {"label":"6,5", "x":11.75, "y":3.25}, {"label":"7,5", "x":12.75, "y":3.25}, {"label":"6,6", "x":13.75, "y":3.25}, {"label":"7,6", "x":14.75, "y":3.25, "w":1.75}, {"label":"6,7", "x":16.5, "y":3.25}, {"label":"7,7", "x":17.5, "y":3.25}, {"label":"8,0", "x":1.25, "y":4.25}, {"label":"9,0", "x":2.5, "y":4.25, "w":1.25}, {"label":"8,1", "x":3.75, "y":4.25, "w":1.25}, {"label":"9,1", "x":5, "y":4.25, "w":1.25}, {"label":"8,2", "x":6.25, "y":4.25, "w":2.75}, {"label":"8,3", "x":9, "y":4.25, "w":1.25}, {"label":"8,4", "x":10.25, "y":4.25, "w":2.25}, {"label":"9,5", "x":12.5, "y":4.25}, {"label":"8,6", "x":13.5, "y":4.25, "w":1.5}, {"label":"9,6", "x":15.5, "y":4.25}, {"label":"8,7", "x":16.5, "y":4.25}, {"label":"9,7", "x":17.5, "y":4.25}]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										240
									
								
								keyboards/kikoslab/ellora65/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								keyboards/kikoslab/ellora65/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,240 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Kiko <kikosdesignlab@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
 | 
			
		||||
 | 
			
		||||
enum _layer {
 | 
			
		||||
   _MA,
 | 
			
		||||
   _FN
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
 [_MA] = LAYOUT_all(
 | 
			
		||||
    KC_MUTE,   KC_ESC ,   KC_1   ,   KC_2   ,   KC_3   ,   KC_4   ,   KC_5   ,   KC_6   ,   KC_7   ,   KC_8   ,   KC_9   ,   KC_0   ,   KC_MINS,   KC_EQL ,   KC_BSPC,   KC_BSPC,
 | 
			
		||||
    KC_F13 ,   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_F14 ,   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_ENT ,   KC_ENT ,   KC_INS, 
 | 
			
		||||
    KC_F15 ,   KC_LSFT,   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_DEL, 
 | 
			
		||||
    KC_F16 ,   KC_LCTL,   KC_LGUI,   KC_LALT,            MO(_FN)  ,              KC_SPC ,            MO(_FN)  ,              MO(_FN),   MO(_FN),   KC_LEFT,   KC_DOWN,   KC_RGHT),
 | 
			
		||||
 | 
			
		||||
 [_FN] = LAYOUT_all(
 | 
			
		||||
    KC_DEL ,   KC_GRV ,   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_BSPC,   KC_TRNS,
 | 
			
		||||
    KC_F17 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,                
 | 
			
		||||
    KC_F18 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F19 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F20 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,              RESET  ,              KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
    if (clockwise) {
 | 
			
		||||
        tap_code(KC_VOLU);
 | 
			
		||||
    } else {
 | 
			
		||||
        tap_code(KC_VOLD);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef OLED_ENABLE
 | 
			
		||||
 | 
			
		||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
			
		||||
    return OLED_ROTATION_90;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* KEYBOARD PET START */
 | 
			
		||||
 | 
			
		||||
/* settings */
 | 
			
		||||
#define MIN_WALK_SPEED      10
 | 
			
		||||
#define MIN_RUN_SPEED       40
 | 
			
		||||
 | 
			
		||||
/* advanced settings */
 | 
			
		||||
#define ANIM_FRAME_DURATION 200  // how long each frame lasts in ms
 | 
			
		||||
#define ANIM_SIZE           96   // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
 | 
			
		||||
 | 
			
		||||
/* timers */
 | 
			
		||||
uint32_t anim_timer = 0;
 | 
			
		||||
uint32_t anim_sleep = 0;
 | 
			
		||||
 | 
			
		||||
/* current frame */
 | 
			
		||||
uint8_t current_frame = 0;
 | 
			
		||||
 | 
			
		||||
/* status variables */
 | 
			
		||||
int   current_wpm = 0;
 | 
			
		||||
led_t led_usb_state;
 | 
			
		||||
 | 
			
		||||
bool isSneaking = false;
 | 
			
		||||
bool isJumping  = false;
 | 
			
		||||
bool showedJump = true;
 | 
			
		||||
 | 
			
		||||
/* logic */
 | 
			
		||||
static void render_luna(int LUNA_X, int LUNA_Y) {
 | 
			
		||||
    /* Sit */
 | 
			
		||||
    static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   },
 | 
			
		||||
 | 
			
		||||
                                                   /* 'sit2', 32x22px */
 | 
			
		||||
                                                   {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
 | 
			
		||||
 | 
			
		||||
    /* Walk */
 | 
			
		||||
    static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    },
 | 
			
		||||
 | 
			
		||||
                                                    /* 'walk2', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    }};
 | 
			
		||||
 | 
			
		||||
    /* Run */
 | 
			
		||||
    static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   },
 | 
			
		||||
 | 
			
		||||
                                                   /* 'run2', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   }};
 | 
			
		||||
 | 
			
		||||
    /* Bark */
 | 
			
		||||
    static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    },
 | 
			
		||||
 | 
			
		||||
                                                    /* 'bark2', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    }};
 | 
			
		||||
 | 
			
		||||
    /* Sneak */
 | 
			
		||||
    static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */
 | 
			
		||||
                                                     {
 | 
			
		||||
                                                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                     },
 | 
			
		||||
 | 
			
		||||
                                                     /* 'sneak2', 32x22px */
 | 
			
		||||
                                                     {
 | 
			
		||||
                                                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                     }};
 | 
			
		||||
 | 
			
		||||
    /* animation */
 | 
			
		||||
    void animate_luna(void) {
 | 
			
		||||
        /* jump */
 | 
			
		||||
        if (isJumping || !showedJump) {
 | 
			
		||||
            /* clear */
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y + 2);
 | 
			
		||||
            oled_write("     ", false);
 | 
			
		||||
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y - 1);
 | 
			
		||||
 | 
			
		||||
            showedJump = true;
 | 
			
		||||
        } else {
 | 
			
		||||
            /* clear */
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y - 1);
 | 
			
		||||
            oled_write("     ", false);
 | 
			
		||||
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* switch frame */
 | 
			
		||||
        current_frame = (current_frame + 1) % 2;
 | 
			
		||||
 | 
			
		||||
        /* current status */
 | 
			
		||||
        if (led_usb_state.caps_lock) {
 | 
			
		||||
            oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (isSneaking) {
 | 
			
		||||
            oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (current_wpm <= MIN_WALK_SPEED) {
 | 
			
		||||
            oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (current_wpm <= MIN_RUN_SPEED) {
 | 
			
		||||
            oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* animation timer */
 | 
			
		||||
    if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
 | 
			
		||||
        anim_timer = timer_read32();
 | 
			
		||||
        animate_luna();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* this fixes the screen on and off bug */
 | 
			
		||||
    if (current_wpm > 0) {
 | 
			
		||||
        oled_on();
 | 
			
		||||
        anim_sleep = timer_read32();
 | 
			
		||||
    } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
 | 
			
		||||
        oled_off();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* KEYBOARD PET END */
 | 
			
		||||
 | 
			
		||||
static void print_status_narrow(void) {
 | 
			
		||||
    render_luna(0, 13);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void oled_task_user(void) {
 | 
			
		||||
    /* KEYBOARD PET VARIABLES START */
 | 
			
		||||
 | 
			
		||||
    current_wpm   = get_current_wpm();
 | 
			
		||||
    led_usb_state = host_keyboard_led_state();
 | 
			
		||||
 | 
			
		||||
    /* KEYBOARD PET VARIABLES END */
 | 
			
		||||
 | 
			
		||||
    print_status_narrow();
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
             
 | 
			
		||||
    /* KEYBOARD PET STATUS START */
 | 
			
		||||
 | 
			
		||||
        case KC_LCTL:
 | 
			
		||||
        case KC_RCTL:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                isSneaking = true;
 | 
			
		||||
            } else {
 | 
			
		||||
                isSneaking = false;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case KC_SPC:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                isJumping  = true;
 | 
			
		||||
                showedJump = false;
 | 
			
		||||
            } else {
 | 
			
		||||
                isJumping = false;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
            /* KEYBOARD PET STATUS END */
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										2
									
								
								keyboards/kikoslab/ellora65/keymaps/default/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/kikoslab/ellora65/keymaps/default/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
OLED_ENABLE = yes
 | 
			
		||||
WPM_ENABLE = yes
 | 
			
		||||
							
								
								
									
										249
									
								
								keyboards/kikoslab/ellora65/keymaps/via/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										249
									
								
								keyboards/kikoslab/ellora65/keymaps/via/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,249 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Kiko <kikosdesignlab@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
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
 [0] = LAYOUT_all(
 | 
			
		||||
    KC_MUTE,   KC_ESC ,   KC_1   ,   KC_2   ,   KC_3   ,   KC_4   ,   KC_5   ,   KC_6   ,   KC_7   ,   KC_8   ,   KC_9   ,   KC_0   ,   KC_MINS,   KC_EQL ,   KC_BSPC,   KC_BSPC,
 | 
			
		||||
    KC_F13 ,   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_F14 ,   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_ENT ,   KC_ENT ,   KC_INS, 
 | 
			
		||||
    KC_F15 ,   KC_LSFT,   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_DEL, 
 | 
			
		||||
    KC_F16 ,   KC_LCTL,   KC_LGUI,   KC_LALT,              MO(1)  ,              KC_SPC ,              MO(1)  ,              MO(1)  ,   MO(1)  ,   KC_LEFT,   KC_DOWN,   KC_RGHT),
 | 
			
		||||
 | 
			
		||||
 [1] = LAYOUT_all(
 | 
			
		||||
    KC_DEL ,   KC_GRV ,   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_BSPC,   KC_TRNS,
 | 
			
		||||
    KC_F17 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,                
 | 
			
		||||
    KC_F18 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F19 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F20 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,              RESET  ,              KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS),
 | 
			
		||||
 | 
			
		||||
 [2] = LAYOUT_all(
 | 
			
		||||
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_BSPC,   KC_TRNS,
 | 
			
		||||
    KC_F17 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,                
 | 
			
		||||
    KC_F18 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F19 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F20 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,              KC_TRNS,              KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS),
 | 
			
		||||
 | 
			
		||||
 [3] = LAYOUT_all(
 | 
			
		||||
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_BSPC,   KC_TRNS,
 | 
			
		||||
    KC_F17 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,                
 | 
			
		||||
    KC_F18 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F19 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, 
 | 
			
		||||
    KC_F20 ,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,              KC_TRNS,              KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
    if (clockwise) {
 | 
			
		||||
        tap_code(KC_VOLU);
 | 
			
		||||
    } else {
 | 
			
		||||
        tap_code(KC_VOLD);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef OLED_ENABLE
 | 
			
		||||
 | 
			
		||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
			
		||||
    return OLED_ROTATION_90;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* KEYBOARD PET START */
 | 
			
		||||
 | 
			
		||||
/* settings */
 | 
			
		||||
#define MIN_WALK_SPEED      10
 | 
			
		||||
#define MIN_RUN_SPEED       40
 | 
			
		||||
 | 
			
		||||
/* advanced settings */
 | 
			
		||||
#define ANIM_FRAME_DURATION 200  // how long each frame lasts in ms
 | 
			
		||||
#define ANIM_SIZE           96   // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
 | 
			
		||||
 | 
			
		||||
/* timers */
 | 
			
		||||
uint32_t anim_timer = 0;
 | 
			
		||||
uint32_t anim_sleep = 0;
 | 
			
		||||
 | 
			
		||||
/* current frame */
 | 
			
		||||
uint8_t current_frame = 0;
 | 
			
		||||
 | 
			
		||||
/* status variables */
 | 
			
		||||
int   current_wpm = 0;
 | 
			
		||||
led_t led_usb_state;
 | 
			
		||||
 | 
			
		||||
bool isSneaking = false;
 | 
			
		||||
bool isJumping  = false;
 | 
			
		||||
bool showedJump = true;
 | 
			
		||||
 | 
			
		||||
/* logic */
 | 
			
		||||
static void render_luna(int LUNA_X, int LUNA_Y) {
 | 
			
		||||
    /* Sit */
 | 
			
		||||
    static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   },
 | 
			
		||||
 | 
			
		||||
                                                   /* 'sit2', 32x22px */
 | 
			
		||||
                                                   {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
 | 
			
		||||
 | 
			
		||||
    /* Walk */
 | 
			
		||||
    static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    },
 | 
			
		||||
 | 
			
		||||
                                                    /* 'walk2', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    }};
 | 
			
		||||
 | 
			
		||||
    /* Run */
 | 
			
		||||
    static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   },
 | 
			
		||||
 | 
			
		||||
                                                   /* 'run2', 32x22px */
 | 
			
		||||
                                                   {
 | 
			
		||||
                                                       0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                   }};
 | 
			
		||||
 | 
			
		||||
    /* Bark */
 | 
			
		||||
    static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    },
 | 
			
		||||
 | 
			
		||||
                                                    /* 'bark2', 32x22px */
 | 
			
		||||
                                                    {
 | 
			
		||||
                                                        0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                    }};
 | 
			
		||||
 | 
			
		||||
    /* Sneak */
 | 
			
		||||
    static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */
 | 
			
		||||
                                                     {
 | 
			
		||||
                                                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                     },
 | 
			
		||||
 | 
			
		||||
                                                     /* 'sneak2', 32x22px */
 | 
			
		||||
                                                     {
 | 
			
		||||
                                                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
                                                     }};
 | 
			
		||||
 | 
			
		||||
    /* animation */
 | 
			
		||||
    void animate_luna(void) {
 | 
			
		||||
        /* jump */
 | 
			
		||||
        if (isJumping || !showedJump) {
 | 
			
		||||
            /* clear */
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y + 2);
 | 
			
		||||
            oled_write("     ", false);
 | 
			
		||||
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y - 1);
 | 
			
		||||
 | 
			
		||||
            showedJump = true;
 | 
			
		||||
        } else {
 | 
			
		||||
            /* clear */
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y - 1);
 | 
			
		||||
            oled_write("     ", false);
 | 
			
		||||
 | 
			
		||||
            oled_set_cursor(LUNA_X, LUNA_Y);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* switch frame */
 | 
			
		||||
        current_frame = (current_frame + 1) % 2;
 | 
			
		||||
 | 
			
		||||
        /* current status */
 | 
			
		||||
        if (led_usb_state.caps_lock) {
 | 
			
		||||
            oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (isSneaking) {
 | 
			
		||||
            oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (current_wpm <= MIN_WALK_SPEED) {
 | 
			
		||||
            oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else if (current_wpm <= MIN_RUN_SPEED) {
 | 
			
		||||
            oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* animation timer */
 | 
			
		||||
    if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
 | 
			
		||||
        anim_timer = timer_read32();
 | 
			
		||||
        animate_luna();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* this fixes the screen on and off bug */
 | 
			
		||||
    if (current_wpm > 0) {
 | 
			
		||||
        oled_on();
 | 
			
		||||
        anim_sleep = timer_read32();
 | 
			
		||||
    } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
 | 
			
		||||
        oled_off();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* KEYBOARD PET END */
 | 
			
		||||
 | 
			
		||||
static void print_status_narrow(void) {
 | 
			
		||||
    render_luna(0, 13);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void oled_task_user(void) {
 | 
			
		||||
    /* KEYBOARD PET VARIABLES START */
 | 
			
		||||
 | 
			
		||||
    current_wpm   = get_current_wpm();
 | 
			
		||||
    led_usb_state = host_keyboard_led_state();
 | 
			
		||||
 | 
			
		||||
    /* KEYBOARD PET VARIABLES END */
 | 
			
		||||
 | 
			
		||||
    print_status_narrow();
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
             
 | 
			
		||||
    /* KEYBOARD PET STATUS START */
 | 
			
		||||
 | 
			
		||||
        case KC_LCTL:
 | 
			
		||||
        case KC_RCTL:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                isSneaking = true;
 | 
			
		||||
            } else {
 | 
			
		||||
                isSneaking = false;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case KC_SPC:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                isJumping  = true;
 | 
			
		||||
                showedJump = false;
 | 
			
		||||
            } else {
 | 
			
		||||
                isJumping = false;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
            /* KEYBOARD PET STATUS END */
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										3
									
								
								keyboards/kikoslab/ellora65/keymaps/via/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/kikoslab/ellora65/keymaps/via/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
VIA_ENABLE = yes
 | 
			
		||||
OLED_ENABLE = yes
 | 
			
		||||
WPM_ENABLE = yes
 | 
			
		||||
							
								
								
									
										21
									
								
								keyboards/kikoslab/ellora65/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/kikoslab/ellora65/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
# Ellora65
 | 
			
		||||
 | 
			
		||||
65% With Macro Column, Encoder, and OLED
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: Kiko
 | 
			
		||||
* Hardware Supported: KL-65 PCB
 | 
			
		||||
* Hardware Availability: https://www.kikoslab.com
 | 
			
		||||
 | 
			
		||||
## Bootloader
 | 
			
		||||
 | 
			
		||||
Enter the bootloader in 3 ways:
 | 
			
		||||
 | 
			
		||||
* **Bootmagic reset**: Hold down the key at (1,0) in the matrix (escape key) and plug in the keyboard
 | 
			
		||||
* **Physical reset button**: Briefly press the button on the back of the PCB
 | 
			
		||||
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make kikoslab/ellora65:default
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
							
								
								
									
										19
									
								
								keyboards/kikoslab/ellora65/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/kikoslab/ellora65/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
# MCU name
 | 
			
		||||
MCU = atmega32u4
 | 
			
		||||
 | 
			
		||||
# Bootloader selection
 | 
			
		||||
BOOTLOADER = atmel-dfu
 | 
			
		||||
 | 
			
		||||
# Build Options
 | 
			
		||||
#   change yes to no to disable
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
 | 
			
		||||
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
 | 
			
		||||
NKRO_ENABLE = no            # Enable N-Key Rollover
 | 
			
		||||
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
			
		||||
RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output
 | 
			
		||||
ENCODER_ENABLE = yes
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
VIA_ENABLE = yes
 | 
			
		||||
VIA_ENABLE = yes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue