forked from mirrors/qmk_userspace
		
	[Keymap] Add delivrance's keymap for 40percentclub/mf68 (#10294)
This commit is contained in:
		
					parent
					
						
							
								b3508271f8
							
						
					
				
			
			
				commit
				
					
						e4cf0a40a5
					
				
			
		
					 4 changed files with 322 additions and 0 deletions
				
			
		
							
								
								
									
										42
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Dan's Magicforce 68 (MF68) QMK Keyboard
 | 
				
			||||||
 | 
					 * Copyright (C) Dan <https://github.com/delivrance>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This file is part of Dan's MF68 QMK Keyboard.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Dan's MF68 QMK Keyboard 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 3 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Dan's MF68 QMK Keyboard 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 Dan's MF68 QMK Keyboard.  If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef MANUFACTURER
 | 
				
			||||||
 | 
					#define MANUFACTURER Dan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef PRODUCT
 | 
				
			||||||
 | 
					#define PRODUCT Magicforce 68 QMK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef BACKLIGHT_LEVELS
 | 
				
			||||||
 | 
					#define BACKLIGHT_LEVELS 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Disable backlight breathing
 | 
				
			||||||
 | 
					#undef BACKLIGHT_BREATHING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Set USB polling rate to 1000 Hz
 | 
				
			||||||
 | 
					#define USB_POLLING_INTERVAL_MS 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Enable NKRO on boot
 | 
				
			||||||
 | 
					#define FORCE_NKRO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Backlight idle timeout in seconds
 | 
				
			||||||
 | 
					#define BACKLIGHT_IDLE_TIMEOUT 1200
 | 
				
			||||||
							
								
								
									
										232
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										232
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,232 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Dan's Magicforce 68 (MF68) QMK Keyboard
 | 
				
			||||||
 | 
					 * Copyright (C) Dan <https://github.com/delivrance>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This file is part of Dan's MF68 QMK Keyboard.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Dan's MF68 QMK Keyboard 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 3 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Dan's MF68 QMK Keyboard 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 Dan's MF68 QMK Keyboard.  If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define KC_ KC_TRNS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define KC_FN1 MO(_FN)
 | 
				
			||||||
 | 
					#define KC_FN2 LT(_FN, KC_CAPS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define KC_BLUP BL_INC   // Backlight increase
 | 
				
			||||||
 | 
					#define KC_BLDN BL_DEC   // Backlight decrease
 | 
				
			||||||
 | 
					#define KC_BLTOG BL_TOGG // Backlight toggle
 | 
				
			||||||
 | 
					#define KC_TERM TERM_ON  // Terminal mode on
 | 
				
			||||||
 | 
					#define KC_REC1 DM_REC1  // Record macro 1
 | 
				
			||||||
 | 
					#define KC_PLY1 DM_PLY1  // Play macro 1
 | 
				
			||||||
 | 
					#define KC_REC2 DM_REC2  // Record macro 2
 | 
				
			||||||
 | 
					#define KC_PLY2 DM_PLY2  // Play macro 1
 | 
				
			||||||
 | 
					#define KC_RSTP DM_RSTP  // Stop macro recording
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum {
 | 
				
			||||||
 | 
					    _QWERTY,
 | 
				
			||||||
 | 
					    _FN
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓
 | 
				
			||||||
 | 
					   ┃Esc ┃ 1! ┃ 2@ ┃ 3# ┃ 4$ ┃ 5% ┃ 6^ ┃ 7& ┃ 8* ┃ 9( ┃ 0) ┃ -_ ┃ =+ ┃   ←─   ┃ ┃Ins ┃PgUp┃
 | 
				
			||||||
 | 
					   ┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫
 | 
				
			||||||
 | 
					   ┃ Tab  ┃ Q  ┃ W  ┃ E  ┃ R  ┃ T  ┃ Y  ┃ U  ┃ I  ┃ O  ┃ P  ┃ [{ ┃ ]} ┃  \|  ┃ ┃Del ┃PgDn┃
 | 
				
			||||||
 | 
					   ┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛
 | 
				
			||||||
 | 
					   ┃  Caps  ┃ A  ┃ S  ┃ D  ┃ F  ┃ G  ┃ H  ┃ J  ┃ K  ┃ L  ┃ ;: ┃ '" ┃  Enter  ┃  Magicforce
 | 
				
			||||||
 | 
					   ┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓
 | 
				
			||||||
 | 
					   ┃   Shift  ┃ Z  ┃ X  ┃ C  ┃ V  ┃ B  ┃ N  ┃ M  ┃ ,< ┃ .> ┃ /? ┃    Shift   ┃ ┃ ↑  ┃ Dan
 | 
				
			||||||
 | 
					   ┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓
 | 
				
			||||||
 | 
					   ┃Ctrl ┃ GUI ┃ Alt ┃             ━━━━━             ┃ Alt ┃ Fn  ┃Ctrl ┃  ┃ ←  ┃ ↓  ┃ →  ┃
 | 
				
			||||||
 | 
					   ┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛  ┗━━━━┻━━━━┻━━━━┛ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// clang-format off
 | 
				
			||||||
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					[_QWERTY] = LAYOUT_kc( /* Default layer
 | 
				
			||||||
 | 
					   ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */
 | 
				
			||||||
 | 
					    GESC, 1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 0  ,MINS,EQL ,  BSPC  ,  INS ,PGUP, /*
 | 
				
			||||||
 | 
					   ┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫ */
 | 
				
			||||||
 | 
					     TAB  , Q  , W  , E  , R  , T  , Y  , U  , I  , O  , P  ,LBRC,RBRC, BSLS ,  DEL ,PGDN, /*
 | 
				
			||||||
 | 
					   ┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛ */
 | 
				
			||||||
 | 
					      FN2   , A  , S  , D  , F  , G  , H  , J  , K  , L  ,SCLN,QUOT,  ENTER  ,             /*
 | 
				
			||||||
 | 
					   ┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓      */
 | 
				
			||||||
 | 
					       LSFT   , Z  , X  , C  , V  , B  , N  , M  ,COMM,DOT ,SLSH,    RSFT    ,   UP ,      /*
 | 
				
			||||||
 | 
					   ┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓ */
 | 
				
			||||||
 | 
					    LCTL ,LGUI ,LALT ,             SPACE             ,RALT , FN1 ,RCTL ,   LEFT,DOWN,RGHT  /*
 | 
				
			||||||
 | 
					   ┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛  ┗━━━━┻━━━━┻━━━━┛ */),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[_FN] = LAYOUT_kc( /* FN & CAPS layer
 | 
				
			||||||
 | 
					   ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */
 | 
				
			||||||
 | 
					    GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, F11, F12,  RSTP  ,  PSCR,HOME, /*
 | 
				
			||||||
 | 
					   ┣Esc ┻ 1! ┻ 2@ ┻ 3# ┻ 4$ ┻ 5% ┻ 6^ ┻ 7& ┻ 8* ┻ 9( ┻ 0) ┻ -_ ┻ =+ ┻━┳━ ←─ ━┫ ┣Ins ╋PgUp┫ */
 | 
				
			||||||
 | 
					          ,PLY1,PLY2,    ,    ,    ,    ,    , 7  , 8  , 9  ,BLDN,BLUP,BLTOG ,      ,END , /*
 | 
				
			||||||
 | 
					   ┣ Tab ━┻ Q ━┻ W ━┻ E ━┻ R ━┻ T ━┻ Y ━┻ U ━┻ I ━┻ O ━┻ P ━┻ [{ ┻ ]} ┻━ \| ━┫ ┗Del ┻PgDn┛ */
 | 
				
			||||||
 | 
					            ,    ,    ,    ,    ,    ,    ,    , 4  , 5  , 6  ,    ,   TERM  ,             /*
 | 
				
			||||||
 | 
					   ┣━ Caps ━┻ A ━┻ S ━┻ D ━┻ F ━┻ G ━┻ H ━┻ J ━┻ K ━┻ L ━┻ ;: ┻ '" ┻━ Enter ━┫ ┏━━━━┓      */
 | 
				
			||||||
 | 
					              ,REC1,REC2,    ,    ,MSTP,    ,MUTE, 1  , 2  , 3  ,            ,  VOLU,      /*
 | 
				
			||||||
 | 
					   ┣━━ Shift ━┻ Z ━┻ X ━┻ C ━┻ V ━┻ B ━┻ N ━┻ M ━┻ ,< ┻ .> ╋ /? ┻┳━━ Shift ━━┻━╋ ↑ ━╋━━━━┓ */
 | 
				
			||||||
 | 
					         ,     ,     ,             MPLY              ,  0  ,     ,     ,   MPRV,VOLD,MNXT  /*
 | 
				
			||||||
 | 
					   ┗Ctrl ┻ GUI ┻ Alt ┻━━━━━━━━━━━━ Space ━━━━━━━━━━━━┻ Alt ┻ Fn ━┻Ctrl ┛  ┗ ← ━┻ ↓ ━┻ → ━┛ */)
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					// clang-format on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Initialization code
 | 
				
			||||||
 | 
					// -------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void keyboard_post_init_user(void) {
 | 
				
			||||||
 | 
					    backlight_level(2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Custom backlight driver
 | 
				
			||||||
 | 
					// -----------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// http://jared.geek.nz/2013/feb/linear-led-pwm
 | 
				
			||||||
 | 
					float cie1931(float x) {
 | 
				
			||||||
 | 
					    x *= 100.0 / BACKLIGHT_LEVELS;
 | 
				
			||||||
 | 
					    float y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (x < 8) {
 | 
				
			||||||
 | 
					        y = x / 902.3;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        y = (x + 16.0) / 116.0;
 | 
				
			||||||
 | 
					        y = y * y * y;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return round(y * 255);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void backlight_init_ports(void) {
 | 
				
			||||||
 | 
					    setPinOutput(BACKLIGHT_PIN);
 | 
				
			||||||
 | 
					    writePinLow(BACKLIGHT_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TCCR1A = _BV(COM1A1) | _BV(WGM11);
 | 
				
			||||||
 | 
					    TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ICR1 = 0xFFU;  // Set PWM levels to 255 (enables high-frequency PWM)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void backlight_set(uint8_t level) {
 | 
				
			||||||
 | 
					    if (level > BACKLIGHT_LEVELS) {
 | 
				
			||||||
 | 
					        level = BACKLIGHT_LEVELS;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (level == 0) {
 | 
				
			||||||
 | 
					        TCCR1A &= ~(_BV(COM1A1));  // Disable PWM
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        TCCR1A |= _BV(COM1A1);  // Enable PWM
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OCR1A = cie1931(level);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Custom macro hooks
 | 
				
			||||||
 | 
					// ------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Redefine with lower delay
 | 
				
			||||||
 | 
					void led_blink(void) {
 | 
				
			||||||
 | 
					    backlight_toggle();
 | 
				
			||||||
 | 
					    wait_ms(25);
 | 
				
			||||||
 | 
					    backlight_toggle();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void dynamic_macro_record_start_user(void) {
 | 
				
			||||||
 | 
					    led_blink();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void dynamic_macro_play_user(int8_t direction) {
 | 
				
			||||||
 | 
					    led_blink();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) {
 | 
				
			||||||
 | 
					    led_blink();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void dynamic_macro_record_end_user(int8_t direction) {
 | 
				
			||||||
 | 
					    led_blink();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Custom Caps Lock backlight behaviour
 | 
				
			||||||
 | 
					// ------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void led_set_user(uint8_t usb_led) {
 | 
				
			||||||
 | 
					    // This exists because I don't like the backlight to turn OFF when the Caps Lock is ON.
 | 
				
			||||||
 | 
					    // That is, this will turn the backlight ON (at half the brightness) when the Caps Lock is ON as well.
 | 
				
			||||||
 | 
					    static bool prev_is_caps_on;
 | 
				
			||||||
 | 
					    bool is_caps_on = IS_LED_ON(usb_led, USB_LED_CAPS_LOCK);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (prev_is_caps_on != is_caps_on) {
 | 
				
			||||||
 | 
					        prev_is_caps_on = is_caps_on;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (is_caps_on) {
 | 
				
			||||||
 | 
					            backlight_set(BACKLIGHT_LEVELS / 2);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if (is_backlight_enabled()) {
 | 
				
			||||||
 | 
					                backlight_set(get_backlight_level());
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                backlight_set(0);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Turn on the Pro Micro's on-board LEDs for Caps Lock
 | 
				
			||||||
 | 
					    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
 | 
				
			||||||
 | 
					        // Set to low
 | 
				
			||||||
 | 
					        setPinOutput(B0);
 | 
				
			||||||
 | 
					        writePinLow(B0);
 | 
				
			||||||
 | 
					        setPinOutput(D5);
 | 
				
			||||||
 | 
					        writePinLow(D5);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        // Set to Hi-Z
 | 
				
			||||||
 | 
					        setPinInput(B0);
 | 
				
			||||||
 | 
					        setPinInput(D5);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Backlight idle timeout feature
 | 
				
			||||||
 | 
					// ------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static uint32_t timer;
 | 
				
			||||||
 | 
					static bool is_idle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_scan_user() {
 | 
				
			||||||
 | 
					    // Check the timer only if the keyboard is not idle
 | 
				
			||||||
 | 
					    if (!is_idle) {
 | 
				
			||||||
 | 
					        if (timer_elapsed32(timer) >= (uint32_t) BACKLIGHT_IDLE_TIMEOUT * 1000) {
 | 
				
			||||||
 | 
					            is_idle = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Both backlight_level and backlight_level_noeeprom modify the global backlight config (not useful)
 | 
				
			||||||
 | 
					            // Instead, use backlight_set in order to restore the current backlight level later on
 | 
				
			||||||
 | 
					            backlight_set(0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
 | 
					    // Reset timer on each keypress
 | 
				
			||||||
 | 
					    timer = timer_read32();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Enable backlight back only when keyboard is idling (which implies the backlight was turned off previously)
 | 
				
			||||||
 | 
					    if (is_idle) {
 | 
				
			||||||
 | 
					        is_idle = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Set back the original backlight level only if it is actually enabled globally
 | 
				
			||||||
 | 
					        if (is_backlight_enabled()) {
 | 
				
			||||||
 | 
					            // The current backlight level can be obtained with get_backlight_level
 | 
				
			||||||
 | 
					            backlight_set(get_backlight_level());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					# Dan's Magicforce 68 (MF68) QMK Keyboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> https://github.com/delivrance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓
 | 
				
			||||||
 | 
					┃Esc ┃ 1! ┃ 2@ ┃ 3# ┃ 4$ ┃ 5% ┃ 6^ ┃ 7& ┃ 8* ┃ 9( ┃ 0) ┃ -_ ┃ =+ ┃   ←─   ┃ ┃Ins ┃PgUp┃
 | 
				
			||||||
 | 
					┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫
 | 
				
			||||||
 | 
					┃ Tab  ┃ Q  ┃ W  ┃ E  ┃ R  ┃ T  ┃ Y  ┃ U  ┃ I  ┃ O  ┃ P  ┃ [{ ┃ ]} ┃  \|  ┃ ┃Del ┃PgDn┃
 | 
				
			||||||
 | 
					┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛
 | 
				
			||||||
 | 
					┃  Caps  ┃ A  ┃ S  ┃ D  ┃ F  ┃ G  ┃ H  ┃ J  ┃ K  ┃ L  ┃ ;: ┃ '" ┃  Enter  ┃  Magicforce
 | 
				
			||||||
 | 
					┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓
 | 
				
			||||||
 | 
					┃   Shift  ┃ Z  ┃ X  ┃ C  ┃ V  ┃ B  ┃ N  ┃ M  ┃ ,< ┃ .> ┃ /? ┃    Shift   ┃ ┃ ↑  ┃ Dan
 | 
				
			||||||
 | 
					┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓
 | 
				
			||||||
 | 
					┃Ctrl ┃ GUI ┃ Alt ┃             ━━━━━             ┃ Alt ┃ Fn  ┃Ctrl ┃  ┃ ←  ┃ ↓  ┃ →  ┃
 | 
				
			||||||
 | 
					┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛  ┗━━━━┻━━━━┻━━━━┛
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Right ALT and FN keys swapped.
 | 
				
			||||||
 | 
					- USB Polling rate set to 1000 Hz (1 ms).
 | 
				
			||||||
 | 
					- Dynamic macros enabled (2 macros).
 | 
				
			||||||
 | 
					- Transient EEPROM to avoid wearing (r/w from/to RAM).
 | 
				
			||||||
 | 
					- NKRO enabled on boot (up to 248 keys at once).
 | 
				
			||||||
 | 
					- CAPS LOCK key used as alias to the FN key.
 | 
				
			||||||
 | 
					- Pro Micro's on-board LEDs used for CAPS LOCK status.
 | 
				
			||||||
 | 
					- Backlight also used as CAPS LOCK status indicator.
 | 
				
			||||||
 | 
					- Both Grave and Tilde characters embedded in ESC.
 | 
				
			||||||
 | 
					- Media control keys and extra number keys (numpad).
 | 
				
			||||||
 | 
					- Flicker-free backlight thanks to high-frequency PWM mode.
 | 
				
			||||||
 | 
					- Linear backlight brightness intensity (better for human eyes).
 | 
				
			||||||
 | 
					- Backlight turns off automatically after 20 minutes idle.
 | 
				
			||||||
 | 
					- Backlight brightness levels set to 20 (5% steps) + 1 (off).
 | 
				
			||||||
 | 
					- Backlight breathing completely disabled.
 | 
				
			||||||
 | 
					- Link Time Optimizations to reduce compiled size.
 | 
				
			||||||
 | 
					- QMK Terminal enabled for fun (pretty useless in practice).
 | 
				
			||||||
 | 
					- Performing ~1550 matrix scans per second.
 | 
				
			||||||
							
								
								
									
										10
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					BACKLIGHT_DRIVER = custom
 | 
				
			||||||
 | 
					NKRO_ENABLE = yes
 | 
				
			||||||
 | 
					TERMINAL_ENABLE = yes
 | 
				
			||||||
 | 
					DYNAMIC_MACRO_ENABLE = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use RAM (fake EEPROM, transient) instead of real EEPROM
 | 
				
			||||||
 | 
					EEPROM_DRIVER = transient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# LTO: Link Time Optimizations. Reduce compiled size
 | 
				
			||||||
 | 
					LTO_ENABLE = yes
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue