[Keyboard] [redox_w] add dvorak layout and white led support (#16259)
Co-authored-by: Drashna Jaelre <drashna@live.com>
This commit is contained in:
		
							parent
							
								
									b1f8622513
								
							
						
					
					
						commit
						249eb87102
					
				
					 4 changed files with 188 additions and 18 deletions
				
			
		
							
								
								
									
										128
									
								
								keyboards/redox_w/keymaps/dvorak/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								keyboards/redox_w/keymaps/dvorak/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,128 @@
 | 
			
		|||
/* Copyright 2021 66f94eae(66f94eae@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
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
			
		||||
// entirely and just use numbers.
 | 
			
		||||
enum layers {
 | 
			
		||||
    _DVORAK,
 | 
			
		||||
    _SYMB,
 | 
			
		||||
    _QWERTY,
 | 
			
		||||
    _ADJUST,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
[_DVORAK] = LAYOUT(
 | 
			
		||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
			
		||||
    KC_GESC  ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_BSPC ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_TAB  ,KC_QUOT ,KC_COMM ,KC_DOT  ,KC_P    ,KC_Y    ,KC_LBRC,                          KC_RBRC ,KC_F    ,KC_G    ,KC_C    ,KC_R    ,KC_L    ,KC_SLSH  ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LCTL  ,KC_A   ,KC_O    ,KC_E    ,KC_U    ,KC_I    ,KC_MINS,                          KC_EQL   ,KC_D    ,KC_H    ,KC_T    ,KC_N    ,KC_S    ,KC_BSLS ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LSFT ,KC_SCLN ,KC_Q    ,KC_J    ,KC_K    ,KC_X    ,KC_PGUP ,KC_HOME ,        KC_END  ,KC_PGDN ,KC_B    ,KC_M    ,KC_W   ,KC_V     ,KC_Z    ,KC_RSFT ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_CAPS ,KC_APP ,KC_LALT ,KC_LGUI  ,    LT(3,KC_MUTE), KC_SPC  ,KC_INS  ,        KC_DEL  ,KC_ENT  ,    KC_RALT ,     KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RGHT
 | 
			
		||||
//└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_SYMB] = LAYOUT(
 | 
			
		||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
			
		||||
    KC_GESC  ,KC_F1   ,KC_F2   ,KC_F3   ,KC_F4   ,KC_F5   ,                                            KC_F8   ,KC_F9   ,KC_F10   ,KC_F11  ,KC_F12 ,KC_BSPC ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_TAB , KC_BTN1 ,KC_MS_U  ,KC_BTN2 ,KC_WH_U ,KC_COPY ,KC_F6 ,                            KC_F7  ,KC_COPY ,KC_P7 	,KC_P8 	 ,KC_P9   ,KC_MPRV ,KC_PPLS ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LCTL ,KC_MS_L ,KC_MS_D  ,KC_MS_R ,KC_WH_D ,KC_CUT  ,KC_VOLD ,                          KC_VOLU ,KC_CUT ,KC_P4 	,KC_P5   ,KC_P6   ,KC_MNXT ,KC_PMNS ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LSFT ,KC_WH_L ,KC_UP   ,KC_WH_R ,KC_LGUI ,KC_PSTE ,KC_WH_U ,KC_SLCK ,        KC_NLCK ,KC_WH_D ,KC_PSTE ,KC_P1 	,KC_P2   ,KC_P3   ,KC_PEQL ,KC_PAST ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_CAPS ,KC_LEFT ,KC_DOWN ,KC_RGHT, LT(3,KC_MUTE)     ,KC_SPC  ,KC_ESC ,        KC_DEL  ,KC_ENT ,    KC_APP   ,     KC_P0   ,KC_PDOT ,KC_PENT ,KC_PSLS 
 | 
			
		||||
//└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_QWERTY] = LAYOUT(
 | 
			
		||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
			
		||||
    KC_GESC  ,KC_1     ,KC_2   ,KC_3    ,KC_4     ,KC_5   ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9     ,KC_0  ,KC_BSPC,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_TAB  ,KC_Q     ,KC_W   ,KC_E    ,KC_R    ,KC_T    ,KC_MINS ,                          KC_EQL  ,KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P    ,KC_BSLS ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LCTL ,KC_A    ,KC_S    ,KC_D    ,KC_F    ,KC_G    ,KC_LBRC ,                          KC_RBRC ,KC_H    ,KC_J    ,KC_K    ,KC_L    ,KC_SCLN ,KC_QUOT ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LSFT ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,KC_HOME ,KC_PGUP ,        KC_PGDN ,KC_END   ,KC_N   ,KC_M    ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_CAPS ,KC_LGUI ,KC_LALT , KC_APP  ,LT(3,KC_MUTE) ,   KC_SPC ,KC_INS ,          KC_DEL ,KC_ENT       , KC_APP      , KC_LEFT ,KC_UP   ,KC_DOWN  ,KC_RGHT
 | 
			
		||||
//└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_ADJUST] = LAYOUT(
 | 
			
		||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
			
		||||
    KC_GESC   ,TO(0)   ,TO(1)   ,TO(2)   ,KC_NO   ,KC_NO   ,                                            KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO  ,KC_NO   ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,                          KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,                          KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_LSFT  ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO           ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO ,KC_RSFT ,
 | 
			
		||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
    KC_NO   ,KC_NO   ,KC_NO   ,KC_LGUI        ,LT(3,KC_MUTE), KC_NO   ,KC_NO           ,KC_NO   ,KC_NO        ,KC_APP    ,KC_NO  ,KC_NO   ,KC_NO   ,KC_NO
 | 
			
		||||
//└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state)
 | 
			
		||||
{
 | 
			
		||||
    switch (get_highest_layer(state)) {
 | 
			
		||||
        case _DVORAK:
 | 
			
		||||
            blu_led_off;
 | 
			
		||||
            grn_led_off;
 | 
			
		||||
            break;
 | 
			
		||||
        case _SYMB:
 | 
			
		||||
            blu_led_on;
 | 
			
		||||
            grn_led_off;
 | 
			
		||||
            break;
 | 
			
		||||
        case _QWERTY:
 | 
			
		||||
            blu_led_off;
 | 
			
		||||
            grn_led_on;
 | 
			
		||||
            break;
 | 
			
		||||
        case _ADJUST:
 | 
			
		||||
            blu_led_on;
 | 
			
		||||
            grn_led_on;
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool led_update_user(led_t led_state)
 | 
			
		||||
{
 | 
			
		||||
    if (led_state.caps_lock) {
 | 
			
		||||
        red_led_on;
 | 
			
		||||
    } else {
 | 
			
		||||
        red_led_off;
 | 
			
		||||
    }
 | 
			
		||||
    if (led_state.num_lock) {
 | 
			
		||||
        wht_led_on;
 | 
			
		||||
    } else {
 | 
			
		||||
        wht_led_off;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								keyboards/redox_w/keymaps/dvorak/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								keyboards/redox_w/keymaps/dvorak/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
### fork from default layout,and support dvorak layout[defalut layer]
 | 
			
		||||
 | 
			
		||||
##### only use 3 layers
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Keymap: 3 Layers                   
 | 
			
		||||
-----------------                  
 | 
			
		||||
stack of layers                     
 | 
			
		||||
       ____________ precedence      
 | 
			
		||||
      /           / | high                 
 | 
			
		||||
  31 /___________// |                           
 | 
			
		||||
   :   _:_:_:_:_:__ |           
 | 
			
		||||
   3 /___________// | --- adjust   
 | 
			
		||||
   2 /___________// | --- qwerty         
 | 
			
		||||
   1 /___________// | --- symb
 | 
			
		||||
   0 /___________/  | --- dvorak[default]        
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
defalut LED indicators
 | 
			
		||||
 | 
			
		||||
RED --------- CAPS LOCK
 | 
			
		||||
 | 
			
		||||
BLUE ------- SYMB layer
 | 
			
		||||
 | 
			
		||||
GREEN----- QWERTY layer
 | 
			
		||||
 | 
			
		||||
WHITE------ NUM LOCK *in my test case,this is inefficient on mac os*
 | 
			
		||||
 | 
			
		||||
> BLUE and GREEN as a bit flag
 | 
			
		||||
> 
 | 
			
		||||
> 0                    0
 | 
			
		||||
 | 
			
		||||
| BLUE(0) | GREEN(0) | STATUS | DESCRIBE                                            |
 | 
			
		||||
|:-------:|:--------:|:------:|:--------------------------------------------------- |
 | 
			
		||||
| 0       | 0        | 0      | layer 0[dvorak] is active,and blue,green led is off |
 | 
			
		||||
| 1       | 0        | 1      | layer1[symb] is active, and blue led is on          |
 | 
			
		||||
| 0       | 1        | 2      | layer 2[qwerty] is active,and green led is on       |
 | 
			
		||||
| 1       | 1        | 3      | layer 3[adjust] is active,and blue,green led is on  |
 | 
			
		||||
| 
						 | 
				
			
			@ -1,10 +1,15 @@
 | 
			
		|||
#include "redox_w.h"
 | 
			
		||||
 | 
			
		||||
void led_init(void) {
 | 
			
		||||
	DDRD  |= (1<<1);
 | 
			
		||||
	PORTD |= (1<<1);
 | 
			
		||||
	DDRF  |= (1<<4) | (1<<5);
 | 
			
		||||
	PORTF |= (1<<4) | (1<<5);
 | 
			
		||||
    setPinOutput(D0);
 | 
			
		||||
    setPinOutput(D1);
 | 
			
		||||
    setPinOutput(F4);
 | 
			
		||||
    setPinOutput(F5);
 | 
			
		||||
    
 | 
			
		||||
    writePinHigh(D0);
 | 
			
		||||
    writePinHigh(D1);
 | 
			
		||||
    writePinHigh(F4);
 | 
			
		||||
    writePinHigh(F5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,21 +2,20 @@
 | 
			
		|||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#define red_led_off   PORTF |= (1<<5)
 | 
			
		||||
#define red_led_on    PORTF &= ~(1<<5)
 | 
			
		||||
#define blu_led_off   PORTF |= (1<<4)
 | 
			
		||||
#define blu_led_on    PORTF &= ~(1<<4)
 | 
			
		||||
#define grn_led_off   PORTD |= (1<<1)
 | 
			
		||||
#define grn_led_on    PORTD &= ~(1<<1)
 | 
			
		||||
#define red_led_off   writePinHigh(F5)
 | 
			
		||||
#define red_led_on    writePinLow(F5)
 | 
			
		||||
#define blu_led_off   writePinHigh(F4)
 | 
			
		||||
#define blu_led_on    writePinLow(F4)
 | 
			
		||||
#define grn_led_off   writePinHigh(D1)
 | 
			
		||||
#define grn_led_on    writePinLow(D1)
 | 
			
		||||
#define wht_led_off   writePinHigh(D0)
 | 
			
		||||
#define wht_led_on    writePinLow(D0)
 | 
			
		||||
 | 
			
		||||
#define set_led_off     red_led_off; grn_led_off; blu_led_off
 | 
			
		||||
#define set_led_red     red_led_on;  grn_led_off; blu_led_off
 | 
			
		||||
#define set_led_blue    red_led_off; grn_led_off; blu_led_on
 | 
			
		||||
#define set_led_green   red_led_off; grn_led_on;  blu_led_off
 | 
			
		||||
#define set_led_yellow  red_led_on;  grn_led_on;  blu_led_off
 | 
			
		||||
#define set_led_magenta red_led_on;  grn_led_off; blu_led_on
 | 
			
		||||
#define set_led_cyan    red_led_off; grn_led_on;  blu_led_on
 | 
			
		||||
#define set_led_white   red_led_on;  grn_led_on;  blu_led_on
 | 
			
		||||
#define set_led_off     red_led_off; grn_led_off; blu_led_off; wht_led_off
 | 
			
		||||
#define set_led_red     red_led_on;  grn_led_off; blu_led_off; wht_led_off
 | 
			
		||||
#define set_led_blue    red_led_off; grn_led_off; blu_led_on;  wht_led_off
 | 
			
		||||
#define set_led_green   red_led_off; grn_led_on;  blu_led_off; wht_led_off
 | 
			
		||||
#define set_led_white   red_led_off;  grn_led_off;  blu_led_off; wht_led_on
 | 
			
		||||
 | 
			
		||||
// This a shortcut to help you visually see your layout.
 | 
			
		||||
// The first section contains all of the arguements
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue