clang-format changes
This commit is contained in:
		
							parent
							
								
									61af76a10d
								
							
						
					
					
						commit
						b624f32f94
					
				
					 502 changed files with 32259 additions and 39062 deletions
				
			
		| 
						 | 
				
			
			@ -20,86 +20,86 @@
 | 
			
		|||
 | 
			
		||||
// Normal characters
 | 
			
		||||
// Line 1
 | 
			
		||||
#define BE_SUP2	KC_GRV
 | 
			
		||||
#define BE_AMP	KC_1
 | 
			
		||||
#define BE_EACU	KC_2
 | 
			
		||||
#define BE_QUOT	KC_3
 | 
			
		||||
#define BE_APOS	KC_4
 | 
			
		||||
#define BE_LPRN	KC_5
 | 
			
		||||
#define BE_PARA	KC_6
 | 
			
		||||
#define BE_EGRV	KC_7
 | 
			
		||||
#define BE_EXLM	KC_8
 | 
			
		||||
#define BE_CCED	KC_9
 | 
			
		||||
#define BE_AGRV	KC_0
 | 
			
		||||
#define BE_RPRN	KC_MINS
 | 
			
		||||
#define BE_MINS	KC_EQL
 | 
			
		||||
#define BE_SUP2 KC_GRV
 | 
			
		||||
#define BE_AMP KC_1
 | 
			
		||||
#define BE_EACU KC_2
 | 
			
		||||
#define BE_QUOT KC_3
 | 
			
		||||
#define BE_APOS KC_4
 | 
			
		||||
#define BE_LPRN KC_5
 | 
			
		||||
#define BE_PARA KC_6
 | 
			
		||||
#define BE_EGRV KC_7
 | 
			
		||||
#define BE_EXLM KC_8
 | 
			
		||||
#define BE_CCED KC_9
 | 
			
		||||
#define BE_AGRV KC_0
 | 
			
		||||
#define BE_RPRN KC_MINS
 | 
			
		||||
#define BE_MINS KC_EQL
 | 
			
		||||
 | 
			
		||||
// Line 2
 | 
			
		||||
#define BE_A    KC_Q
 | 
			
		||||
#define BE_Z	  KC_W
 | 
			
		||||
#define	BE_CIRC	KC_LBRC
 | 
			
		||||
#define BE_DLR	KC_RBRC
 | 
			
		||||
#define BE_A KC_Q
 | 
			
		||||
#define BE_Z KC_W
 | 
			
		||||
#define BE_CIRC KC_LBRC
 | 
			
		||||
#define BE_DLR KC_RBRC
 | 
			
		||||
 | 
			
		||||
// Line 3
 | 
			
		||||
#define BE_Q 	  KC_A
 | 
			
		||||
#define BE_M 	  KC_SCLN
 | 
			
		||||
#define BE_UGRV	KC_QUOT
 | 
			
		||||
#define BE_MU 	KC_NUHS
 | 
			
		||||
#define BE_Q KC_A
 | 
			
		||||
#define BE_M KC_SCLN
 | 
			
		||||
#define BE_UGRV KC_QUOT
 | 
			
		||||
#define BE_MU KC_NUHS
 | 
			
		||||
 | 
			
		||||
// Line 4
 | 
			
		||||
#define BE_LESS	KC_NUBS
 | 
			
		||||
#define BE_W	  KC_Z
 | 
			
		||||
#define BE_COMM	KC_M
 | 
			
		||||
#define BE_SCLN	KC_COMM
 | 
			
		||||
#define BE_COLN	KC_DOT
 | 
			
		||||
#define BE_EQL	KC_SLSH
 | 
			
		||||
#define BE_LESS KC_NUBS
 | 
			
		||||
#define BE_W KC_Z
 | 
			
		||||
#define BE_COMM KC_M
 | 
			
		||||
#define BE_SCLN KC_COMM
 | 
			
		||||
#define BE_COLN KC_DOT
 | 
			
		||||
#define BE_EQL KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
// Line 1
 | 
			
		||||
#define BE_SUP3 KC_TILD
 | 
			
		||||
#define BE_1  	LSFT(KC_1)
 | 
			
		||||
#define BE_2 	  LSFT(KC_2)
 | 
			
		||||
#define BE_3 	  LSFT(KC_3)
 | 
			
		||||
#define BE_4 	  LSFT(KC_4)
 | 
			
		||||
#define BE_5 	  LSFT(KC_5)
 | 
			
		||||
#define BE_6 	  LSFT(KC_6)
 | 
			
		||||
#define BE_7 	  LSFT(KC_7)
 | 
			
		||||
#define BE_8 	  LSFT(KC_8)
 | 
			
		||||
#define BE_9 	  LSFT(KC_9)
 | 
			
		||||
#define BE_0 	  LSFT(KC_0)
 | 
			
		||||
#define BE_OVRR	KC_UNDS
 | 
			
		||||
#define BE_1 LSFT(KC_1)
 | 
			
		||||
#define BE_2 LSFT(KC_2)
 | 
			
		||||
#define BE_3 LSFT(KC_3)
 | 
			
		||||
#define BE_4 LSFT(KC_4)
 | 
			
		||||
#define BE_5 LSFT(KC_5)
 | 
			
		||||
#define BE_6 LSFT(KC_6)
 | 
			
		||||
#define BE_7 LSFT(KC_7)
 | 
			
		||||
#define BE_8 LSFT(KC_8)
 | 
			
		||||
#define BE_9 LSFT(KC_9)
 | 
			
		||||
#define BE_0 LSFT(KC_0)
 | 
			
		||||
#define BE_OVRR KC_UNDS
 | 
			
		||||
#define BE_UNDS KC_PLUS
 | 
			
		||||
 | 
			
		||||
// Line 2
 | 
			
		||||
#define BE_UMLT	LSFT(BE_CIRC)
 | 
			
		||||
#define BE_PND	LSFT(BE_DLR)
 | 
			
		||||
#define BE_UMLT LSFT(BE_CIRC)
 | 
			
		||||
#define BE_PND LSFT(BE_DLR)
 | 
			
		||||
 | 
			
		||||
// Line 3
 | 
			
		||||
#define	BE_PERC	LSFT(BE_UGRV)
 | 
			
		||||
#define BE_PERC LSFT(BE_UGRV)
 | 
			
		||||
 | 
			
		||||
// Line 4
 | 
			
		||||
#define BE_GRTR	LSFT(BE_LESS)
 | 
			
		||||
#define BE_QUES	LSFT(BE_COMM)
 | 
			
		||||
#define BE_DOT	LSFT(BE_SCLN)
 | 
			
		||||
#define BE_SLSH	LSFT(BE_COLN)
 | 
			
		||||
#define BE_PLUS	LSFT(BE_EQL)
 | 
			
		||||
#define BE_GRTR LSFT(BE_LESS)
 | 
			
		||||
#define BE_QUES LSFT(BE_COMM)
 | 
			
		||||
#define BE_DOT LSFT(BE_SCLN)
 | 
			
		||||
#define BE_SLSH LSFT(BE_COLN)
 | 
			
		||||
#define BE_PLUS LSFT(BE_EQL)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
// Line 1
 | 
			
		||||
#define BE_PIPE ALGR(KC_1)
 | 
			
		||||
#define BE_AT	  ALGR(KC_2)
 | 
			
		||||
#define BE_HASH	ALGR(KC_3)
 | 
			
		||||
#define BE_AT ALGR(KC_2)
 | 
			
		||||
#define BE_HASH ALGR(KC_3)
 | 
			
		||||
#define BE_LCBR ALGR(KC_9)
 | 
			
		||||
#define BE_RCBR	ALGR(KC_0)
 | 
			
		||||
#define BE_RCBR ALGR(KC_0)
 | 
			
		||||
 | 
			
		||||
// Line 2
 | 
			
		||||
#define BE_EURO	ALGR(KC_E)
 | 
			
		||||
#define BE_EURO ALGR(KC_E)
 | 
			
		||||
#define BE_LSBR ALGR(BE_CIRC)
 | 
			
		||||
#define BE_RSBR ALGR(BE_DLR)
 | 
			
		||||
 | 
			
		||||
// Line 3
 | 
			
		||||
#define BE_ACUT ALGR(BE_UGRV)
 | 
			
		||||
#define BE_GRV	ALGR(BE_MU)
 | 
			
		||||
#define BE_GRV ALGR(BE_MU)
 | 
			
		||||
 | 
			
		||||
// Line 4
 | 
			
		||||
#define BE_BSLS ALGR(BE_LESS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,297 +21,297 @@
 | 
			
		|||
 | 
			
		||||
// Normal characters
 | 
			
		||||
// First row (on usual keyboards)
 | 
			
		||||
#define BP_DOLLAR           KC_GRAVE            // $
 | 
			
		||||
#define BP_DLR              BP_DOLLAR
 | 
			
		||||
#define BP_DOUBLE_QUOTE     KC_1                // "
 | 
			
		||||
#define BP_DQOT             BP_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LEFT_GUILLEMET   KC_2                // «
 | 
			
		||||
#define BP_LGIL             BP_LEFT_GUILLEMET
 | 
			
		||||
#define BP_RIGHT_GUILLEMET  KC_3                // »
 | 
			
		||||
#define BP_RGIL             BP_RIGHT_GUILLEMET
 | 
			
		||||
#define BP_LEFT_PAREN       KC_4                // (
 | 
			
		||||
#define BP_LPRN             BP_LEFT_PAREN
 | 
			
		||||
#define BP_RIGHT_PAREN      KC_5                // )
 | 
			
		||||
#define BP_RPRN             BP_RIGHT_PAREN
 | 
			
		||||
#define BP_AT               KC_6                // @
 | 
			
		||||
#define BP_PLUS             KC_7                // +
 | 
			
		||||
#define BP_MINUS            KC_8                // -
 | 
			
		||||
#define BP_MINS             BP_MINUS
 | 
			
		||||
#define BP_SLASH            KC_9                // /
 | 
			
		||||
#define BP_SLSH             BP_SLASH
 | 
			
		||||
#define BP_ASTERISK         KC_0                // *
 | 
			
		||||
#define BP_ASTR             BP_ASTERISK
 | 
			
		||||
#define BP_EQUAL            KC_MINUS            // =
 | 
			
		||||
#define BP_EQL              BP_EQUAL
 | 
			
		||||
#define BP_PERCENT          KC_EQUAL            // %
 | 
			
		||||
#define BP_PERC             BP_PERCENT
 | 
			
		||||
#define BP_DOLLAR KC_GRAVE  // $
 | 
			
		||||
#define BP_DLR BP_DOLLAR
 | 
			
		||||
#define BP_DOUBLE_QUOTE KC_1  // "
 | 
			
		||||
#define BP_DQOT BP_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LEFT_GUILLEMET KC_2  // «
 | 
			
		||||
#define BP_LGIL BP_LEFT_GUILLEMET
 | 
			
		||||
#define BP_RIGHT_GUILLEMET KC_3  // »
 | 
			
		||||
#define BP_RGIL BP_RIGHT_GUILLEMET
 | 
			
		||||
#define BP_LEFT_PAREN KC_4  // (
 | 
			
		||||
#define BP_LPRN BP_LEFT_PAREN
 | 
			
		||||
#define BP_RIGHT_PAREN KC_5  // )
 | 
			
		||||
#define BP_RPRN BP_RIGHT_PAREN
 | 
			
		||||
#define BP_AT KC_6     // @
 | 
			
		||||
#define BP_PLUS KC_7   // +
 | 
			
		||||
#define BP_MINUS KC_8  // -
 | 
			
		||||
#define BP_MINS BP_MINUS
 | 
			
		||||
#define BP_SLASH KC_9  // /
 | 
			
		||||
#define BP_SLSH BP_SLASH
 | 
			
		||||
#define BP_ASTERISK KC_0  // *
 | 
			
		||||
#define BP_ASTR BP_ASTERISK
 | 
			
		||||
#define BP_EQUAL KC_MINUS  // =
 | 
			
		||||
#define BP_EQL BP_EQUAL
 | 
			
		||||
#define BP_PERCENT KC_EQUAL  // %
 | 
			
		||||
#define BP_PERC BP_PERCENT
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define BP_B                KC_Q
 | 
			
		||||
#define BP_E_ACUTE          KC_W        // é
 | 
			
		||||
#define BP_ECUT             BP_E_ACUTE
 | 
			
		||||
#define BP_P                KC_E
 | 
			
		||||
#define BP_O                KC_R
 | 
			
		||||
#define BP_E_GRAVE          KC_T        // è
 | 
			
		||||
#define BP_EGRV             BP_E_GRAVE
 | 
			
		||||
#define BP_DEAD_CIRCUMFLEX  KC_Y        // dead ^
 | 
			
		||||
#define BP_DCRC             BP_DEAD_CIRCUMFLEX
 | 
			
		||||
#define BP_V                KC_U
 | 
			
		||||
#define BP_D                KC_I
 | 
			
		||||
#define BP_L                KC_O
 | 
			
		||||
#define BP_J                KC_P
 | 
			
		||||
#define BP_Z                KC_LBRACKET
 | 
			
		||||
#define BP_W                KC_RBRACKET
 | 
			
		||||
#define BP_B KC_Q
 | 
			
		||||
#define BP_E_ACUTE KC_W  // é
 | 
			
		||||
#define BP_ECUT BP_E_ACUTE
 | 
			
		||||
#define BP_P KC_E
 | 
			
		||||
#define BP_O KC_R
 | 
			
		||||
#define BP_E_GRAVE KC_T  // è
 | 
			
		||||
#define BP_EGRV BP_E_GRAVE
 | 
			
		||||
#define BP_DEAD_CIRCUMFLEX KC_Y  // dead ^
 | 
			
		||||
#define BP_DCRC BP_DEAD_CIRCUMFLEX
 | 
			
		||||
#define BP_V KC_U
 | 
			
		||||
#define BP_D KC_I
 | 
			
		||||
#define BP_L KC_O
 | 
			
		||||
#define BP_J KC_P
 | 
			
		||||
#define BP_Z KC_LBRACKET
 | 
			
		||||
#define BP_W KC_RBRACKET
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define BP_A            KC_A
 | 
			
		||||
#define BP_U            KC_S
 | 
			
		||||
#define BP_I            KC_D
 | 
			
		||||
#define BP_E            KC_F
 | 
			
		||||
#define BP_COMMA        KC_G        // ,
 | 
			
		||||
#define BP_COMM         BP_COMMA
 | 
			
		||||
#define BP_C            KC_H
 | 
			
		||||
#define BP_T            KC_J
 | 
			
		||||
#define BP_S            KC_K
 | 
			
		||||
#define BP_R            KC_L
 | 
			
		||||
#define BP_N            KC_SCOLON
 | 
			
		||||
#define BP_M            KC_QUOTE
 | 
			
		||||
#define BP_C_CEDILLA    KC_BSLASH   // ç
 | 
			
		||||
#define BP_CCED         BP_C_CEDILLA
 | 
			
		||||
#define BP_A KC_A
 | 
			
		||||
#define BP_U KC_S
 | 
			
		||||
#define BP_I KC_D
 | 
			
		||||
#define BP_E KC_F
 | 
			
		||||
#define BP_COMMA KC_G  // ,
 | 
			
		||||
#define BP_COMM BP_COMMA
 | 
			
		||||
#define BP_C KC_H
 | 
			
		||||
#define BP_T KC_J
 | 
			
		||||
#define BP_S KC_K
 | 
			
		||||
#define BP_R KC_L
 | 
			
		||||
#define BP_N KC_SCOLON
 | 
			
		||||
#define BP_M KC_QUOTE
 | 
			
		||||
#define BP_C_CEDILLA KC_BSLASH  // ç
 | 
			
		||||
#define BP_CCED BP_C_CEDILLA
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define BP_E_CIRCUMFLEX     KC_NONUS_BSLASH // ê
 | 
			
		||||
#define BP_ECRC             BP_E_CIRCUMFLEX
 | 
			
		||||
#define BP_A_GRAVE          KC_Z            // à
 | 
			
		||||
#define BP_AGRV             BP_A_GRAVE
 | 
			
		||||
#define BP_Y                KC_X
 | 
			
		||||
#define BP_X                KC_C
 | 
			
		||||
#define BP_DOT              KC_V            // .
 | 
			
		||||
#define BP_K                KC_B
 | 
			
		||||
#define BP_APOSTROPHE       KC_N
 | 
			
		||||
#define BP_APOS             BP_APOSTROPHE   // '
 | 
			
		||||
#define BP_Q                KC_M
 | 
			
		||||
#define BP_G                KC_COMMA
 | 
			
		||||
#define BP_H                KC_DOT
 | 
			
		||||
#define BP_F                KC_SLASH
 | 
			
		||||
#define BP_E_CIRCUMFLEX KC_NONUS_BSLASH  // ê
 | 
			
		||||
#define BP_ECRC BP_E_CIRCUMFLEX
 | 
			
		||||
#define BP_A_GRAVE KC_Z  // à
 | 
			
		||||
#define BP_AGRV BP_A_GRAVE
 | 
			
		||||
#define BP_Y KC_X
 | 
			
		||||
#define BP_X KC_C
 | 
			
		||||
#define BP_DOT KC_V  // .
 | 
			
		||||
#define BP_K KC_B
 | 
			
		||||
#define BP_APOSTROPHE KC_N
 | 
			
		||||
#define BP_APOS BP_APOSTROPHE  // '
 | 
			
		||||
#define BP_Q KC_M
 | 
			
		||||
#define BP_G KC_COMMA
 | 
			
		||||
#define BP_H KC_DOT
 | 
			
		||||
#define BP_F KC_SLASH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
// First row
 | 
			
		||||
#define BP_HASH     LSFT(BP_DOLLAR)     // #
 | 
			
		||||
#define BP_1        LSFT(KC_1)
 | 
			
		||||
#define BP_2        LSFT(KC_2)
 | 
			
		||||
#define BP_3        LSFT(KC_3)
 | 
			
		||||
#define BP_4        LSFT(KC_4)
 | 
			
		||||
#define BP_5        LSFT(KC_5)
 | 
			
		||||
#define BP_6        LSFT(KC_6)
 | 
			
		||||
#define BP_7        LSFT(KC_7)
 | 
			
		||||
#define BP_8        LSFT(KC_8)
 | 
			
		||||
#define BP_9        LSFT(KC_9)
 | 
			
		||||
#define BP_0        LSFT(KC_0)
 | 
			
		||||
#define BP_DEGREE   LSFT(BP_EQUAL)      // °
 | 
			
		||||
#define BP_DEGR     BP_DEGREE
 | 
			
		||||
#define BP_GRAVE    LSFT(BP_PERCENT)    // `
 | 
			
		||||
#define BP_GRV      BP_GRAVE
 | 
			
		||||
#define BP_HASH LSFT(BP_DOLLAR)  // #
 | 
			
		||||
#define BP_1 LSFT(KC_1)
 | 
			
		||||
#define BP_2 LSFT(KC_2)
 | 
			
		||||
#define BP_3 LSFT(KC_3)
 | 
			
		||||
#define BP_4 LSFT(KC_4)
 | 
			
		||||
#define BP_5 LSFT(KC_5)
 | 
			
		||||
#define BP_6 LSFT(KC_6)
 | 
			
		||||
#define BP_7 LSFT(KC_7)
 | 
			
		||||
#define BP_8 LSFT(KC_8)
 | 
			
		||||
#define BP_9 LSFT(KC_9)
 | 
			
		||||
#define BP_0 LSFT(KC_0)
 | 
			
		||||
#define BP_DEGREE LSFT(BP_EQUAL)  // °
 | 
			
		||||
#define BP_DEGR BP_DEGREE
 | 
			
		||||
#define BP_GRAVE LSFT(BP_PERCENT)  // `
 | 
			
		||||
#define BP_GRV BP_GRAVE
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define BP_EXCLAIM  LSFT(BP_DEAD_CIRCUMFLEX)    // !
 | 
			
		||||
#define BP_EXLM     BP_EXCLAIM
 | 
			
		||||
#define BP_EXCLAIM LSFT(BP_DEAD_CIRCUMFLEX)  // !
 | 
			
		||||
#define BP_EXLM BP_EXCLAIM
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define BP_SCOLON   LSFT(BP_COMMA)  // ;
 | 
			
		||||
#define BP_SCLN     BP_SCOLON
 | 
			
		||||
#define BP_SCOLON LSFT(BP_COMMA)  // ;
 | 
			
		||||
#define BP_SCLN BP_SCOLON
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define BP_COLON    LSFT(BP_DOT)    // :
 | 
			
		||||
#define BP_COLN     BP_COLON
 | 
			
		||||
#define BP_COLON LSFT(BP_DOT)  // :
 | 
			
		||||
#define BP_COLN BP_COLON
 | 
			
		||||
#define BP_QUESTION LSFT(BP_APOS)  // ?
 | 
			
		||||
#define BP_QEST     BP_QUESTION
 | 
			
		||||
#define BP_QEST BP_QUESTION
 | 
			
		||||
 | 
			
		||||
// Space bar
 | 
			
		||||
#define BP_NON_BREAKING_SPACE   LSFT(KC_SPACE)
 | 
			
		||||
#define BP_NBSP                 BP_NON_BREAKING_SPACE
 | 
			
		||||
#define BP_NON_BREAKING_SPACE LSFT(KC_SPACE)
 | 
			
		||||
#define BP_NBSP BP_NON_BREAKING_SPACE
 | 
			
		||||
 | 
			
		||||
// AltGr-ed characters
 | 
			
		||||
// First row
 | 
			
		||||
#define BP_EN_DASH          ALGR(BP_DOLLAR)     // –
 | 
			
		||||
#define BP_NDSH             BP_EN_DASH
 | 
			
		||||
#define BP_EM_DASH          ALGR(KC_1)          // —
 | 
			
		||||
#define BP_MDSH             BP_EM_DASH
 | 
			
		||||
#define BP_LESS             ALGR(KC_2)          // <
 | 
			
		||||
#define BP_GREATER          ALGR(KC_3)          // >
 | 
			
		||||
#define BP_GRTR             BP_GREATER
 | 
			
		||||
#define BP_LBRACKET         ALGR(KC_4)          // [
 | 
			
		||||
#define BP_LBRC             BP_LBRACKET
 | 
			
		||||
#define BP_RBRACKET         ALGR(KC_5)          // ]
 | 
			
		||||
#define BP_RBRC             BP_RBRACKET
 | 
			
		||||
#define BP_CIRCUMFLEX       ALGR(KC_6)          // ^
 | 
			
		||||
#define BP_CIRC             BP_CIRCUMFLEX
 | 
			
		||||
#define BP_PLUS_MINUS       ALGR(KC_7)          // ±
 | 
			
		||||
#define BP_PSMS             BP_PLUS_MINUS
 | 
			
		||||
#define BP_MATH_MINUS       ALGR(KC_8)          // −
 | 
			
		||||
#define BP_MMNS             BP_MATH_MINUS
 | 
			
		||||
#define BP_OBELUS           ALGR(KC_9)          // ÷
 | 
			
		||||
#define BP_OBEL             BP_OBELUS
 | 
			
		||||
#define BP_EN_DASH ALGR(BP_DOLLAR)  // –
 | 
			
		||||
#define BP_NDSH BP_EN_DASH
 | 
			
		||||
#define BP_EM_DASH ALGR(KC_1)  // —
 | 
			
		||||
#define BP_MDSH BP_EM_DASH
 | 
			
		||||
#define BP_LESS ALGR(KC_2)     // <
 | 
			
		||||
#define BP_GREATER ALGR(KC_3)  // >
 | 
			
		||||
#define BP_GRTR BP_GREATER
 | 
			
		||||
#define BP_LBRACKET ALGR(KC_4)  // [
 | 
			
		||||
#define BP_LBRC BP_LBRACKET
 | 
			
		||||
#define BP_RBRACKET ALGR(KC_5)  // ]
 | 
			
		||||
#define BP_RBRC BP_RBRACKET
 | 
			
		||||
#define BP_CIRCUMFLEX ALGR(KC_6)  // ^
 | 
			
		||||
#define BP_CIRC BP_CIRCUMFLEX
 | 
			
		||||
#define BP_PLUS_MINUS ALGR(KC_7)  // ±
 | 
			
		||||
#define BP_PSMS BP_PLUS_MINUS
 | 
			
		||||
#define BP_MATH_MINUS ALGR(KC_8)  // −
 | 
			
		||||
#define BP_MMNS BP_MATH_MINUS
 | 
			
		||||
#define BP_OBELUS ALGR(KC_9)  // ÷
 | 
			
		||||
#define BP_OBEL BP_OBELUS
 | 
			
		||||
// more conventional name of the symbol
 | 
			
		||||
#define BP_DIVISION_SIGN    BP_OBELUS
 | 
			
		||||
#define BP_DVSN             BP_DIVISION_SIGN
 | 
			
		||||
#define BP_TIMES            ALGR(KC_0)          // ×
 | 
			
		||||
#define BP_TIMS             BP_TIMES
 | 
			
		||||
#define BP_DIFFERENT        ALGR(BP_EQUAL)      // ≠
 | 
			
		||||
#define BP_DIFF             BP_DIFFERENT
 | 
			
		||||
#define BP_PERMILLE         ALGR(BP_PERCENT)    // ‰
 | 
			
		||||
#define BP_PMIL             BP_PERMILLE
 | 
			
		||||
#define BP_DIVISION_SIGN BP_OBELUS
 | 
			
		||||
#define BP_DVSN BP_DIVISION_SIGN
 | 
			
		||||
#define BP_TIMES ALGR(KC_0)  // ×
 | 
			
		||||
#define BP_TIMS BP_TIMES
 | 
			
		||||
#define BP_DIFFERENT ALGR(BP_EQUAL)  // ≠
 | 
			
		||||
#define BP_DIFF BP_DIFFERENT
 | 
			
		||||
#define BP_PERMILLE ALGR(BP_PERCENT)  // ‰
 | 
			
		||||
#define BP_PMIL BP_PERMILLE
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define BP_PIPE                 ALGR(BP_B)          // |
 | 
			
		||||
#define BP_DEAD_ACUTE           ALGR(BP_E_ACUTE)    // dead ´
 | 
			
		||||
#define BP_DACT                 BP_DEAD_ACUTE
 | 
			
		||||
#define BP_AMPERSAND            ALGR(BP_P)          // &
 | 
			
		||||
#define BP_AMPR                 BP_AMPERSAND
 | 
			
		||||
#define BP_OE_LIGATURE          ALGR(BP_O)          // œ
 | 
			
		||||
#define BP_OE                   BP_OE_LIGATURE
 | 
			
		||||
#define BP_DEAD_GRAVE           ALGR(BP_E_GRAVE)    // `
 | 
			
		||||
#define BP_DGRV                 BP_DEAD_GRAVE
 | 
			
		||||
#define BP_INVERTED_EXCLAIM     ALGR(BP_DEAD_CIRCUMFLEX)    // ¡
 | 
			
		||||
#define BP_IXLM                 BP_INVERTED_EXCLAIM
 | 
			
		||||
#define BP_DEAD_CARON           ALGR(BP_V)          // dead ˇ
 | 
			
		||||
#define BP_DCAR                 BP_DEAD_CARON
 | 
			
		||||
#define BP_ETH                  ALGR(BP_D)          // ð
 | 
			
		||||
#define BP_DEAD_SLASH           ALGR(BP_L)          // dead /
 | 
			
		||||
#define BP_DSLH                 BP_DEAD_SLASH
 | 
			
		||||
#define BP_IJ_LIGATURE          ALGR(BP_J)          // ij
 | 
			
		||||
#define BP_IJ                   BP_IJ_LIGATURE
 | 
			
		||||
#define BP_SCHWA                ALGR(BP_Z)          // ə
 | 
			
		||||
#define BP_SCWA                 BP_SCHWA
 | 
			
		||||
#define BP_DEAD_BREVE           ALGR(BP_W)          // dead ˘
 | 
			
		||||
#define BP_DBRV                 BP_DEAD_BREVE
 | 
			
		||||
#define BP_PIPE ALGR(BP_B)              // |
 | 
			
		||||
#define BP_DEAD_ACUTE ALGR(BP_E_ACUTE)  // dead ´
 | 
			
		||||
#define BP_DACT BP_DEAD_ACUTE
 | 
			
		||||
#define BP_AMPERSAND ALGR(BP_P)  // &
 | 
			
		||||
#define BP_AMPR BP_AMPERSAND
 | 
			
		||||
#define BP_OE_LIGATURE ALGR(BP_O)  // œ
 | 
			
		||||
#define BP_OE BP_OE_LIGATURE
 | 
			
		||||
#define BP_DEAD_GRAVE ALGR(BP_E_GRAVE)  // `
 | 
			
		||||
#define BP_DGRV BP_DEAD_GRAVE
 | 
			
		||||
#define BP_INVERTED_EXCLAIM ALGR(BP_DEAD_CIRCUMFLEX)  // ¡
 | 
			
		||||
#define BP_IXLM BP_INVERTED_EXCLAIM
 | 
			
		||||
#define BP_DEAD_CARON ALGR(BP_V)  // dead ˇ
 | 
			
		||||
#define BP_DCAR BP_DEAD_CARON
 | 
			
		||||
#define BP_ETH ALGR(BP_D)         // ð
 | 
			
		||||
#define BP_DEAD_SLASH ALGR(BP_L)  // dead /
 | 
			
		||||
#define BP_DSLH BP_DEAD_SLASH
 | 
			
		||||
#define BP_IJ_LIGATURE ALGR(BP_J)  // ij
 | 
			
		||||
#define BP_IJ BP_IJ_LIGATURE
 | 
			
		||||
#define BP_SCHWA ALGR(BP_Z)  // ə
 | 
			
		||||
#define BP_SCWA BP_SCHWA
 | 
			
		||||
#define BP_DEAD_BREVE ALGR(BP_W)  // dead ˘
 | 
			
		||||
#define BP_DBRV BP_DEAD_BREVE
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define BP_AE_LIGATURE              ALGR(BP_A)          // æ
 | 
			
		||||
#define BP_AE                       BP_AE_LIGATURE
 | 
			
		||||
#define BP_U_GRAVE                  ALGR(BP_U)          // ù
 | 
			
		||||
#define BP_UGRV                     BP_U_GRAVE
 | 
			
		||||
#define BP_DEAD_TREMA               ALGR(BP_I)          // dead ¨ (trema/umlaut/diaresis)
 | 
			
		||||
#define BP_DTRM                     BP_DEAD_TREMA
 | 
			
		||||
#define BP_EURO                     ALGR(BP_E)          // €
 | 
			
		||||
#define BP_TYPOGRAPHICAL_APOSTROPHE ALGR(BP_COMMA)      // ’
 | 
			
		||||
#define BP_TAPO                     BP_TYPOGRAPHICAL_APOSTROPHE
 | 
			
		||||
#define BP_COPYRIGHT                ALGR(BP_C)          // ©
 | 
			
		||||
#define BP_CPRT                     BP_COPYRIGHT
 | 
			
		||||
#define BP_THORN                    ALGR(BP_T)          // þ
 | 
			
		||||
#define BP_THRN                     BP_THORN
 | 
			
		||||
#define BP_SHARP_S                  ALGR(BP_S)          // ß
 | 
			
		||||
#define BP_SRPS                     BP_SHARP_S
 | 
			
		||||
#define BP_REGISTERED_TRADEMARK     ALGR(BP_R)          // ®
 | 
			
		||||
#define BP_RTM                      BP_REGISTERED_TRADEMARK
 | 
			
		||||
#define BP_DEAD_TILDE               ALGR(BP_N)          // dead ~
 | 
			
		||||
#define BP_DTLD                     BP_DEAD_TILDE
 | 
			
		||||
#define BP_DEAD_MACRON              ALGR(BP_M)          // dead ¯
 | 
			
		||||
#define BP_DMCR                     BP_DEAD_MACRON
 | 
			
		||||
#define BP_DEAD_CEDILLA             ALGR(BP_C_CEDILLA)  // dead ¸
 | 
			
		||||
#define BP_DCED                     BP_DEAD_CEDILLA
 | 
			
		||||
#define BP_AE_LIGATURE ALGR(BP_A)  // æ
 | 
			
		||||
#define BP_AE BP_AE_LIGATURE
 | 
			
		||||
#define BP_U_GRAVE ALGR(BP_U)  // ù
 | 
			
		||||
#define BP_UGRV BP_U_GRAVE
 | 
			
		||||
#define BP_DEAD_TREMA ALGR(BP_I)  // dead ¨ (trema/umlaut/diaresis)
 | 
			
		||||
#define BP_DTRM BP_DEAD_TREMA
 | 
			
		||||
#define BP_EURO ALGR(BP_E)                          // €
 | 
			
		||||
#define BP_TYPOGRAPHICAL_APOSTROPHE ALGR(BP_COMMA)  // ’
 | 
			
		||||
#define BP_TAPO BP_TYPOGRAPHICAL_APOSTROPHE
 | 
			
		||||
#define BP_COPYRIGHT ALGR(BP_C)  // ©
 | 
			
		||||
#define BP_CPRT BP_COPYRIGHT
 | 
			
		||||
#define BP_THORN ALGR(BP_T)  // þ
 | 
			
		||||
#define BP_THRN BP_THORN
 | 
			
		||||
#define BP_SHARP_S ALGR(BP_S)  // ß
 | 
			
		||||
#define BP_SRPS BP_SHARP_S
 | 
			
		||||
#define BP_REGISTERED_TRADEMARK ALGR(BP_R)  // ®
 | 
			
		||||
#define BP_RTM BP_REGISTERED_TRADEMARK
 | 
			
		||||
#define BP_DEAD_TILDE ALGR(BP_N)  // dead ~
 | 
			
		||||
#define BP_DTLD BP_DEAD_TILDE
 | 
			
		||||
#define BP_DEAD_MACRON ALGR(BP_M)  // dead ¯
 | 
			
		||||
#define BP_DMCR BP_DEAD_MACRON
 | 
			
		||||
#define BP_DEAD_CEDILLA ALGR(BP_C_CEDILLA)  // dead ¸
 | 
			
		||||
#define BP_DCED BP_DEAD_CEDILLA
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define BP_NONUS_SLASH          ALGR(BP_E_CIRCUMFLEX)   // / on non-us backslash key (102nd key, ê in bépo)
 | 
			
		||||
#define BP_NUSL                 BP_NONUS_SLASH
 | 
			
		||||
#define BP_BACKSLASH            ALGR(BP_A_GRAVE)        /* \ */
 | 
			
		||||
#define BP_BSLS                 BP_BACKSLASH
 | 
			
		||||
#define BP_LEFT_CURLY_BRACE     ALGR(BP_Y)              // {
 | 
			
		||||
#define BP_LCBR                 BP_LEFT_CURLY_BRACE
 | 
			
		||||
#define BP_RIGHT_CURLY_BRACE    ALGR(BP_X)              // }
 | 
			
		||||
#define BP_RCBR                 BP_RIGHT_CURLY_BRACE
 | 
			
		||||
#define BP_ELLIPSIS             ALGR(BP_DOT)            // …
 | 
			
		||||
#define BP_ELPS                 BP_ELLIPSIS
 | 
			
		||||
#define BP_TILDE                ALGR(BP_K)              // ~
 | 
			
		||||
#define BP_TILD                 BP_TILDE
 | 
			
		||||
#define BP_INVERTED_QUESTION    ALGR(BP_QUESTION)       // ¿
 | 
			
		||||
#define BP_IQST                 BP_INVERTED_QUESTION
 | 
			
		||||
#define BP_DEAD_RING            ALGR(BP_Q)              // dead °
 | 
			
		||||
#define BP_DRNG                 BP_DEAD_RING
 | 
			
		||||
#define BP_DEAD_GREEK           ALGR(BP_G)              // dead Greek key (following key will make a Greek letter)
 | 
			
		||||
#define BP_DGRK                 BP_DEAD_GREEK
 | 
			
		||||
#define BP_DAGGER               ALGR(BP_H)              // †
 | 
			
		||||
#define BP_DAGR                 BP_DAGGER
 | 
			
		||||
#define BP_DEAD_OGONEK          ALGR(BP_F)              // dead ˛
 | 
			
		||||
#define BP_DOGO                 BP_DEAD_OGONEK
 | 
			
		||||
#define BP_NONUS_SLASH ALGR(BP_E_CIRCUMFLEX)  // / on non-us backslash key (102nd key, ê in bépo)
 | 
			
		||||
#define BP_NUSL BP_NONUS_SLASH
 | 
			
		||||
#define BP_BACKSLASH ALGR(BP_A_GRAVE) /* \ */
 | 
			
		||||
#define BP_BSLS BP_BACKSLASH
 | 
			
		||||
#define BP_LEFT_CURLY_BRACE ALGR(BP_Y)  // {
 | 
			
		||||
#define BP_LCBR BP_LEFT_CURLY_BRACE
 | 
			
		||||
#define BP_RIGHT_CURLY_BRACE ALGR(BP_X)  // }
 | 
			
		||||
#define BP_RCBR BP_RIGHT_CURLY_BRACE
 | 
			
		||||
#define BP_ELLIPSIS ALGR(BP_DOT)  // …
 | 
			
		||||
#define BP_ELPS BP_ELLIPSIS
 | 
			
		||||
#define BP_TILDE ALGR(BP_K)  // ~
 | 
			
		||||
#define BP_TILD BP_TILDE
 | 
			
		||||
#define BP_INVERTED_QUESTION ALGR(BP_QUESTION)  // ¿
 | 
			
		||||
#define BP_IQST BP_INVERTED_QUESTION
 | 
			
		||||
#define BP_DEAD_RING ALGR(BP_Q)  // dead °
 | 
			
		||||
#define BP_DRNG BP_DEAD_RING
 | 
			
		||||
#define BP_DEAD_GREEK ALGR(BP_G)  // dead Greek key (following key will make a Greek letter)
 | 
			
		||||
#define BP_DGRK BP_DEAD_GREEK
 | 
			
		||||
#define BP_DAGGER ALGR(BP_H)  // †
 | 
			
		||||
#define BP_DAGR BP_DAGGER
 | 
			
		||||
#define BP_DEAD_OGONEK ALGR(BP_F)  // dead ˛
 | 
			
		||||
#define BP_DOGO BP_DEAD_OGONEK
 | 
			
		||||
 | 
			
		||||
// Space bar
 | 
			
		||||
#define BP_UNDERSCORE   ALGR(KC_SPACE)      // _
 | 
			
		||||
#define BP_UNDS         BP_UNDERSCORE
 | 
			
		||||
#define BP_UNDERSCORE ALGR(KC_SPACE)  // _
 | 
			
		||||
#define BP_UNDS BP_UNDERSCORE
 | 
			
		||||
 | 
			
		||||
// AltGr-Shifted characters (different from capitalised AltGr-ed characters)
 | 
			
		||||
// First row
 | 
			
		||||
#define BP_PARAGRAPH            ALGR(BP_HASH)       // ¶
 | 
			
		||||
#define BP_PARG                 BP_PARAGRAPH
 | 
			
		||||
#define BP_LOW_DOUBLE_QUOTE     ALGR(BP_1)          // „
 | 
			
		||||
#define BP_LWQT                 BP_LOW_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LEFT_DOUBLE_QUOTE    ALGR(BP_2)          // “
 | 
			
		||||
#define BP_LDQT                 BP_LEFT_DOUBLE_QUOTE
 | 
			
		||||
#define BP_RIGHT_DOUBLE_QUOTE   ALGR(BP_3)          // ”
 | 
			
		||||
#define BP_RDQT                 BP_RIGHT_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LESS_OR_EQUAL        ALGR(BP_4)          // ≤
 | 
			
		||||
#define BP_LEQL                 BP_LESS_OR_EQUAL
 | 
			
		||||
#define BP_GREATER_OR_EQUAL     ALGR(BP_5)          // ≥
 | 
			
		||||
#define BP_GEQL                 BP_GREATER_OR_EQUAL
 | 
			
		||||
#define BP_PARAGRAPH ALGR(BP_HASH)  // ¶
 | 
			
		||||
#define BP_PARG BP_PARAGRAPH
 | 
			
		||||
#define BP_LOW_DOUBLE_QUOTE ALGR(BP_1)  // „
 | 
			
		||||
#define BP_LWQT BP_LOW_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LEFT_DOUBLE_QUOTE ALGR(BP_2)  // “
 | 
			
		||||
#define BP_LDQT BP_LEFT_DOUBLE_QUOTE
 | 
			
		||||
#define BP_RIGHT_DOUBLE_QUOTE ALGR(BP_3)  // ”
 | 
			
		||||
#define BP_RDQT BP_RIGHT_DOUBLE_QUOTE
 | 
			
		||||
#define BP_LESS_OR_EQUAL ALGR(BP_4)  // ≤
 | 
			
		||||
#define BP_LEQL BP_LESS_OR_EQUAL
 | 
			
		||||
#define BP_GREATER_OR_EQUAL ALGR(BP_5)  // ≥
 | 
			
		||||
#define BP_GEQL BP_GREATER_OR_EQUAL
 | 
			
		||||
// nothing on ALGR(BP_6)
 | 
			
		||||
#define BP_NEGATION             ALGR(BP_7)          // ¬
 | 
			
		||||
#define BP_NEGT                 BP_NEGATION
 | 
			
		||||
#define BP_ONE_QUARTER          ALGR(BP_8)          // ¼
 | 
			
		||||
#define BP_1QRT                 BP_ONE_QUARTER
 | 
			
		||||
#define BP_ONE_HALF             ALGR(BP_9)          // ½
 | 
			
		||||
#define BP_1HLF                 BP_ONE_HALF
 | 
			
		||||
#define BP_THREE_QUARTERS       ALGR(BP_0)          // ¾
 | 
			
		||||
#define BP_3QRT                 BP_THREE_QUARTERS
 | 
			
		||||
#define BP_MINUTES              ALGR(BP_DEGREE)     // ′
 | 
			
		||||
#define BP_MNUT                 BP_MINUTES
 | 
			
		||||
#define BP_SECONDS              ALGR(BP_GRAVE)      // ″
 | 
			
		||||
#define BP_SCND                 BP_SECONDS
 | 
			
		||||
#define BP_NEGATION ALGR(BP_7)  // ¬
 | 
			
		||||
#define BP_NEGT BP_NEGATION
 | 
			
		||||
#define BP_ONE_QUARTER ALGR(BP_8)  // ¼
 | 
			
		||||
#define BP_1QRT BP_ONE_QUARTER
 | 
			
		||||
#define BP_ONE_HALF ALGR(BP_9)  // ½
 | 
			
		||||
#define BP_1HLF BP_ONE_HALF
 | 
			
		||||
#define BP_THREE_QUARTERS ALGR(BP_0)  // ¾
 | 
			
		||||
#define BP_3QRT BP_THREE_QUARTERS
 | 
			
		||||
#define BP_MINUTES ALGR(BP_DEGREE)  // ′
 | 
			
		||||
#define BP_MNUT BP_MINUTES
 | 
			
		||||
#define BP_SECONDS ALGR(BP_GRAVE)  // ″
 | 
			
		||||
#define BP_SCND BP_SECONDS
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define BP_BROKEN_PIPE          LSFT(BP_PIPE)           // ¦
 | 
			
		||||
#define BP_BPIP                 BP_BROKEN_PIPE
 | 
			
		||||
#define BP_DEAD_DOUBLE_ACUTE    LSFT(BP_DEAD_ACUTE)     // ˝
 | 
			
		||||
#define BP_DDCT                 BP_DEAD_DOUBLE_ACUTE
 | 
			
		||||
#define BP_SECTION              ALGR(LSFT(BP_P))        // §
 | 
			
		||||
#define BP_SECT                 BP_SECTION
 | 
			
		||||
#define BP_BROKEN_PIPE LSFT(BP_PIPE)  // ¦
 | 
			
		||||
#define BP_BPIP BP_BROKEN_PIPE
 | 
			
		||||
#define BP_DEAD_DOUBLE_ACUTE LSFT(BP_DEAD_ACUTE)  // ˝
 | 
			
		||||
#define BP_DDCT BP_DEAD_DOUBLE_ACUTE
 | 
			
		||||
#define BP_SECTION ALGR(LSFT(BP_P))  // §
 | 
			
		||||
#define BP_SECT BP_SECTION
 | 
			
		||||
// LSFT(BP_DEAD_GRAVE) is actually the same character as LSFT(BP_PERCENT)
 | 
			
		||||
#define BP_GRAVE_BIS            LSFT(BP_DEAD_GRAVE)     // `
 | 
			
		||||
#define BP_GRVB                 BP_GRAVE_BIS
 | 
			
		||||
#define BP_GRAVE_BIS LSFT(BP_DEAD_GRAVE)  // `
 | 
			
		||||
#define BP_GRVB BP_GRAVE_BIS
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define BP_DEAD_DOT_ABOVE       LSFT(BP_DEAD_TREMA)     // dead ˙
 | 
			
		||||
#define BP_DDTA                 BP_DEAD_DOT_ABOVE
 | 
			
		||||
#define BP_DEAD_CURRENCY        LSFT(BP_EURO)           // dead ¤ (next key will generate a currency code like ¥ or £)
 | 
			
		||||
#define BP_DCUR                 BP_DEAD_CURRENCY
 | 
			
		||||
#define BP_DEAD_HORN            LSFT(ALGR(BP_COMMA))    // dead ̛
 | 
			
		||||
#define BP_DHRN                 BP_DEAD_HORN
 | 
			
		||||
#define BP_LONG_S               LSFT(ALGR(BP_C))        // ſ
 | 
			
		||||
#define BP_LNGS                 BP_LONG_S
 | 
			
		||||
#define BP_TRADEMARK            LSFT(BP_REGISTERED_TRADEMARK)   // ™
 | 
			
		||||
#define BP_TM                   BP_TRADEMARK
 | 
			
		||||
#define BP_ORDINAL_INDICATOR_O  LSFT(ALGR(BP_M))        // º
 | 
			
		||||
#define BP_ORDO                 BP_ORDINAL_INDICATOR_O
 | 
			
		||||
#define BP_DEAD_COMMA           LSFT(BP_DEAD_CEDILLA)   // dead ˛
 | 
			
		||||
#define BP_DCOM                 BP_DEAD_COMMA
 | 
			
		||||
#define BP_DEAD_DOT_ABOVE LSFT(BP_DEAD_TREMA)  // dead ˙
 | 
			
		||||
#define BP_DDTA BP_DEAD_DOT_ABOVE
 | 
			
		||||
#define BP_DEAD_CURRENCY LSFT(BP_EURO)  // dead ¤ (next key will generate a currency code like ¥ or £)
 | 
			
		||||
#define BP_DCUR BP_DEAD_CURRENCY
 | 
			
		||||
#define BP_DEAD_HORN LSFT(ALGR(BP_COMMA))  // dead ̛
 | 
			
		||||
#define BP_DHRN BP_DEAD_HORN
 | 
			
		||||
#define BP_LONG_S LSFT(ALGR(BP_C))  // ſ
 | 
			
		||||
#define BP_LNGS BP_LONG_S
 | 
			
		||||
#define BP_TRADEMARK LSFT(BP_REGISTERED_TRADEMARK)  // ™
 | 
			
		||||
#define BP_TM BP_TRADEMARK
 | 
			
		||||
#define BP_ORDINAL_INDICATOR_O LSFT(ALGR(BP_M))  // º
 | 
			
		||||
#define BP_ORDO BP_ORDINAL_INDICATOR_O
 | 
			
		||||
#define BP_DEAD_COMMA LSFT(BP_DEAD_CEDILLA)  // dead ˛
 | 
			
		||||
#define BP_DCOM BP_DEAD_COMMA
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define BP_LEFT_QUOTE           LSFT(ALGR(BP_Y))        // ‘
 | 
			
		||||
#define BP_LQOT                 BP_LEFT_QUOTE
 | 
			
		||||
#define BP_RIGHT_QUOTE          LSFT(ALGR(BP_X))        // ’
 | 
			
		||||
#define BP_RQOT                 BP_RIGHT_QUOTE
 | 
			
		||||
#define BP_INTERPUNCT           LSFT(ALGR(BP_DOT))      // ·
 | 
			
		||||
#define BP_IPCT                 BP_INTERPUNCT
 | 
			
		||||
#define BP_DEAD_HOOK_ABOVE      LSFT(ALGR(BP_QUESTION)) // dead ̉
 | 
			
		||||
#define BP_DHKA                 BP_DEAD_HOOK_ABOVE
 | 
			
		||||
#define BP_DEAD_UNDERDOT        LSFT(BP_DEAD_RING)      // dead ̣
 | 
			
		||||
#define BP_DUDT                 BP_DEAD_UNDERDOT
 | 
			
		||||
#define BP_DOUBLE_DAGGER        LSFT(BP_DAGGER)         // ‡
 | 
			
		||||
#define BP_DDGR                 BP_DOUBLE_DAGGER
 | 
			
		||||
#define BP_ORDINAL_INDICATOR_A  LSFT(ALGR(BP_F))        // ª
 | 
			
		||||
#define BP_ORDA                 BP_ORDINAL_INDICATOR_A
 | 
			
		||||
#define BP_LEFT_QUOTE LSFT(ALGR(BP_Y))  // ‘
 | 
			
		||||
#define BP_LQOT BP_LEFT_QUOTE
 | 
			
		||||
#define BP_RIGHT_QUOTE LSFT(ALGR(BP_X))  // ’
 | 
			
		||||
#define BP_RQOT BP_RIGHT_QUOTE
 | 
			
		||||
#define BP_INTERPUNCT LSFT(ALGR(BP_DOT))  // ·
 | 
			
		||||
#define BP_IPCT BP_INTERPUNCT
 | 
			
		||||
#define BP_DEAD_HOOK_ABOVE LSFT(ALGR(BP_QUESTION))  // dead ̉
 | 
			
		||||
#define BP_DHKA BP_DEAD_HOOK_ABOVE
 | 
			
		||||
#define BP_DEAD_UNDERDOT LSFT(BP_DEAD_RING)  // dead ̣
 | 
			
		||||
#define BP_DUDT BP_DEAD_UNDERDOT
 | 
			
		||||
#define BP_DOUBLE_DAGGER LSFT(BP_DAGGER)  // ‡
 | 
			
		||||
#define BP_DDGR BP_DOUBLE_DAGGER
 | 
			
		||||
#define BP_ORDINAL_INDICATOR_A LSFT(ALGR(BP_F))  // ª
 | 
			
		||||
#define BP_ORDA BP_ORDINAL_INDICATOR_A
 | 
			
		||||
 | 
			
		||||
// Space bar
 | 
			
		||||
#define BP_NARROW_NON_BREAKING_SPACE    ALGR(BP_NON_BREAKING_SPACE)
 | 
			
		||||
#define BP_NNBS                         BP_NARROW_NON_BREAKING_SPACE
 | 
			
		||||
#define BP_NARROW_NON_BREAKING_SPACE ALGR(BP_NON_BREAKING_SPACE)
 | 
			
		||||
#define BP_NNBS BP_NARROW_NON_BREAKING_SPACE
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,54 +21,54 @@
 | 
			
		|||
 | 
			
		||||
/* Scan codes for the Brazilian ABNT2 keyboard layout */
 | 
			
		||||
 | 
			
		||||
#define BR_CCDL KC_SCLN      //  Ç   same scancode as ;: on US layout
 | 
			
		||||
#define BR_SCLN KC_SLSH      //  ;:  same scancode as /? on US layout
 | 
			
		||||
#define BR_QUOT KC_GRV       //  '"  same scancode as `~ on US layout
 | 
			
		||||
#define BR_TILD KC_QUOT      //  ~^  dead keys, same scancode as '" on US layout
 | 
			
		||||
#define BR_ACUT KC_LBRC      //  ´`  dead keys, same scancode as [{ on US layout
 | 
			
		||||
#define BR_LBRC KC_RBRC      //  [{  same scancode as ]} on US layout
 | 
			
		||||
#define BR_RBRC KC_BSLS      //  ]}  same scancode as \| on US layout
 | 
			
		||||
#define BR_BSLS KC_NUBS      //  \|  uses the non-US hash scancode (#~, sometimes §±)
 | 
			
		||||
#define BR_SLSH KC_INT1      //  /?  uses the INTL1 scancode
 | 
			
		||||
#define BR_CCDL KC_SCLN  //  Ç   same scancode as ;: on US layout
 | 
			
		||||
#define BR_SCLN KC_SLSH  //  ;:  same scancode as /? on US layout
 | 
			
		||||
#define BR_QUOT KC_GRV   //  '"  same scancode as `~ on US layout
 | 
			
		||||
#define BR_TILD KC_QUOT  //  ~^  dead keys, same scancode as '" on US layout
 | 
			
		||||
#define BR_ACUT KC_LBRC  //  ´`  dead keys, same scancode as [{ on US layout
 | 
			
		||||
#define BR_LBRC KC_RBRC  //  [{  same scancode as ]} on US layout
 | 
			
		||||
#define BR_RBRC KC_BSLS  //  ]}  same scancode as \| on US layout
 | 
			
		||||
#define BR_BSLS KC_NUBS  //  \|  uses the non-US hash scancode (#~, sometimes §±)
 | 
			
		||||
#define BR_SLSH KC_INT1  //  /?  uses the INTL1 scancode
 | 
			
		||||
 | 
			
		||||
#define BR_COLN LSFT(BR_SCLN)   // shifted :
 | 
			
		||||
#define BR_DQT  LSFT(BR_QUOT)   // shifted "
 | 
			
		||||
#define BR_CIRC LSFT(BR_TILD)   // shifted ^ (dead key)
 | 
			
		||||
#define BR_GRAV LSFT(BR_ACUT)   // shifted ` (dead key)
 | 
			
		||||
#define BR_LCBR LSFT(BR_LBRC)   // shifted {
 | 
			
		||||
#define BR_RCBR LSFT(BR_RBRC)   // shifted }
 | 
			
		||||
#define BR_PIPE LSFT(BR_BSLS)   // shifted |
 | 
			
		||||
#define BR_QUES LSFT(BR_SLSH)   // shifted ?
 | 
			
		||||
#define BR_TRMA LSFT(KC_6)      // shifted ¨ (dead key - trema accent)
 | 
			
		||||
#define BR_COLN LSFT(BR_SCLN)  // shifted :
 | 
			
		||||
#define BR_DQT LSFT(BR_QUOT)   // shifted "
 | 
			
		||||
#define BR_CIRC LSFT(BR_TILD)  // shifted ^ (dead key)
 | 
			
		||||
#define BR_GRAV LSFT(BR_ACUT)  // shifted ` (dead key)
 | 
			
		||||
#define BR_LCBR LSFT(BR_LBRC)  // shifted {
 | 
			
		||||
#define BR_RCBR LSFT(BR_RBRC)  // shifted }
 | 
			
		||||
#define BR_PIPE LSFT(BR_BSLS)  // shifted |
 | 
			
		||||
#define BR_QUES LSFT(BR_SLSH)  // shifted ?
 | 
			
		||||
#define BR_TRMA LSFT(KC_6)     // shifted ¨ (dead key - trema accent)
 | 
			
		||||
 | 
			
		||||
// On the ABNT2 the keypad comma and the keypad dot scancodes are switched
 | 
			
		||||
// (presumably because in Brazil comma is used as the decimal separator)
 | 
			
		||||
#define BR_KPDT KC_KP_COMMA  //  keypad .
 | 
			
		||||
#define BR_KPCM KC_KP_DOT    //  keypad ,
 | 
			
		||||
 | 
			
		||||
#define BR_1UP    LALT(KC_1)      // 1 superscript                    ¹   alt+1
 | 
			
		||||
#define BR_2UP    LALT(KC_2)      // 2 superscript                    ²   alt+2
 | 
			
		||||
#define BR_3UP    LALT(KC_3)      // 3 superscript                    ³   alt+3
 | 
			
		||||
#define BR_PND    LALT(KC_4)      // Pound sign                       £   alt+4
 | 
			
		||||
#define BR_CENT   LALT(KC_5)      // Cent sign                        ¢   alt+5
 | 
			
		||||
#define BR_NOT    LALT(KC_6)      // Not sign                         ¬   alt+6
 | 
			
		||||
#define BR_SECT   LALT(KC_EQL)    // Section sign                     §   alt+=
 | 
			
		||||
#define BR_FORD   LALT(BR_LBRC)   // Feminine Ordinal Sign            ª   alt+[
 | 
			
		||||
#define BR_MORD   LALT(BR_RBRC)   // Masculine Ordinal Sign           º   alt+]
 | 
			
		||||
#define BR_DGRE   LALT(BR_SLSH)   // Degree sign                      °   alt+/
 | 
			
		||||
#define BR_1UP LALT(KC_1)      // 1 superscript                    ¹   alt+1
 | 
			
		||||
#define BR_2UP LALT(KC_2)      // 2 superscript                    ²   alt+2
 | 
			
		||||
#define BR_3UP LALT(KC_3)      // 3 superscript                    ³   alt+3
 | 
			
		||||
#define BR_PND LALT(KC_4)      // Pound sign                       £   alt+4
 | 
			
		||||
#define BR_CENT LALT(KC_5)     // Cent sign                        ¢   alt+5
 | 
			
		||||
#define BR_NOT LALT(KC_6)      // Not sign                         ¬   alt+6
 | 
			
		||||
#define BR_SECT LALT(KC_EQL)   // Section sign                     §   alt+=
 | 
			
		||||
#define BR_FORD LALT(BR_LBRC)  // Feminine Ordinal Sign            ª   alt+[
 | 
			
		||||
#define BR_MORD LALT(BR_RBRC)  // Masculine Ordinal Sign           º   alt+]
 | 
			
		||||
#define BR_DGRE LALT(BR_SLSH)  // Degree sign                      °   alt+/
 | 
			
		||||
 | 
			
		||||
#define BR_EURO   LALT(KC_E)      // Euro sign                        €   alt+e
 | 
			
		||||
#define BR_NDTD   LALT(BR_TILD)   // Non-dead key tilde               ~   alt+~
 | 
			
		||||
#define BR_NDAC   LALT(BR_ACUT)   // Non-dead key acute accent        ´   alt+´
 | 
			
		||||
#define BR_NDGV   LALT(BR_QUOT)   // Non-dead key grave accent        `   alt+'
 | 
			
		||||
#define BR_NDCR   LALT(BR_CIRC)   // Non-dead key circumflex accent   ^   alt+^ (alt+shift+~)
 | 
			
		||||
#define BR_NDTR   LALT(BR_TRMA)   // Non-dead key trema accent        ¨   alt+¨ (alt+shift+6)
 | 
			
		||||
#define BR_EURO LALT(KC_E)     // Euro sign                        €   alt+e
 | 
			
		||||
#define BR_NDTD LALT(BR_TILD)  // Non-dead key tilde               ~   alt+~
 | 
			
		||||
#define BR_NDAC LALT(BR_ACUT)  // Non-dead key acute accent        ´   alt+´
 | 
			
		||||
#define BR_NDGV LALT(BR_QUOT)  // Non-dead key grave accent        `   alt+'
 | 
			
		||||
#define BR_NDCR LALT(BR_CIRC)  // Non-dead key circumflex accent   ^   alt+^ (alt+shift+~)
 | 
			
		||||
#define BR_NDTR LALT(BR_TRMA)  // Non-dead key trema accent        ¨   alt+¨ (alt+shift+6)
 | 
			
		||||
 | 
			
		||||
// For 101-key keyboard layouts, the ABNT2 layout allows
 | 
			
		||||
// the slash and question mark to be typed using alt+q and alt+w.
 | 
			
		||||
// The shortcuts are provided here for completeness' sake,
 | 
			
		||||
// but it's recommended to use BR_SLSH and BR_QUES instead
 | 
			
		||||
#define BR_ASLS   LALT(KC_Q)
 | 
			
		||||
#define BR_AQST   LALT(KC_W)
 | 
			
		||||
#define BR_ASLS LALT(KC_Q)
 | 
			
		||||
#define BR_AQST LALT(KC_W)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,241 +19,241 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
#ifndef GR2A
 | 
			
		||||
#define GR2A(kc)    RCTL(kc)
 | 
			
		||||
#    define GR2A(kc) RCTL(kc)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
// First row
 | 
			
		||||
#define CSA_SLASH   KC_GRV      // /
 | 
			
		||||
#define CSA_SLSH    CSA_SLASH
 | 
			
		||||
#define CSA_SLASH KC_GRV  // /
 | 
			
		||||
#define CSA_SLSH CSA_SLASH
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define CSA_DEAD_CIRCUMFLEX     KC_LBRACKET         // dead ^
 | 
			
		||||
#define CSA_DCRC                CSA_DEAD_CIRCUMFLEX
 | 
			
		||||
#define CSA_C_CEDILLA           KC_RBRACKET         // Ç
 | 
			
		||||
#define CSA_CCED                CSA_C_CEDILLA
 | 
			
		||||
#define CSA_DEAD_CIRCUMFLEX KC_LBRACKET  // dead ^
 | 
			
		||||
#define CSA_DCRC CSA_DEAD_CIRCUMFLEX
 | 
			
		||||
#define CSA_C_CEDILLA KC_RBRACKET  // Ç
 | 
			
		||||
#define CSA_CCED CSA_C_CEDILLA
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define CSA_E_GRAVE     KC_QUOT     // è
 | 
			
		||||
#define CSA_EGRV        CSA_E_GRAVE
 | 
			
		||||
#define CSA_A_GRAVE     KC_BSLASH   // à
 | 
			
		||||
#define CSA_AGRV        CSA_A_GRAVE
 | 
			
		||||
#define CSA_E_GRAVE KC_QUOT  // è
 | 
			
		||||
#define CSA_EGRV CSA_E_GRAVE
 | 
			
		||||
#define CSA_A_GRAVE KC_BSLASH  // à
 | 
			
		||||
#define CSA_AGRV CSA_A_GRAVE
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define CSA_U_GRAVE     KC_NONUS_BSLASH     // ù
 | 
			
		||||
#define CSA_UGRV        CSA_U_GRAVE
 | 
			
		||||
#define CSA_E_ACUTE     KC_SLSH             // é
 | 
			
		||||
#define CSA_ECUT        CSA_E_ACUTE
 | 
			
		||||
#define CSA_U_GRAVE KC_NONUS_BSLASH  // ù
 | 
			
		||||
#define CSA_UGRV CSA_U_GRAVE
 | 
			
		||||
#define CSA_E_ACUTE KC_SLSH  // é
 | 
			
		||||
#define CSA_ECUT CSA_E_ACUTE
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
// First row
 | 
			
		||||
#define CSA_BACKSLASH   LSFT(CSA_SLASH) /* \ */
 | 
			
		||||
#define CSA_BSLS        CSA_BACKSLASH
 | 
			
		||||
#define CSA_QUESTION    LSFT(KC_6)      // ?
 | 
			
		||||
#define CSA_QEST        CSA_QUESTION
 | 
			
		||||
#define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
 | 
			
		||||
#define CSA_BSLS CSA_BACKSLASH
 | 
			
		||||
#define CSA_QUESTION LSFT(KC_6)  // ?
 | 
			
		||||
#define CSA_QEST CSA_QUESTION
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define CSA_DEAD_TREMA  LSFT(CSA_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
 | 
			
		||||
#define CSA_DTRM        CSA_DEAD_TREMA
 | 
			
		||||
#define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX)  // dead trema/umlaut/diaresis for ä ë ï ö ü
 | 
			
		||||
#define CSA_DTRM CSA_DEAD_TREMA
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
// all same as US-QWERTY, or capitalised character of the non-shifted key
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define CSA_APOSTROPHE      LSFT(KC_COMMA)  // '
 | 
			
		||||
#define CSA_APOS            CSA_APOSTROPHE
 | 
			
		||||
#define CSA_DOUBLE_QUOTE    LSFT(KC_DOT)    // "
 | 
			
		||||
#define CSA_DQOT            CSA_DOUBLE_QUOTE
 | 
			
		||||
#define CSA_APOSTROPHE LSFT(KC_COMMA)  // '
 | 
			
		||||
#define CSA_APOS CSA_APOSTROPHE
 | 
			
		||||
#define CSA_DOUBLE_QUOTE LSFT(KC_DOT)  // "
 | 
			
		||||
#define CSA_DQOT CSA_DOUBLE_QUOTE
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
// First row
 | 
			
		||||
#define CSA_PIPE                ALGR(CSA_SLASH)         // |
 | 
			
		||||
#define CSA_CURRENCY            ALGR(KC_4)              // ¤
 | 
			
		||||
#define CSA_CURR                CSA_CURRENCY
 | 
			
		||||
#define CSA_LEFT_CURLY_BRACE    ALGR(KC_7)              // {
 | 
			
		||||
#define CSA_LCBR                CSA_LEFT_CURLY_BRACE
 | 
			
		||||
#define CSA_RIGHT_CURLY_BRACE   ALGR(KC_8)              // }
 | 
			
		||||
#define CSA_RCBR                CSA_RIGHT_CURLY_BRACE
 | 
			
		||||
#define CSA_LBRACKET            ALGR(KC_9)              // [
 | 
			
		||||
#define CSA_LBRC                CSA_LBRACKET
 | 
			
		||||
#define CSA_RBRACKET            ALGR(KC_0)              // ]
 | 
			
		||||
#define CSA_RBRC                CSA_RBRACKET
 | 
			
		||||
#define CSA_NEGATION            ALGR(KC_EQUAL)          // ¬
 | 
			
		||||
#define CSA_NEGT                CSA_NEGATION
 | 
			
		||||
#define CSA_PIPE ALGR(CSA_SLASH)  // |
 | 
			
		||||
#define CSA_CURRENCY ALGR(KC_4)   // ¤
 | 
			
		||||
#define CSA_CURR CSA_CURRENCY
 | 
			
		||||
#define CSA_LEFT_CURLY_BRACE ALGR(KC_7)  // {
 | 
			
		||||
#define CSA_LCBR CSA_LEFT_CURLY_BRACE
 | 
			
		||||
#define CSA_RIGHT_CURLY_BRACE ALGR(KC_8)  // }
 | 
			
		||||
#define CSA_RCBR CSA_RIGHT_CURLY_BRACE
 | 
			
		||||
#define CSA_LBRACKET ALGR(KC_9)  // [
 | 
			
		||||
#define CSA_LBRC CSA_LBRACKET
 | 
			
		||||
#define CSA_RBRACKET ALGR(KC_0)  // ]
 | 
			
		||||
#define CSA_RBRC CSA_RBRACKET
 | 
			
		||||
#define CSA_NEGATION ALGR(KC_EQUAL)  // ¬
 | 
			
		||||
#define CSA_NEGT CSA_NEGATION
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
// euro symbol not available on Linux? (X.org)
 | 
			
		||||
#define CSA_EURO        ALGR(KC_E)                  // €
 | 
			
		||||
#define CSA_DEAD_GRAVE  ALGR(CSA_DEAD_CIRCUMFLEX)
 | 
			
		||||
#define CSA_DGRV        CSA_DEAD_GRAVE              // dead `
 | 
			
		||||
#define CSA_DEAD_TILDE  ALGR(CSA_C_CEDILLA)         // ~
 | 
			
		||||
#define CSA_DTLD        CSA_DEAD_TILDE
 | 
			
		||||
#define CSA_EURO ALGR(KC_E)  // €
 | 
			
		||||
#define CSA_DEAD_GRAVE ALGR(CSA_DEAD_CIRCUMFLEX)
 | 
			
		||||
#define CSA_DGRV CSA_DEAD_GRAVE             // dead `
 | 
			
		||||
#define CSA_DEAD_TILDE ALGR(CSA_C_CEDILLA)  // ~
 | 
			
		||||
#define CSA_DTLD CSA_DEAD_TILDE
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define CSA_DEGREE  ALGR(KC_SCOLON)     // °
 | 
			
		||||
#define CSA_DEGR    CSA_DEGREE
 | 
			
		||||
#define CSA_DEGREE ALGR(KC_SCOLON)  // °
 | 
			
		||||
#define CSA_DEGR CSA_DEGREE
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define CSA_LEFT_GUILLEMET      ALGR(KC_Z)          // «
 | 
			
		||||
#define CSA_LGIL                CSA_LEFT_GUILLEMET
 | 
			
		||||
#define CSA_RIGHT_GUILLEMET     ALGR(KC_X)          // »
 | 
			
		||||
#define CSA_RGIL                CSA_RIGHT_GUILLEMET
 | 
			
		||||
#define CSA_LESS                ALGR(KC_COMMA)      // <
 | 
			
		||||
#define CSA_GREATER             ALGR(KC_DOT)        // >
 | 
			
		||||
#define CSA_GRTR                CSA_GREATER
 | 
			
		||||
#define CSA_LEFT_GUILLEMET ALGR(KC_Z)  // «
 | 
			
		||||
#define CSA_LGIL CSA_LEFT_GUILLEMET
 | 
			
		||||
#define CSA_RIGHT_GUILLEMET ALGR(KC_X)  // »
 | 
			
		||||
#define CSA_RGIL CSA_RIGHT_GUILLEMET
 | 
			
		||||
#define CSA_LESS ALGR(KC_COMMA)   // <
 | 
			
		||||
#define CSA_GREATER ALGR(KC_DOT)  // >
 | 
			
		||||
#define CSA_GRTR CSA_GREATER
 | 
			
		||||
 | 
			
		||||
// Space bar
 | 
			
		||||
#define CSA_NON_BREAKING_SPACE  ALGR(KC_SPACE)
 | 
			
		||||
#define CSA_NBSP                CSA_NON_BREAKING_SPACE
 | 
			
		||||
#define CSA_NON_BREAKING_SPACE ALGR(KC_SPACE)
 | 
			
		||||
#define CSA_NBSP CSA_NON_BREAKING_SPACE
 | 
			
		||||
 | 
			
		||||
// GR2A-ed characters
 | 
			
		||||
// First row
 | 
			
		||||
#define CSA_SUPERSCRIPT_ONE     GR2A(KC_1)  // ¹
 | 
			
		||||
#define CSA_SUP1                CSA_SUPERSCRIPT_ONE
 | 
			
		||||
#define CSA_SUPERSCRIPT_TWO     GR2A(KC_2)  // ²
 | 
			
		||||
#define CSA_SUP2                CSA_SUPERSCRIPT_TWO
 | 
			
		||||
#define CSA_SUPERSCRIPT_THREE   GR2A(KC_3)  // ³
 | 
			
		||||
#define CSA_SUP3                CSA_SUPERSCRIPT_THREE
 | 
			
		||||
#define CSA_ONE_QUARTER         GR2A(KC_4)  // ¼
 | 
			
		||||
#define CSA_1QRT                CSA_ONE_QUARTER
 | 
			
		||||
#define CSA_ONE_HALF            GR2A(KC_5)  // ½
 | 
			
		||||
#define CSA_1HLF                CSA_ONE_HALF
 | 
			
		||||
#define CSA_THREE_QUARTERS      GR2A(KC_6)  // ¾
 | 
			
		||||
#define CSA_3QRT                CSA_THREE_QUARTERS
 | 
			
		||||
#define CSA_SUPERSCRIPT_ONE GR2A(KC_1)  // ¹
 | 
			
		||||
#define CSA_SUP1 CSA_SUPERSCRIPT_ONE
 | 
			
		||||
#define CSA_SUPERSCRIPT_TWO GR2A(KC_2)  // ²
 | 
			
		||||
#define CSA_SUP2 CSA_SUPERSCRIPT_TWO
 | 
			
		||||
#define CSA_SUPERSCRIPT_THREE GR2A(KC_3)  // ³
 | 
			
		||||
#define CSA_SUP3 CSA_SUPERSCRIPT_THREE
 | 
			
		||||
#define CSA_ONE_QUARTER GR2A(KC_4)  // ¼
 | 
			
		||||
#define CSA_1QRT CSA_ONE_QUARTER
 | 
			
		||||
#define CSA_ONE_HALF GR2A(KC_5)  // ½
 | 
			
		||||
#define CSA_1HLF CSA_ONE_HALF
 | 
			
		||||
#define CSA_THREE_QUARTERS GR2A(KC_6)  // ¾
 | 
			
		||||
#define CSA_3QRT CSA_THREE_QUARTERS
 | 
			
		||||
// nothing on 7-0 and -
 | 
			
		||||
#define CSA_DEAD_CEDILLA        GR2A(KC_EQUAL)  // dead ¸
 | 
			
		||||
#define CSA_DCED                CSA_DEAD_CEDILLA
 | 
			
		||||
#define CSA_DEAD_CEDILLA GR2A(KC_EQUAL)  // dead ¸
 | 
			
		||||
#define CSA_DCED CSA_DEAD_CEDILLA
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define CSA_OMEGA           GR2A(KC_Q)  // ω
 | 
			
		||||
#define CSA_OMEG            CSA_OMEGA
 | 
			
		||||
#define CSA_L_STROKE        GR2A(KC_W)  // ł
 | 
			
		||||
#define CSA_LSTK            CSA_L_STROKE
 | 
			
		||||
#define CSA_OE_LIGATURE     GR2A(KC_E)  // œ
 | 
			
		||||
#define CSA_OE              CSA_OE_LIGATURE
 | 
			
		||||
#define CSA_PARAGRAPH       GR2A(KC_R)  // ¶
 | 
			
		||||
#define CSA_PARG            CSA_PARAGRAPH
 | 
			
		||||
#define CSA_T_STROKE        GR2A(KC_T)  // ŧ
 | 
			
		||||
#define CSA_LEFT_ARROW      GR2A(KC_Y)  // ←
 | 
			
		||||
#define CSA_LARW            CSA_LEFT_ARROW
 | 
			
		||||
#define CSA_DOWN_ARROW      GR2A(KC_U)  // ↓
 | 
			
		||||
#define CSA_DARW            CSA_DOWN_ARROW
 | 
			
		||||
#define CSA_RIGHT_ARROW     GR2A(KC_I)  // →
 | 
			
		||||
#define CSA_RARW            CSA_RIGHT_ARROW
 | 
			
		||||
#define CSA_O_STROKE        GR2A(KC_O)  // ø
 | 
			
		||||
#define CSA_OSTK            CSA_O_STROKE
 | 
			
		||||
#define CSA_THORN           GR2A(KC_P)  // þ
 | 
			
		||||
#define CSA_THRN            CSA_THORN
 | 
			
		||||
#define CSA_OMEGA GR2A(KC_Q)  // ω
 | 
			
		||||
#define CSA_OMEG CSA_OMEGA
 | 
			
		||||
#define CSA_L_STROKE GR2A(KC_W)  // ł
 | 
			
		||||
#define CSA_LSTK CSA_L_STROKE
 | 
			
		||||
#define CSA_OE_LIGATURE GR2A(KC_E)  // œ
 | 
			
		||||
#define CSA_OE CSA_OE_LIGATURE
 | 
			
		||||
#define CSA_PARAGRAPH GR2A(KC_R)  // ¶
 | 
			
		||||
#define CSA_PARG CSA_PARAGRAPH
 | 
			
		||||
#define CSA_T_STROKE GR2A(KC_T)    // ŧ
 | 
			
		||||
#define CSA_LEFT_ARROW GR2A(KC_Y)  // ←
 | 
			
		||||
#define CSA_LARW CSA_LEFT_ARROW
 | 
			
		||||
#define CSA_DOWN_ARROW GR2A(KC_U)  // ↓
 | 
			
		||||
#define CSA_DARW CSA_DOWN_ARROW
 | 
			
		||||
#define CSA_RIGHT_ARROW GR2A(KC_I)  // →
 | 
			
		||||
#define CSA_RARW CSA_RIGHT_ARROW
 | 
			
		||||
#define CSA_O_STROKE GR2A(KC_O)  // ø
 | 
			
		||||
#define CSA_OSTK CSA_O_STROKE
 | 
			
		||||
#define CSA_THORN GR2A(KC_P)  // þ
 | 
			
		||||
#define CSA_THRN CSA_THORN
 | 
			
		||||
// nothing on ^
 | 
			
		||||
#define CSA_TILDE           GR2A(CSA_C_CEDILLA)  // dead ~
 | 
			
		||||
#define CSA_TILD            CSA_TILDE
 | 
			
		||||
#define CSA_TILDE GR2A(CSA_C_CEDILLA)  // dead ~
 | 
			
		||||
#define CSA_TILD CSA_TILDE
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define CSA_AE_LIGATURE     GR2A(KC_A)      // æ
 | 
			
		||||
#define CSA_AE              CSA_AE_LIGATURE
 | 
			
		||||
#define CSA_SHARP_S         GR2A(KC_S)      // ß
 | 
			
		||||
#define CSA_SRPS            CSA_SHARP_S
 | 
			
		||||
#define CSA_ETH             GR2A(KC_D)      // ð
 | 
			
		||||
#define CSA_AE_LIGATURE GR2A(KC_A)  // æ
 | 
			
		||||
#define CSA_AE CSA_AE_LIGATURE
 | 
			
		||||
#define CSA_SHARP_S GR2A(KC_S)  // ß
 | 
			
		||||
#define CSA_SRPS CSA_SHARP_S
 | 
			
		||||
#define CSA_ETH GR2A(KC_D)  // ð
 | 
			
		||||
// nothing on F
 | 
			
		||||
#define CSA_ENG             GR2A(KC_G)      // ŋ
 | 
			
		||||
#define CSA_H_SRTOKE        GR2A(KC_H)      // ħ
 | 
			
		||||
#define CSA_HSTK            CSA_H_SRTOKE
 | 
			
		||||
#define CSA_IJ_LIGATURE     GR2A(KC_J)      // ij
 | 
			
		||||
#define CSA_IJ              CSA_IJ_LIGATURE
 | 
			
		||||
#define CSA_KRA             GR2A(KC_K)      // ĸ
 | 
			
		||||
#define CSA_L_FLOWN_DOT     GR2A(KC_L)      // ŀ
 | 
			
		||||
#define CSA_LFLD            CSA_L_FLOWN_DOT
 | 
			
		||||
#define CSA_DEAD_ACUTE      GR2A(KC_SCLN)   // dead acute accent
 | 
			
		||||
#define CSA_DACT            CSA_DEAD_ACUTE
 | 
			
		||||
#define CSA_ENG GR2A(KC_G)       // ŋ
 | 
			
		||||
#define CSA_H_SRTOKE GR2A(KC_H)  // ħ
 | 
			
		||||
#define CSA_HSTK CSA_H_SRTOKE
 | 
			
		||||
#define CSA_IJ_LIGATURE GR2A(KC_J)  // ij
 | 
			
		||||
#define CSA_IJ CSA_IJ_LIGATURE
 | 
			
		||||
#define CSA_KRA GR2A(KC_K)          // ĸ
 | 
			
		||||
#define CSA_L_FLOWN_DOT GR2A(KC_L)  // ŀ
 | 
			
		||||
#define CSA_LFLD CSA_L_FLOWN_DOT
 | 
			
		||||
#define CSA_DEAD_ACUTE GR2A(KC_SCLN)  // dead acute accent
 | 
			
		||||
#define CSA_DACT CSA_DEAD_ACUTE
 | 
			
		||||
// nothing on È & À
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define CSA_CENT                GR2A(KC_C)  // ¢
 | 
			
		||||
#define CSA_LEFT_DOUBLE_QUOTE   GR2A(KC_V)  // “
 | 
			
		||||
#define CSA_LDQT                CSA_LEFT_DOUBLE_QUOTE
 | 
			
		||||
#define CSA_RIGHT_DOUBLE_QUOTE  GR2A(KC_B)  // ”
 | 
			
		||||
#define CSA_RDQT                CSA_RIGHT_DOUBLE_QUOTE
 | 
			
		||||
#define CSA_N_APOSTROPHE        GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
 | 
			
		||||
#define CSA_NAPO                CSA_N_APOSTROPHE
 | 
			
		||||
#define CSA_MU                  GR2A(KC_M)  // μ
 | 
			
		||||
#define CSA_HORIZONTAL_BAR      GR2A(KC_COMMA)  // ―
 | 
			
		||||
#define CSA_HZBR                CSA_HORIZONTAL_BAR
 | 
			
		||||
#define CSA_DEAD_DOT_ABOVE      GR2A(KC_DOT)    // dead ˙
 | 
			
		||||
#define CSA_DDTA                CSA_DEAD_DOT_ABOVE
 | 
			
		||||
#define CSA_CENT GR2A(KC_C)               // ¢
 | 
			
		||||
#define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V)  // “
 | 
			
		||||
#define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE
 | 
			
		||||
#define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B)  // ”
 | 
			
		||||
#define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE
 | 
			
		||||
#define CSA_N_APOSTROPHE GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
 | 
			
		||||
#define CSA_NAPO CSA_N_APOSTROPHE
 | 
			
		||||
#define CSA_MU GR2A(KC_M)                  // μ
 | 
			
		||||
#define CSA_HORIZONTAL_BAR GR2A(KC_COMMA)  // ―
 | 
			
		||||
#define CSA_HZBR CSA_HORIZONTAL_BAR
 | 
			
		||||
#define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT)  // dead ˙
 | 
			
		||||
#define CSA_DDTA CSA_DEAD_DOT_ABOVE
 | 
			
		||||
 | 
			
		||||
// GR2A-shifted characters (different from capitalised GR2A-ed characters)
 | 
			
		||||
// First row
 | 
			
		||||
#define CSA_SOFT_HYPHEN         GR2A(LSFT(CSA_SLASH))   // soft-hyphen, appears as a hyphen in wrapped word
 | 
			
		||||
#define CSA_SHYP                CSA_SOFT_HYPHEN
 | 
			
		||||
#define CSA_INVERTED_EXCLAIM    GR2A(KC_EXCLAIM)    // ¡
 | 
			
		||||
#define CSA_IXLM                CSA_INVERTED_EXCLAIM
 | 
			
		||||
#define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH))  // soft-hyphen, appears as a hyphen in wrapped word
 | 
			
		||||
#define CSA_SHYP CSA_SOFT_HYPHEN
 | 
			
		||||
#define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM)  // ¡
 | 
			
		||||
#define CSA_IXLM CSA_INVERTED_EXCLAIM
 | 
			
		||||
// nothing on 2
 | 
			
		||||
#define CSA_POUND               GR2A(LSFT(KC_3))    // £
 | 
			
		||||
#define CSA_GBP                 CSA_POUND_SIGN
 | 
			
		||||
#define CSA_POUND GR2A(LSFT(KC_3))  // £
 | 
			
		||||
#define CSA_GBP CSA_POUND_SIGN
 | 
			
		||||
// already on ALGR(KC_E)
 | 
			
		||||
#define CSA_EURO_BIS            GR2A(LSFT(KC_4))    // €
 | 
			
		||||
#define CSA_EURB                CSA_EURO_BIS
 | 
			
		||||
#define CSA_THREE_EIGHTHS       GR2A(LSFT(KC_5))    // ⅜
 | 
			
		||||
#define CSA_3ON8                CSA_THREE_EIGHTHS
 | 
			
		||||
#define CSA_FIVE_EIGHTHS        GR2A(LSFT(KC_6))    // ⅝
 | 
			
		||||
#define CSA_5ON8                CSA_FIVE_EIGHTHS
 | 
			
		||||
#define CSA_SEVEN_EIGHTHS       GR2A(LSFT(KC_7))    // ⅞
 | 
			
		||||
#define CSA_7ON8                CSA_SEVEN_EIGHTHS
 | 
			
		||||
#define CSA_TRADEMARK           GR2A(LSFT(KC_8))    // ™
 | 
			
		||||
#define CSA_TM                  CSA_TRADEMARK
 | 
			
		||||
#define CSA_PLUS_MINUS          GR2A(LSFT(KC_9))    // ±
 | 
			
		||||
#define CSA_PSMS                CSA_PLUS_MINUS
 | 
			
		||||
#define CSA_EURO_BIS GR2A(LSFT(KC_4))  // €
 | 
			
		||||
#define CSA_EURB CSA_EURO_BIS
 | 
			
		||||
#define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5))  // ⅜
 | 
			
		||||
#define CSA_3ON8 CSA_THREE_EIGHTHS
 | 
			
		||||
#define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6))  // ⅝
 | 
			
		||||
#define CSA_5ON8 CSA_FIVE_EIGHTHS
 | 
			
		||||
#define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7))  // ⅞
 | 
			
		||||
#define CSA_7ON8 CSA_SEVEN_EIGHTHS
 | 
			
		||||
#define CSA_TRADEMARK GR2A(LSFT(KC_8))  // ™
 | 
			
		||||
#define CSA_TM CSA_TRADEMARK
 | 
			
		||||
#define CSA_PLUS_MINUS GR2A(LSFT(KC_9))  // ±
 | 
			
		||||
#define CSA_PSMS CSA_PLUS_MINUS
 | 
			
		||||
// nothing on 0
 | 
			
		||||
#define CSA_INVERTED_QUESTION   GR2A(LSFT(KC_MINUS))    // ¿
 | 
			
		||||
#define CSA_IQST                CSA_INVERTED_QUESTION
 | 
			
		||||
#define CSA_DEAD_OGONEK         GR2A(LSFT(KC_EQUAL))    // dead ˛
 | 
			
		||||
#define CSA_DOGO                CSA_DEAD_OGONEK
 | 
			
		||||
#define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS))  // ¿
 | 
			
		||||
#define CSA_IQST CSA_INVERTED_QUESTION
 | 
			
		||||
#define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL))  // dead ˛
 | 
			
		||||
#define CSA_DOGO CSA_DEAD_OGONEK
 | 
			
		||||
 | 
			
		||||
// Second row
 | 
			
		||||
#define CSA_REGISTERED_TRADEMARK    GR2A(LSFT(KC_R))        // ®
 | 
			
		||||
#define CSA_RTM                     CSA_REGISTERED_TRADEMARK
 | 
			
		||||
#define CSA_YEN                     GR2A(LSFT(KC_Y))        // ¥
 | 
			
		||||
#define CSA_YUAN                    CSA_YEN
 | 
			
		||||
#define CSA_UP_ARROW                LSFT(CSA_DOWN_ARROW)    // ↑
 | 
			
		||||
#define CSA_DOTLESS_I               GR2A(LSFT(KC_I))        // ı
 | 
			
		||||
#define CSA_DLSI                    CSA_DOTLESS_I
 | 
			
		||||
#define CSA_DEAD_RING               GR2A(LSFT(CSA_DCRC))    // dead °
 | 
			
		||||
#define CSA_DRNG                    CSA_DEAD_RING
 | 
			
		||||
#define CSA_DEAD_MACRON             GR2A(LSFT(CSA_C_CEDILLA))   // dead ¯
 | 
			
		||||
#define CSA_DMCR                    CSA_DEAD_MACRON
 | 
			
		||||
#define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R))  // ®
 | 
			
		||||
#define CSA_RTM CSA_REGISTERED_TRADEMARK
 | 
			
		||||
#define CSA_YEN GR2A(LSFT(KC_Y))  // ¥
 | 
			
		||||
#define CSA_YUAN CSA_YEN
 | 
			
		||||
#define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW)  // ↑
 | 
			
		||||
#define CSA_DOTLESS_I GR2A(LSFT(KC_I))     // ı
 | 
			
		||||
#define CSA_DLSI CSA_DOTLESS_I
 | 
			
		||||
#define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC))  // dead °
 | 
			
		||||
#define CSA_DRNG CSA_DEAD_RING
 | 
			
		||||
#define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA))  // dead ¯
 | 
			
		||||
#define CSA_DMCR CSA_DEAD_MACRON
 | 
			
		||||
 | 
			
		||||
// Third row
 | 
			
		||||
#define CSA_SECTION                 GR2A(LSFT(KC_S))        // §
 | 
			
		||||
#define CSA_SECT                    CSA_SECTION
 | 
			
		||||
#define CSA_ORDINAL_INDICATOR_A     GR2A(LSFT(KC_F))        // ª
 | 
			
		||||
#define CSA_ORDA                    CSA_ORDINAL_INDICATOR_A
 | 
			
		||||
#define CSA_DEAD_DOUBLE_ACUTE       LSFT(CSA_DEAD_ACUTE)    // ˝
 | 
			
		||||
#define CSA_DDCT                    CSA_DEAD_DOUBLE_ACUTE
 | 
			
		||||
#define CSA_DEAD_CARON              GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
 | 
			
		||||
#define CSA_DCAR                    CSA_DEAD_CARON
 | 
			
		||||
#define CSA_DEAD_BREVE              GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
 | 
			
		||||
#define CSA_DBRV                    CSA_DEAD_BREVE
 | 
			
		||||
#define CSA_SECTION GR2A(LSFT(KC_S))  // §
 | 
			
		||||
#define CSA_SECT CSA_SECTION
 | 
			
		||||
#define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F))  // ª
 | 
			
		||||
#define CSA_ORDA CSA_ORDINAL_INDICATOR_A
 | 
			
		||||
#define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE)  // ˝
 | 
			
		||||
#define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE
 | 
			
		||||
#define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE))  // dead ˇ
 | 
			
		||||
#define CSA_DCAR CSA_DEAD_CARON
 | 
			
		||||
#define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE))  // dead ˘
 | 
			
		||||
#define CSA_DBRV CSA_DEAD_BREVE
 | 
			
		||||
 | 
			
		||||
// Fourth row
 | 
			
		||||
#define CSA_BROKEN_PIPE         GR2A(LSFT(CSA_U_GRAVE)) // ¦
 | 
			
		||||
#define CSA_BPIP                CSA_BROKEN_PIPE
 | 
			
		||||
#define CSA_COPYRIGHT           GR2A(LSFT(KC_C))        // ©
 | 
			
		||||
#define CSA_CPRT                CSA_COPYRIGHT
 | 
			
		||||
#define CSA_LEFT_QUOTE          GR2A(LSFT(KC_V))        // ‘
 | 
			
		||||
#define CSA_LQOT                CSA_LEFT_QUOTE
 | 
			
		||||
#define CSA_RIGHT_QUOTE         GR2A(LSFT(KC_B))        // ’
 | 
			
		||||
#define CSA_RQOT                CSA_RIGHT_QUOTE
 | 
			
		||||
#define CSA_EIGHTH_NOTE         GR2A(LSFT(KC_N))        // ♪
 | 
			
		||||
#define CSA_8NOT                CSA_EIGHTH_NOTE
 | 
			
		||||
#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M))        // º
 | 
			
		||||
#define CSA_ORDO                CSA_ORDINAL_INDICATOR_O
 | 
			
		||||
#define CSA_TIMES               GR2A(LSFT(KC_COMMA))    // ×
 | 
			
		||||
#define CSA_TIMS                CSA_TIMES
 | 
			
		||||
#define CSA_OBELUS              GR2A(LSFT(KC_DOT))      // ÷
 | 
			
		||||
#define CSA_OBEL                CSA_OBELUS
 | 
			
		||||
#define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE))  // ¦
 | 
			
		||||
#define CSA_BPIP CSA_BROKEN_PIPE
 | 
			
		||||
#define CSA_COPYRIGHT GR2A(LSFT(KC_C))  // ©
 | 
			
		||||
#define CSA_CPRT CSA_COPYRIGHT
 | 
			
		||||
#define CSA_LEFT_QUOTE GR2A(LSFT(KC_V))  // ‘
 | 
			
		||||
#define CSA_LQOT CSA_LEFT_QUOTE
 | 
			
		||||
#define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B))  // ’
 | 
			
		||||
#define CSA_RQOT CSA_RIGHT_QUOTE
 | 
			
		||||
#define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N))  // ♪
 | 
			
		||||
#define CSA_8NOT CSA_EIGHTH_NOTE
 | 
			
		||||
#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M))  // º
 | 
			
		||||
#define CSA_ORDO CSA_ORDINAL_INDICATOR_O
 | 
			
		||||
#define CSA_TIMES GR2A(LSFT(KC_COMMA))  // ×
 | 
			
		||||
#define CSA_TIMS CSA_TIMES
 | 
			
		||||
#define CSA_OBELUS GR2A(LSFT(KC_DOT))  // ÷
 | 
			
		||||
#define CSA_OBEL CSA_OBELUS
 | 
			
		||||
// more conventional name of the symbol
 | 
			
		||||
#define CSA_DIVISION_SIGN       CSA_OBELUS
 | 
			
		||||
#define CSA_DVSN                CSA_DIVISION_SIGN
 | 
			
		||||
#define CSA_DIVISION_SIGN CSA_OBELUS
 | 
			
		||||
#define CSA_DVSN CSA_DIVISION_SIGN
 | 
			
		||||
// TODO GR2A(LSFT(CSA_E_ACUTE))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,73 +18,73 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
// For software implementation of colemak
 | 
			
		||||
#define CM_Q    KC_Q
 | 
			
		||||
#define CM_W    KC_W
 | 
			
		||||
#define CM_F    KC_E
 | 
			
		||||
#define CM_P    KC_R
 | 
			
		||||
#define CM_G    KC_T
 | 
			
		||||
#define CM_J    KC_Y
 | 
			
		||||
#define CM_L    KC_U
 | 
			
		||||
#define CM_U    KC_I
 | 
			
		||||
#define CM_Y    KC_O
 | 
			
		||||
#define CM_Q KC_Q
 | 
			
		||||
#define CM_W KC_W
 | 
			
		||||
#define CM_F KC_E
 | 
			
		||||
#define CM_P KC_R
 | 
			
		||||
#define CM_G KC_T
 | 
			
		||||
#define CM_J KC_Y
 | 
			
		||||
#define CM_L KC_U
 | 
			
		||||
#define CM_U KC_I
 | 
			
		||||
#define CM_Y KC_O
 | 
			
		||||
#define CM_SCLN KC_P
 | 
			
		||||
 | 
			
		||||
#define CM_A    KC_A
 | 
			
		||||
#define CM_R    KC_S
 | 
			
		||||
#define CM_S    KC_D
 | 
			
		||||
#define CM_T    KC_F
 | 
			
		||||
#define CM_D    KC_G
 | 
			
		||||
#define CM_H    KC_H
 | 
			
		||||
#define CM_N    KC_J
 | 
			
		||||
#define CM_E    KC_K
 | 
			
		||||
#define CM_I    KC_L
 | 
			
		||||
#define CM_O    KC_SCLN
 | 
			
		||||
#define CM_A KC_A
 | 
			
		||||
#define CM_R KC_S
 | 
			
		||||
#define CM_S KC_D
 | 
			
		||||
#define CM_T KC_F
 | 
			
		||||
#define CM_D KC_G
 | 
			
		||||
#define CM_H KC_H
 | 
			
		||||
#define CM_N KC_J
 | 
			
		||||
#define CM_E KC_K
 | 
			
		||||
#define CM_I KC_L
 | 
			
		||||
#define CM_O KC_SCLN
 | 
			
		||||
#define CM_COLN LSFT(CM_SCLN)
 | 
			
		||||
 | 
			
		||||
#define CM_Z    KC_Z
 | 
			
		||||
#define CM_X    KC_X
 | 
			
		||||
#define CM_C    KC_C
 | 
			
		||||
#define CM_V    KC_V
 | 
			
		||||
#define CM_B    KC_B
 | 
			
		||||
#define CM_K    KC_N
 | 
			
		||||
#define CM_M    KC_M
 | 
			
		||||
#define CM_Z KC_Z
 | 
			
		||||
#define CM_X KC_X
 | 
			
		||||
#define CM_C KC_C
 | 
			
		||||
#define CM_V KC_V
 | 
			
		||||
#define CM_B KC_B
 | 
			
		||||
#define CM_K KC_N
 | 
			
		||||
#define CM_M KC_M
 | 
			
		||||
#define CM_COMM KC_COMM
 | 
			
		||||
#define CM_DOT  KC_DOT
 | 
			
		||||
#define CM_DOT KC_DOT
 | 
			
		||||
#define CM_SLSH KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Make it easy to support these in macros
 | 
			
		||||
// TODO: change macro implementation so these aren't needed
 | 
			
		||||
#define KC_CM_Q    CM_Q
 | 
			
		||||
#define KC_CM_W    CM_W
 | 
			
		||||
#define KC_CM_F    CM_F
 | 
			
		||||
#define KC_CM_P    CM_P
 | 
			
		||||
#define KC_CM_G    CM_G
 | 
			
		||||
#define KC_CM_J    CM_J
 | 
			
		||||
#define KC_CM_L    CM_L
 | 
			
		||||
#define KC_CM_U    CM_U
 | 
			
		||||
#define KC_CM_Y    CM_Y
 | 
			
		||||
#define KC_CM_Q CM_Q
 | 
			
		||||
#define KC_CM_W CM_W
 | 
			
		||||
#define KC_CM_F CM_F
 | 
			
		||||
#define KC_CM_P CM_P
 | 
			
		||||
#define KC_CM_G CM_G
 | 
			
		||||
#define KC_CM_J CM_J
 | 
			
		||||
#define KC_CM_L CM_L
 | 
			
		||||
#define KC_CM_U CM_U
 | 
			
		||||
#define KC_CM_Y CM_Y
 | 
			
		||||
#define KC_CM_SCLN CM_SCLN
 | 
			
		||||
 | 
			
		||||
#define KC_CM_A    CM_A
 | 
			
		||||
#define KC_CM_R    CM_R
 | 
			
		||||
#define KC_CM_S    CM_S
 | 
			
		||||
#define KC_CM_T    CM_T
 | 
			
		||||
#define KC_CM_D    CM_D
 | 
			
		||||
#define KC_CM_H    CM_H
 | 
			
		||||
#define KC_CM_N    CM_N
 | 
			
		||||
#define KC_CM_E    CM_E
 | 
			
		||||
#define KC_CM_I    CM_I
 | 
			
		||||
#define KC_CM_O    CM_O
 | 
			
		||||
#define KC_CM_A CM_A
 | 
			
		||||
#define KC_CM_R CM_R
 | 
			
		||||
#define KC_CM_S CM_S
 | 
			
		||||
#define KC_CM_T CM_T
 | 
			
		||||
#define KC_CM_D CM_D
 | 
			
		||||
#define KC_CM_H CM_H
 | 
			
		||||
#define KC_CM_N CM_N
 | 
			
		||||
#define KC_CM_E CM_E
 | 
			
		||||
#define KC_CM_I CM_I
 | 
			
		||||
#define KC_CM_O CM_O
 | 
			
		||||
 | 
			
		||||
#define KC_CM_Z    CM_Z
 | 
			
		||||
#define KC_CM_X    CM_X
 | 
			
		||||
#define KC_CM_C    CM_C
 | 
			
		||||
#define KC_CM_V    CM_V
 | 
			
		||||
#define KC_CM_B    CM_B
 | 
			
		||||
#define KC_CM_K    CM_K
 | 
			
		||||
#define KC_CM_M    CM_M
 | 
			
		||||
#define KC_CM_Z CM_Z
 | 
			
		||||
#define KC_CM_X CM_X
 | 
			
		||||
#define KC_CM_C CM_C
 | 
			
		||||
#define KC_CM_V CM_V
 | 
			
		||||
#define KC_CM_B CM_B
 | 
			
		||||
#define KC_CM_K CM_K
 | 
			
		||||
#define KC_CM_M CM_M
 | 
			
		||||
#define KC_CM_COMM CM_COMM
 | 
			
		||||
#define KC_CM_DOT  CM_DOT
 | 
			
		||||
#define KC_CM_DOT CM_DOT
 | 
			
		||||
#define KC_CM_SLSH CM_SLSH
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,82 +19,82 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define DV_GRV	KC_GRV
 | 
			
		||||
#define DV_1	KC_1
 | 
			
		||||
#define DV_2	KC_2
 | 
			
		||||
#define DV_3	KC_3
 | 
			
		||||
#define DV_4	KC_4
 | 
			
		||||
#define DV_5	KC_5
 | 
			
		||||
#define DV_6	KC_6
 | 
			
		||||
#define DV_7	KC_7
 | 
			
		||||
#define DV_8	KC_8
 | 
			
		||||
#define DV_9	KC_9
 | 
			
		||||
#define DV_0	KC_0
 | 
			
		||||
#define DV_LBRC	KC_MINS
 | 
			
		||||
#define DV_RBRC	KC_EQL
 | 
			
		||||
#define DV_GRV KC_GRV
 | 
			
		||||
#define DV_1 KC_1
 | 
			
		||||
#define DV_2 KC_2
 | 
			
		||||
#define DV_3 KC_3
 | 
			
		||||
#define DV_4 KC_4
 | 
			
		||||
#define DV_5 KC_5
 | 
			
		||||
#define DV_6 KC_6
 | 
			
		||||
#define DV_7 KC_7
 | 
			
		||||
#define DV_8 KC_8
 | 
			
		||||
#define DV_9 KC_9
 | 
			
		||||
#define DV_0 KC_0
 | 
			
		||||
#define DV_LBRC KC_MINS
 | 
			
		||||
#define DV_RBRC KC_EQL
 | 
			
		||||
 | 
			
		||||
#define DV_QUOT	KC_Q
 | 
			
		||||
#define DV_COMM	KC_W
 | 
			
		||||
#define DV_DOT	KC_E
 | 
			
		||||
#define DV_P	KC_R
 | 
			
		||||
#define DV_Y	KC_T
 | 
			
		||||
#define	DV_F	KC_Y
 | 
			
		||||
#define DV_G	KC_U
 | 
			
		||||
#define DV_C	KC_I
 | 
			
		||||
#define	DV_R	KC_O
 | 
			
		||||
#define DV_L	KC_P
 | 
			
		||||
#define DV_SLSH	KC_LBRC
 | 
			
		||||
#define DV_EQL	KC_RBRC
 | 
			
		||||
#define DV_BSLS	KC_BSLS
 | 
			
		||||
#define DV_QUOT KC_Q
 | 
			
		||||
#define DV_COMM KC_W
 | 
			
		||||
#define DV_DOT KC_E
 | 
			
		||||
#define DV_P KC_R
 | 
			
		||||
#define DV_Y KC_T
 | 
			
		||||
#define DV_F KC_Y
 | 
			
		||||
#define DV_G KC_U
 | 
			
		||||
#define DV_C KC_I
 | 
			
		||||
#define DV_R KC_O
 | 
			
		||||
#define DV_L KC_P
 | 
			
		||||
#define DV_SLSH KC_LBRC
 | 
			
		||||
#define DV_EQL KC_RBRC
 | 
			
		||||
#define DV_BSLS KC_BSLS
 | 
			
		||||
 | 
			
		||||
#define DV_A	KC_A
 | 
			
		||||
#define DV_O	KC_S
 | 
			
		||||
#define DV_E	KC_D
 | 
			
		||||
#define DV_U	KC_F
 | 
			
		||||
#define DV_I	KC_G
 | 
			
		||||
#define DV_D	KC_H
 | 
			
		||||
#define DV_H	KC_J
 | 
			
		||||
#define DV_T	KC_K
 | 
			
		||||
#define DV_N	KC_L
 | 
			
		||||
#define DV_S	KC_SCLN
 | 
			
		||||
#define DV_MINS	KC_QUOT
 | 
			
		||||
#define DV_A KC_A
 | 
			
		||||
#define DV_O KC_S
 | 
			
		||||
#define DV_E KC_D
 | 
			
		||||
#define DV_U KC_F
 | 
			
		||||
#define DV_I KC_G
 | 
			
		||||
#define DV_D KC_H
 | 
			
		||||
#define DV_H KC_J
 | 
			
		||||
#define DV_T KC_K
 | 
			
		||||
#define DV_N KC_L
 | 
			
		||||
#define DV_S KC_SCLN
 | 
			
		||||
#define DV_MINS KC_QUOT
 | 
			
		||||
 | 
			
		||||
#define DV_SCLN	KC_Z
 | 
			
		||||
#define DV_Q	KC_X
 | 
			
		||||
#define DV_J	KC_C
 | 
			
		||||
#define DV_K	KC_V
 | 
			
		||||
#define DV_X	KC_B
 | 
			
		||||
#define DV_B	KC_N
 | 
			
		||||
#define DV_M	KC_M
 | 
			
		||||
#define DV_W	KC_COMM
 | 
			
		||||
#define DV_V	KC_DOT
 | 
			
		||||
#define DV_Z	KC_SLSH
 | 
			
		||||
#define DV_SCLN KC_Z
 | 
			
		||||
#define DV_Q KC_X
 | 
			
		||||
#define DV_J KC_C
 | 
			
		||||
#define DV_K KC_V
 | 
			
		||||
#define DV_X KC_B
 | 
			
		||||
#define DV_B KC_N
 | 
			
		||||
#define DV_M KC_M
 | 
			
		||||
#define DV_W KC_COMM
 | 
			
		||||
#define DV_V KC_DOT
 | 
			
		||||
#define DV_Z KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define DV_TILD	LSFT(DV_GRV)
 | 
			
		||||
#define DV_EXLM	LSFT(DV_1)
 | 
			
		||||
#define DV_AT	LSFT(DV_2)
 | 
			
		||||
#define DV_HASH	LSFT(DV_3)
 | 
			
		||||
#define DV_DLR	LSFT(DV_4)
 | 
			
		||||
#define DV_PERC	LSFT(DV_5)
 | 
			
		||||
#define DV_CIRC	LSFT(DV_6)
 | 
			
		||||
#define DV_AMPR	LSFT(DV_7)
 | 
			
		||||
#define DV_ASTR	LSFT(DV_8)
 | 
			
		||||
#define DV_LPRN	LSFT(DV_9)
 | 
			
		||||
#define DV_RPRN	LSFT(DV_0)
 | 
			
		||||
#define DV_LCBR	LSFT(DV_LBRC)
 | 
			
		||||
#define DV_RCBR	LSFT(DV_RBRC)
 | 
			
		||||
#define DV_TILD LSFT(DV_GRV)
 | 
			
		||||
#define DV_EXLM LSFT(DV_1)
 | 
			
		||||
#define DV_AT LSFT(DV_2)
 | 
			
		||||
#define DV_HASH LSFT(DV_3)
 | 
			
		||||
#define DV_DLR LSFT(DV_4)
 | 
			
		||||
#define DV_PERC LSFT(DV_5)
 | 
			
		||||
#define DV_CIRC LSFT(DV_6)
 | 
			
		||||
#define DV_AMPR LSFT(DV_7)
 | 
			
		||||
#define DV_ASTR LSFT(DV_8)
 | 
			
		||||
#define DV_LPRN LSFT(DV_9)
 | 
			
		||||
#define DV_RPRN LSFT(DV_0)
 | 
			
		||||
#define DV_LCBR LSFT(DV_LBRC)
 | 
			
		||||
#define DV_RCBR LSFT(DV_RBRC)
 | 
			
		||||
 | 
			
		||||
#define DV_DQUO	LSFT(DV_QUOT)
 | 
			
		||||
#define DV_LABK	LSFT(DV_COMM)
 | 
			
		||||
#define DV_RABK	LSFT(DV_DOT)
 | 
			
		||||
#define DV_DQUO LSFT(DV_QUOT)
 | 
			
		||||
#define DV_LABK LSFT(DV_COMM)
 | 
			
		||||
#define DV_RABK LSFT(DV_DOT)
 | 
			
		||||
 | 
			
		||||
#define DV_QUES	LSFT(DV_SLSH)
 | 
			
		||||
#define DV_PLUS	LSFT(DV_EQL)
 | 
			
		||||
#define DV_PIPE	LSFT(DV_BSLS)
 | 
			
		||||
#define DV_QUES LSFT(DV_SLSH)
 | 
			
		||||
#define DV_PLUS LSFT(DV_EQL)
 | 
			
		||||
#define DV_PIPE LSFT(DV_BSLS)
 | 
			
		||||
 | 
			
		||||
#define DV_UNDS	LSFT(DV_MINS)
 | 
			
		||||
#define DV_UNDS LSFT(DV_MINS)
 | 
			
		||||
 | 
			
		||||
#define DV_COLN	LSFT(DV_SCLN)
 | 
			
		||||
#define DV_COLN LSFT(DV_SCLN)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,79 +20,79 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define DP_DLR	KC_GRV
 | 
			
		||||
#define DP_AMPR	KC_1
 | 
			
		||||
#define DP_LBRC	KC_2
 | 
			
		||||
#define DP_LCBR	KC_3
 | 
			
		||||
#define DP_RCBR	KC_4
 | 
			
		||||
#define DP_LPRN	KC_5
 | 
			
		||||
#define DP_EQL	KC_6
 | 
			
		||||
#define DP_ASTR	KC_7
 | 
			
		||||
#define DP_RPRN	KC_8
 | 
			
		||||
#define DP_PLUS	KC_9
 | 
			
		||||
#define DP_RBRC	KC_0
 | 
			
		||||
#define DP_EXLM	KC_MINS
 | 
			
		||||
#define DP_HASH	KC_EQL
 | 
			
		||||
#define DP_DLR KC_GRV
 | 
			
		||||
#define DP_AMPR KC_1
 | 
			
		||||
#define DP_LBRC KC_2
 | 
			
		||||
#define DP_LCBR KC_3
 | 
			
		||||
#define DP_RCBR KC_4
 | 
			
		||||
#define DP_LPRN KC_5
 | 
			
		||||
#define DP_EQL KC_6
 | 
			
		||||
#define DP_ASTR KC_7
 | 
			
		||||
#define DP_RPRN KC_8
 | 
			
		||||
#define DP_PLUS KC_9
 | 
			
		||||
#define DP_RBRC KC_0
 | 
			
		||||
#define DP_EXLM KC_MINS
 | 
			
		||||
#define DP_HASH KC_EQL
 | 
			
		||||
 | 
			
		||||
#define DP_SCLN	KC_Q
 | 
			
		||||
#define DP_COMM	KC_W
 | 
			
		||||
#define DP_DOT	KC_E
 | 
			
		||||
#define DP_P	KC_R
 | 
			
		||||
#define DP_Y	KC_T
 | 
			
		||||
#define DP_F	KC_Y
 | 
			
		||||
#define DP_G	KC_U
 | 
			
		||||
#define DP_C	KC_I
 | 
			
		||||
#define DP_R	KC_O
 | 
			
		||||
#define DP_L	KC_P
 | 
			
		||||
#define DP_SLSH	KC_LBRC
 | 
			
		||||
#define DP_AT	KC_RBRC
 | 
			
		||||
#define DP_BSLS	KC_BSLS
 | 
			
		||||
#define DP_SCLN KC_Q
 | 
			
		||||
#define DP_COMM KC_W
 | 
			
		||||
#define DP_DOT KC_E
 | 
			
		||||
#define DP_P KC_R
 | 
			
		||||
#define DP_Y KC_T
 | 
			
		||||
#define DP_F KC_Y
 | 
			
		||||
#define DP_G KC_U
 | 
			
		||||
#define DP_C KC_I
 | 
			
		||||
#define DP_R KC_O
 | 
			
		||||
#define DP_L KC_P
 | 
			
		||||
#define DP_SLSH KC_LBRC
 | 
			
		||||
#define DP_AT KC_RBRC
 | 
			
		||||
#define DP_BSLS KC_BSLS
 | 
			
		||||
 | 
			
		||||
#define DP_A	KC_A
 | 
			
		||||
#define DP_O	KC_S
 | 
			
		||||
#define DP_E	KC_D
 | 
			
		||||
#define DP_U	KC_F
 | 
			
		||||
#define DP_I	KC_G
 | 
			
		||||
#define DP_D	KC_H
 | 
			
		||||
#define DP_H	KC_J
 | 
			
		||||
#define DP_T	KC_K
 | 
			
		||||
#define DP_N	KC_L
 | 
			
		||||
#define DP_S	KC_SCLN
 | 
			
		||||
#define DP_MINS	KC_QUOT
 | 
			
		||||
#define DP_A KC_A
 | 
			
		||||
#define DP_O KC_S
 | 
			
		||||
#define DP_E KC_D
 | 
			
		||||
#define DP_U KC_F
 | 
			
		||||
#define DP_I KC_G
 | 
			
		||||
#define DP_D KC_H
 | 
			
		||||
#define DP_H KC_J
 | 
			
		||||
#define DP_T KC_K
 | 
			
		||||
#define DP_N KC_L
 | 
			
		||||
#define DP_S KC_SCLN
 | 
			
		||||
#define DP_MINS KC_QUOT
 | 
			
		||||
 | 
			
		||||
#define DP_QUOT	KC_Z
 | 
			
		||||
#define DP_Q	KC_X
 | 
			
		||||
#define DP_J	KC_C
 | 
			
		||||
#define DP_K	KC_V
 | 
			
		||||
#define DP_X	KC_B
 | 
			
		||||
#define DP_B	KC_N
 | 
			
		||||
#define DP_M	KC_M
 | 
			
		||||
#define DP_W	KC_COMM
 | 
			
		||||
#define DP_V	KC_DOT
 | 
			
		||||
#define DP_Z	KC_SLSH
 | 
			
		||||
#define DP_QUOT KC_Z
 | 
			
		||||
#define DP_Q KC_X
 | 
			
		||||
#define DP_J KC_C
 | 
			
		||||
#define DP_K KC_V
 | 
			
		||||
#define DP_X KC_B
 | 
			
		||||
#define DP_B KC_N
 | 
			
		||||
#define DP_M KC_M
 | 
			
		||||
#define DP_W KC_COMM
 | 
			
		||||
#define DP_V KC_DOT
 | 
			
		||||
#define DP_Z KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define DP_TILD	LSFT(DP_DLR)
 | 
			
		||||
#define DP_PERC	LSFT(DP_AMPR)
 | 
			
		||||
#define DP_7	LSFT(DP_LBRC)
 | 
			
		||||
#define DP_5	LSFT(DP_LCBR)
 | 
			
		||||
#define DP_3	LSFT(DP_RCBR)
 | 
			
		||||
#define DP_1	LSFT(DP_LPRN)
 | 
			
		||||
#define DP_9	LSFT(DP_EQL)
 | 
			
		||||
#define DP_0	LSFT(DP_ASTR)
 | 
			
		||||
#define DP_2	LSFT(DP_RPRN)
 | 
			
		||||
#define DP_4	LSFT(DP_PLUS)
 | 
			
		||||
#define DP_6	LSFT(DP_RBRC)
 | 
			
		||||
#define DP_8	LSFT(DP_EXLM)
 | 
			
		||||
#define DP_GRV	LSFT(DP_HASH)
 | 
			
		||||
#define DP_TILD LSFT(DP_DLR)
 | 
			
		||||
#define DP_PERC LSFT(DP_AMPR)
 | 
			
		||||
#define DP_7 LSFT(DP_LBRC)
 | 
			
		||||
#define DP_5 LSFT(DP_LCBR)
 | 
			
		||||
#define DP_3 LSFT(DP_RCBR)
 | 
			
		||||
#define DP_1 LSFT(DP_LPRN)
 | 
			
		||||
#define DP_9 LSFT(DP_EQL)
 | 
			
		||||
#define DP_0 LSFT(DP_ASTR)
 | 
			
		||||
#define DP_2 LSFT(DP_RPRN)
 | 
			
		||||
#define DP_4 LSFT(DP_PLUS)
 | 
			
		||||
#define DP_6 LSFT(DP_RBRC)
 | 
			
		||||
#define DP_8 LSFT(DP_EXLM)
 | 
			
		||||
#define DP_GRV LSFT(DP_HASH)
 | 
			
		||||
 | 
			
		||||
#define DP_COLN	LSFT(DP_SCLN)
 | 
			
		||||
#define DP_LABK	LSFT(DP_COMM)
 | 
			
		||||
#define DP_RABK	LSFT(DP_DOT)
 | 
			
		||||
#define DP_QUES	LSFT(DP_SLSH)
 | 
			
		||||
#define DP_CIRC	LSFT(DP_AT)
 | 
			
		||||
#define DP_PIPE	LSFT(DP_BSLS)
 | 
			
		||||
#define DP_UNDS	LSFT(DP_MINS)
 | 
			
		||||
#define DP_DQUO	LSFT(DP_QUOT)
 | 
			
		||||
#define DP_COLN LSFT(DP_SCLN)
 | 
			
		||||
#define DP_LABK LSFT(DP_COMM)
 | 
			
		||||
#define DP_RABK LSFT(DP_DOT)
 | 
			
		||||
#define DP_QUES LSFT(DP_SLSH)
 | 
			
		||||
#define DP_CIRC LSFT(DP_AT)
 | 
			
		||||
#define DP_PIPE LSFT(DP_BSLS)
 | 
			
		||||
#define DP_UNDS LSFT(DP_MINS)
 | 
			
		||||
#define DP_DQUO LSFT(DP_QUOT)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,44 +66,44 @@
 | 
			
		|||
#define FR_CH_UE KC_LBRC
 | 
			
		||||
#define FR_CH_OE KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define FR_CH_CIRC KC_EQL // accent circumflex ^ and grave ` and ~
 | 
			
		||||
#define FR_CH_LESS KC_NUBS // < and > and backslash
 | 
			
		||||
#define FR_CH_MINS KC_SLSH // - and _
 | 
			
		||||
#define FR_CH_DLR KC_BSLS // $, £ and }
 | 
			
		||||
#define FR_CH_PARA KC_GRV // § and ring °
 | 
			
		||||
#define FR_CH_DIAE KC_RBRC // accent ¨
 | 
			
		||||
#define FR_CH_CIRC KC_EQL   // accent circumflex ^ and grave ` and ~
 | 
			
		||||
#define FR_CH_LESS KC_NUBS  // < and > and backslash
 | 
			
		||||
#define FR_CH_MINS KC_SLSH  // - and _
 | 
			
		||||
#define FR_CH_DLR KC_BSLS   // $, £ and }
 | 
			
		||||
#define FR_CH_PARA KC_GRV   // § and ring °
 | 
			
		||||
#define FR_CH_DIAE KC_RBRC  // accent ¨
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define FR_CH_RING LSFT(KC_GRV) // °
 | 
			
		||||
#define FR_CH_EXLM LSFT(KC_RBRC) // !
 | 
			
		||||
#define FR_CH_PLUS LSFT(KC_1) // +
 | 
			
		||||
#define FR_CH_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define FR_CH_ASTR LSFT(KC_3) // *
 | 
			
		||||
#define FR_CH_PERC LSFT(KC_5) // %
 | 
			
		||||
#define FR_CH_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define FR_CH_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define FR_CH_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define FR_CH_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define FR_CH_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define FR_CH_QST  LSFT(FR_CH_QUOT) // ?
 | 
			
		||||
#define FR_CH_MORE LSFT(FR_CH_LESS) // >
 | 
			
		||||
#define FR_CH_COLN LSFT(KC_DOT) // :
 | 
			
		||||
#define FR_CH_SCLN LSFT(KC_COMM) // ;
 | 
			
		||||
#define FR_CH_UNDS LSFT(FR_CH_MINS) // _
 | 
			
		||||
#define FR_CH_CCED LSFT(KC_4) // ç
 | 
			
		||||
#define FR_CH_GRV  LSFT(FR_CH_CIRC) // accent grave `
 | 
			
		||||
#define FR_CH_RING LSFT(KC_GRV)      // °
 | 
			
		||||
#define FR_CH_EXLM LSFT(KC_RBRC)     // !
 | 
			
		||||
#define FR_CH_PLUS LSFT(KC_1)        // +
 | 
			
		||||
#define FR_CH_DQOT LSFT(KC_2)        // "
 | 
			
		||||
#define FR_CH_ASTR LSFT(KC_3)        // *
 | 
			
		||||
#define FR_CH_PERC LSFT(KC_5)        // %
 | 
			
		||||
#define FR_CH_AMPR LSFT(KC_6)        // &
 | 
			
		||||
#define FR_CH_SLSH LSFT(KC_7)        // /
 | 
			
		||||
#define FR_CH_LPRN LSFT(KC_8)        // (
 | 
			
		||||
#define FR_CH_RPRN LSFT(KC_9)        // )
 | 
			
		||||
#define FR_CH_EQL LSFT(KC_0)         // =
 | 
			
		||||
#define FR_CH_QST LSFT(FR_CH_QUOT)   // ?
 | 
			
		||||
#define FR_CH_MORE LSFT(FR_CH_LESS)  // >
 | 
			
		||||
#define FR_CH_COLN LSFT(KC_DOT)      // :
 | 
			
		||||
#define FR_CH_SCLN LSFT(KC_COMM)     // ;
 | 
			
		||||
#define FR_CH_UNDS LSFT(FR_CH_MINS)  // _
 | 
			
		||||
#define FR_CH_CCED LSFT(KC_4)        // ç
 | 
			
		||||
#define FR_CH_GRV LSFT(FR_CH_CIRC)   // accent grave `
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define FR_CH_LCBR ALGR(KC_QUOT) // {
 | 
			
		||||
#define FR_CH_LBRC ALGR(KC_LBRC) // [
 | 
			
		||||
#define FR_CH_RBRC ALGR(KC_9) // ]
 | 
			
		||||
#define FR_CH_RCBR ALGR(KC_0) // }
 | 
			
		||||
#define FR_CH_BSLS ALGR(FR_CH_LESS) // backslash
 | 
			
		||||
#define FR_CH_AT   ALGR(KC_2) // @
 | 
			
		||||
#define FR_CH_EURO ALGR(KC_E) // €
 | 
			
		||||
#define FR_CH_TILD ALGR(FR_CH_CIRC) // ~
 | 
			
		||||
#define FR_CH_PIPE ALGR(KC_1) // |
 | 
			
		||||
#define FR_CH_HASH ALGR(KC_3) // #
 | 
			
		||||
#define FR_CH_ACUT ALGR(FR_CH_QUOT) // accent acute ´
 | 
			
		||||
#define FR_CH_LCBR ALGR(KC_QUOT)     // {
 | 
			
		||||
#define FR_CH_LBRC ALGR(KC_LBRC)     // [
 | 
			
		||||
#define FR_CH_RBRC ALGR(KC_9)        // ]
 | 
			
		||||
#define FR_CH_RCBR ALGR(KC_0)        // }
 | 
			
		||||
#define FR_CH_BSLS ALGR(FR_CH_LESS)  // backslash
 | 
			
		||||
#define FR_CH_AT ALGR(KC_2)          // @
 | 
			
		||||
#define FR_CH_EURO ALGR(KC_E)        // €
 | 
			
		||||
#define FR_CH_TILD ALGR(FR_CH_CIRC)  // ~
 | 
			
		||||
#define FR_CH_PIPE ALGR(KC_1)        // |
 | 
			
		||||
#define FR_CH_HASH ALGR(KC_3)        // #
 | 
			
		||||
#define FR_CH_ACUT ALGR(FR_CH_QUOT)  // accent acute ´
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,76 +19,76 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define FR_SUP2	KC_GRV
 | 
			
		||||
#define FR_AMP	KC_1
 | 
			
		||||
#define FR_EACU	KC_2
 | 
			
		||||
#define FR_QUOT	KC_3
 | 
			
		||||
#define FR_APOS	KC_4
 | 
			
		||||
#define FR_LPRN	KC_5
 | 
			
		||||
#define FR_MINS	KC_6
 | 
			
		||||
#define FR_EGRV	KC_7
 | 
			
		||||
#define FR_UNDS	KC_8
 | 
			
		||||
#define FR_CCED	KC_9
 | 
			
		||||
#define FR_AGRV	KC_0
 | 
			
		||||
#define FR_RPRN	KC_MINS
 | 
			
		||||
#define FR_EQL	KC_EQL
 | 
			
		||||
#define FR_SUP2 KC_GRV
 | 
			
		||||
#define FR_AMP KC_1
 | 
			
		||||
#define FR_EACU KC_2
 | 
			
		||||
#define FR_QUOT KC_3
 | 
			
		||||
#define FR_APOS KC_4
 | 
			
		||||
#define FR_LPRN KC_5
 | 
			
		||||
#define FR_MINS KC_6
 | 
			
		||||
#define FR_EGRV KC_7
 | 
			
		||||
#define FR_UNDS KC_8
 | 
			
		||||
#define FR_CCED KC_9
 | 
			
		||||
#define FR_AGRV KC_0
 | 
			
		||||
#define FR_RPRN KC_MINS
 | 
			
		||||
#define FR_EQL KC_EQL
 | 
			
		||||
 | 
			
		||||
#define FR_A 	KC_Q
 | 
			
		||||
#define FR_Z	KC_W
 | 
			
		||||
#define	FR_CIRC	KC_LBRC
 | 
			
		||||
#define FR_DLR	KC_RBRC
 | 
			
		||||
#define FR_A KC_Q
 | 
			
		||||
#define FR_Z KC_W
 | 
			
		||||
#define FR_CIRC KC_LBRC
 | 
			
		||||
#define FR_DLR KC_RBRC
 | 
			
		||||
 | 
			
		||||
#define FR_Q 	KC_A
 | 
			
		||||
#define FR_M 	KC_SCLN
 | 
			
		||||
#define FR_UGRV	KC_QUOT
 | 
			
		||||
#define FR_ASTR	KC_NUHS
 | 
			
		||||
#define FR_Q KC_A
 | 
			
		||||
#define FR_M KC_SCLN
 | 
			
		||||
#define FR_UGRV KC_QUOT
 | 
			
		||||
#define FR_ASTR KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define FR_LESS	KC_NUBS
 | 
			
		||||
#define FR_W	KC_Z
 | 
			
		||||
#define FR_COMM	KC_M
 | 
			
		||||
#define FR_SCLN	KC_COMM
 | 
			
		||||
#define FR_COLN	KC_DOT
 | 
			
		||||
#define FR_EXLM	KC_SLSH
 | 
			
		||||
#define FR_LESS KC_NUBS
 | 
			
		||||
#define FR_W KC_Z
 | 
			
		||||
#define FR_COMM KC_M
 | 
			
		||||
#define FR_SCLN KC_COMM
 | 
			
		||||
#define FR_COLN KC_DOT
 | 
			
		||||
#define FR_EXLM KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define FR_1 	LSFT(KC_1)
 | 
			
		||||
#define FR_2 	LSFT(KC_2)
 | 
			
		||||
#define FR_3 	LSFT(KC_3)
 | 
			
		||||
#define FR_4 	LSFT(KC_4)
 | 
			
		||||
#define FR_5 	LSFT(KC_5)
 | 
			
		||||
#define FR_6 	LSFT(KC_6)
 | 
			
		||||
#define FR_7 	LSFT(KC_7)
 | 
			
		||||
#define FR_8 	LSFT(KC_8)
 | 
			
		||||
#define FR_9 	LSFT(KC_9)
 | 
			
		||||
#define FR_0 	LSFT(KC_0)
 | 
			
		||||
#define FR_OVRR	LSFT(FR_RPRN)
 | 
			
		||||
#define FR_1 LSFT(KC_1)
 | 
			
		||||
#define FR_2 LSFT(KC_2)
 | 
			
		||||
#define FR_3 LSFT(KC_3)
 | 
			
		||||
#define FR_4 LSFT(KC_4)
 | 
			
		||||
#define FR_5 LSFT(KC_5)
 | 
			
		||||
#define FR_6 LSFT(KC_6)
 | 
			
		||||
#define FR_7 LSFT(KC_7)
 | 
			
		||||
#define FR_8 LSFT(KC_8)
 | 
			
		||||
#define FR_9 LSFT(KC_9)
 | 
			
		||||
#define FR_0 LSFT(KC_0)
 | 
			
		||||
#define FR_OVRR LSFT(FR_RPRN)
 | 
			
		||||
#define FR_PLUS LSFT(FR_EQL)
 | 
			
		||||
 | 
			
		||||
#define FR_UMLT	LSFT(FR_CIRC)
 | 
			
		||||
#define FR_PND	LSFT(FR_DLR)
 | 
			
		||||
#define	FR_PERC	LSFT(FR_UGRV)
 | 
			
		||||
#define FR_MU 	LSFT(FR_ASTR)
 | 
			
		||||
#define FR_UMLT LSFT(FR_CIRC)
 | 
			
		||||
#define FR_PND LSFT(FR_DLR)
 | 
			
		||||
#define FR_PERC LSFT(FR_UGRV)
 | 
			
		||||
#define FR_MU LSFT(FR_ASTR)
 | 
			
		||||
 | 
			
		||||
#define FR_GRTR	LSFT(FR_LESS)
 | 
			
		||||
#define FR_QUES	LSFT(FR_COMM)
 | 
			
		||||
#define FR_DOT	LSFT(FR_SCLN)
 | 
			
		||||
#define FR_SLSH	LSFT(FR_COLN)
 | 
			
		||||
#define FR_SECT	LSFT(FR_EXLM)
 | 
			
		||||
#define FR_GRTR LSFT(FR_LESS)
 | 
			
		||||
#define FR_QUES LSFT(FR_COMM)
 | 
			
		||||
#define FR_DOT LSFT(FR_SCLN)
 | 
			
		||||
#define FR_SLSH LSFT(FR_COLN)
 | 
			
		||||
#define FR_SECT LSFT(FR_EXLM)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define FR_TILD	ALGR(KC_2)
 | 
			
		||||
#define FR_HASH	ALGR(KC_3)
 | 
			
		||||
#define FR_TILD ALGR(KC_2)
 | 
			
		||||
#define FR_HASH ALGR(KC_3)
 | 
			
		||||
#define FR_LCBR ALGR(KC_4)
 | 
			
		||||
#define FR_LBRC	ALGR(KC_5)
 | 
			
		||||
#define FR_LBRC ALGR(KC_5)
 | 
			
		||||
#define FR_PIPE ALGR(KC_6)
 | 
			
		||||
#define FR_GRV 	ALGR(KC_7)
 | 
			
		||||
#define FR_BSLS	ALGR(KC_8)
 | 
			
		||||
#define FR_CCIRC	ALGR(KC_9)
 | 
			
		||||
#define FR_AT 	ALGR(KC_0)
 | 
			
		||||
#define FR_RBRC	ALGR(FR_RPRN)
 | 
			
		||||
#define FR_GRV ALGR(KC_7)
 | 
			
		||||
#define FR_BSLS ALGR(KC_8)
 | 
			
		||||
#define FR_CCIRC ALGR(KC_9)
 | 
			
		||||
#define FR_AT ALGR(KC_0)
 | 
			
		||||
#define FR_RBRC ALGR(FR_RPRN)
 | 
			
		||||
#define FR_RCBR ALGR(FR_EQL)
 | 
			
		||||
 | 
			
		||||
#define FR_EURO	ALGR(KC_E)
 | 
			
		||||
#define FR_BULT	ALGR(FR_DLR)
 | 
			
		||||
#define FR_EURO ALGR(KC_E)
 | 
			
		||||
#define FR_BULT ALGR(FR_DLR)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,74 +19,74 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define FR_AT 	KC_GRV
 | 
			
		||||
#define FR_AMP	KC_1
 | 
			
		||||
#define FR_EACU	KC_2
 | 
			
		||||
#define FR_QUOT	KC_3
 | 
			
		||||
#define FR_APOS	KC_4
 | 
			
		||||
#define FR_LPRN	KC_5
 | 
			
		||||
#define FR_SECT	KC_6
 | 
			
		||||
#define FR_EGRV	KC_7
 | 
			
		||||
#define FR_EXLM	KC_8
 | 
			
		||||
#define FR_CCED	KC_9
 | 
			
		||||
#define FR_AGRV	KC_0
 | 
			
		||||
#define FR_RPRN	KC_MINS
 | 
			
		||||
#define FR_MINS	KC_EQL
 | 
			
		||||
#define FR_AT KC_GRV
 | 
			
		||||
#define FR_AMP KC_1
 | 
			
		||||
#define FR_EACU KC_2
 | 
			
		||||
#define FR_QUOT KC_3
 | 
			
		||||
#define FR_APOS KC_4
 | 
			
		||||
#define FR_LPRN KC_5
 | 
			
		||||
#define FR_SECT KC_6
 | 
			
		||||
#define FR_EGRV KC_7
 | 
			
		||||
#define FR_EXLM KC_8
 | 
			
		||||
#define FR_CCED KC_9
 | 
			
		||||
#define FR_AGRV KC_0
 | 
			
		||||
#define FR_RPRN KC_MINS
 | 
			
		||||
#define FR_MINS KC_EQL
 | 
			
		||||
 | 
			
		||||
#define FR_A 	KC_Q
 | 
			
		||||
#define FR_Z	KC_W
 | 
			
		||||
#define FR_CIRC	KC_LBRC
 | 
			
		||||
#define FR_DLR	KC_RBRC
 | 
			
		||||
#define FR_A KC_Q
 | 
			
		||||
#define FR_Z KC_W
 | 
			
		||||
#define FR_CIRC KC_LBRC
 | 
			
		||||
#define FR_DLR KC_RBRC
 | 
			
		||||
 | 
			
		||||
#define FR_Q 	KC_A
 | 
			
		||||
#define FR_M 	KC_SCLN
 | 
			
		||||
#define FR_UGRV	KC_QUOT
 | 
			
		||||
#define FR_GRV	KC_NUHS
 | 
			
		||||
#define FR_Q KC_A
 | 
			
		||||
#define FR_M KC_SCLN
 | 
			
		||||
#define FR_UGRV KC_QUOT
 | 
			
		||||
#define FR_GRV KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define FR_LESS	KC_NUBS
 | 
			
		||||
#define FR_W	KC_Z
 | 
			
		||||
#define FR_COMM	KC_M
 | 
			
		||||
#define FR_SCLN	KC_COMM
 | 
			
		||||
#define FR_COLN	KC_DOT
 | 
			
		||||
#define FR_EQL	KC_SLSH
 | 
			
		||||
#define FR_LESS KC_NUBS
 | 
			
		||||
#define FR_W KC_Z
 | 
			
		||||
#define FR_COMM KC_M
 | 
			
		||||
#define FR_SCLN KC_COMM
 | 
			
		||||
#define FR_COLN KC_DOT
 | 
			
		||||
#define FR_EQL KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define FR_HASH	LSFT(KC_GRV)
 | 
			
		||||
#define FR_1 	LSFT(KC_1)
 | 
			
		||||
#define FR_2 	LSFT(KC_2)
 | 
			
		||||
#define FR_3 	LSFT(KC_3)
 | 
			
		||||
#define FR_4 	LSFT(KC_4)
 | 
			
		||||
#define FR_5 	LSFT(KC_5)
 | 
			
		||||
#define FR_6 	LSFT(KC_6)
 | 
			
		||||
#define FR_7 	LSFT(KC_7)
 | 
			
		||||
#define FR_8 	LSFT(KC_8)
 | 
			
		||||
#define FR_9 	LSFT(KC_9)
 | 
			
		||||
#define FR_0 	LSFT(KC_0)
 | 
			
		||||
#define FR_UNDS	LSFT(FR_MINS)
 | 
			
		||||
#define FR_HASH LSFT(KC_GRV)
 | 
			
		||||
#define FR_1 LSFT(KC_1)
 | 
			
		||||
#define FR_2 LSFT(KC_2)
 | 
			
		||||
#define FR_3 LSFT(KC_3)
 | 
			
		||||
#define FR_4 LSFT(KC_4)
 | 
			
		||||
#define FR_5 LSFT(KC_5)
 | 
			
		||||
#define FR_6 LSFT(KC_6)
 | 
			
		||||
#define FR_7 LSFT(KC_7)
 | 
			
		||||
#define FR_8 LSFT(KC_8)
 | 
			
		||||
#define FR_9 LSFT(KC_9)
 | 
			
		||||
#define FR_0 LSFT(KC_0)
 | 
			
		||||
#define FR_UNDS LSFT(FR_MINS)
 | 
			
		||||
 | 
			
		||||
#define FR_UMLT	LSFT(FR_CIRC)
 | 
			
		||||
#define FR_ASTR	LSFT(FR_DLR)
 | 
			
		||||
#define FR_UMLT LSFT(FR_CIRC)
 | 
			
		||||
#define FR_ASTR LSFT(FR_DLR)
 | 
			
		||||
 | 
			
		||||
#define FR_PERC	LSFT(FR_UGRV)
 | 
			
		||||
#define FR_PND	LSFT(FR_GRV)
 | 
			
		||||
#define FR_PERC LSFT(FR_UGRV)
 | 
			
		||||
#define FR_PND LSFT(FR_GRV)
 | 
			
		||||
 | 
			
		||||
#define FR_GRTR	LSFT(FR_LESS)
 | 
			
		||||
#define FR_QUES	LSFT(FR_COMM)
 | 
			
		||||
#define FR_DOT	LSFT(FR_SCLN)
 | 
			
		||||
#define FR_SLSH	LSFT(FR_COLN)
 | 
			
		||||
#define FR_PLUS	LSFT(FR_EQL)
 | 
			
		||||
#define FR_GRTR LSFT(FR_LESS)
 | 
			
		||||
#define FR_QUES LSFT(FR_COMM)
 | 
			
		||||
#define FR_DOT LSFT(FR_SCLN)
 | 
			
		||||
#define FR_SLSH LSFT(FR_COLN)
 | 
			
		||||
#define FR_PLUS LSFT(FR_EQL)
 | 
			
		||||
 | 
			
		||||
// Alted characters
 | 
			
		||||
#define FR_LCBR	LALT(KC_5)
 | 
			
		||||
#define FR_RCBR	LALT(FR_RPRN)
 | 
			
		||||
#define FR_EURO	LALT(KC_E)
 | 
			
		||||
#define FR_BULT	LALT(FR_DLR)
 | 
			
		||||
#define FR_TILD	LALT(KC_N)
 | 
			
		||||
#define FR_LCBR LALT(KC_5)
 | 
			
		||||
#define FR_RCBR LALT(FR_RPRN)
 | 
			
		||||
#define FR_EURO LALT(KC_E)
 | 
			
		||||
#define FR_BULT LALT(FR_DLR)
 | 
			
		||||
#define FR_TILD LALT(KC_N)
 | 
			
		||||
 | 
			
		||||
// Shift+Alt-ed characters
 | 
			
		||||
#define FR_LBRC	LSFT(LALT(KC_5))
 | 
			
		||||
#define FR_RBRC	LSFT(LALT(FR_RPRN))
 | 
			
		||||
#define FR_PIPE	LSFT(LALT(KC_L))
 | 
			
		||||
#define FR_BSLS	LSFT(LALT(FR_COLN))
 | 
			
		||||
#define FR_LBRC LSFT(LALT(KC_5))
 | 
			
		||||
#define FR_RBRC LSFT(LALT(FR_RPRN))
 | 
			
		||||
#define FR_PIPE LSFT(LALT(KC_L))
 | 
			
		||||
#define FR_BSLS LSFT(LALT(FR_COLN))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,45 +67,45 @@
 | 
			
		|||
#define DE_UE KC_LBRC
 | 
			
		||||
#define DE_OE KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define DE_CIRC KC_GRAVE // accent circumflex ^ and ring °
 | 
			
		||||
#define DE_ACUT KC_EQL // accent acute ´ and grave `
 | 
			
		||||
#define DE_PLUS KC_RBRC // + and * and ~
 | 
			
		||||
#define DE_HASH KC_BSLS // # and '
 | 
			
		||||
#define DE_LESS KC_NUBS // < and > and |
 | 
			
		||||
#define DE_MINS KC_SLSH // - and _
 | 
			
		||||
#define DE_CIRC KC_GRAVE  // accent circumflex ^ and ring °
 | 
			
		||||
#define DE_ACUT KC_EQL    // accent acute ´ and grave `
 | 
			
		||||
#define DE_PLUS KC_RBRC   // + and * and ~
 | 
			
		||||
#define DE_HASH KC_BSLS   // # and '
 | 
			
		||||
#define DE_LESS KC_NUBS   // < and > and |
 | 
			
		||||
#define DE_MINS KC_SLSH   // - and _
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define DE_RING LSFT(DE_CIRC) // °
 | 
			
		||||
#define DE_EXLM LSFT(KC_1) // !
 | 
			
		||||
#define DE_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define DE_PARA LSFT(KC_3) // §
 | 
			
		||||
#define DE_DLR  LSFT(KC_4) // $
 | 
			
		||||
#define DE_PERC LSFT(KC_5) // %
 | 
			
		||||
#define DE_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define DE_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define DE_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define DE_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define DE_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define DE_QST  LSFT(DE_SS) // ?
 | 
			
		||||
#define DE_GRV  LSFT(DE_ACUT) // `
 | 
			
		||||
#define DE_ASTR LSFT(DE_PLUS) // *
 | 
			
		||||
#define DE_QUOT LSFT(DE_HASH) // '
 | 
			
		||||
#define DE_MORE LSFT(DE_LESS) // >
 | 
			
		||||
#define DE_COLN LSFT(KC_DOT) // :
 | 
			
		||||
#define DE_SCLN LSFT(KC_COMM) // ;
 | 
			
		||||
#define DE_UNDS LSFT(DE_MINS) // _
 | 
			
		||||
#define DE_RING LSFT(DE_CIRC)  // °
 | 
			
		||||
#define DE_EXLM LSFT(KC_1)     // !
 | 
			
		||||
#define DE_DQOT LSFT(KC_2)     // "
 | 
			
		||||
#define DE_PARA LSFT(KC_3)     // §
 | 
			
		||||
#define DE_DLR LSFT(KC_4)      // $
 | 
			
		||||
#define DE_PERC LSFT(KC_5)     // %
 | 
			
		||||
#define DE_AMPR LSFT(KC_6)     // &
 | 
			
		||||
#define DE_SLSH LSFT(KC_7)     // /
 | 
			
		||||
#define DE_LPRN LSFT(KC_8)     // (
 | 
			
		||||
#define DE_RPRN LSFT(KC_9)     // )
 | 
			
		||||
#define DE_EQL LSFT(KC_0)      // =
 | 
			
		||||
#define DE_QST LSFT(DE_SS)     // ?
 | 
			
		||||
#define DE_GRV LSFT(DE_ACUT)   // `
 | 
			
		||||
#define DE_ASTR LSFT(DE_PLUS)  // *
 | 
			
		||||
#define DE_QUOT LSFT(DE_HASH)  // '
 | 
			
		||||
#define DE_MORE LSFT(DE_LESS)  // >
 | 
			
		||||
#define DE_COLN LSFT(KC_DOT)   // :
 | 
			
		||||
#define DE_SCLN LSFT(KC_COMM)  // ;
 | 
			
		||||
#define DE_UNDS LSFT(DE_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define DE_SQ2 ALGR(KC_2) // ²
 | 
			
		||||
#define DE_SQ3 ALGR(KC_3) // ³
 | 
			
		||||
#define DE_LCBR ALGR(KC_7) // {
 | 
			
		||||
#define DE_LBRC ALGR(KC_8) // [
 | 
			
		||||
#define DE_RBRC ALGR(KC_9) // ]
 | 
			
		||||
#define DE_RCBR ALGR(KC_0) // }
 | 
			
		||||
#define DE_BSLS ALGR(DE_SS) // backslash
 | 
			
		||||
#define DE_AT  ALGR(KC_Q) // @
 | 
			
		||||
#define DE_EURO ALGR(KC_E) // €
 | 
			
		||||
#define DE_TILD ALGR(DE_PLUS) // ~
 | 
			
		||||
#define DE_PIPE ALGR(DE_LESS) // |
 | 
			
		||||
#define DE_SQ2 ALGR(KC_2)      // ²
 | 
			
		||||
#define DE_SQ3 ALGR(KC_3)      // ³
 | 
			
		||||
#define DE_LCBR ALGR(KC_7)     // {
 | 
			
		||||
#define DE_LBRC ALGR(KC_8)     // [
 | 
			
		||||
#define DE_RBRC ALGR(KC_9)     // ]
 | 
			
		||||
#define DE_RCBR ALGR(KC_0)     // }
 | 
			
		||||
#define DE_BSLS ALGR(DE_SS)    // backslash
 | 
			
		||||
#define DE_AT ALGR(KC_Q)       // @
 | 
			
		||||
#define DE_EURO ALGR(KC_E)     // €
 | 
			
		||||
#define DE_TILD ALGR(DE_PLUS)  // ~
 | 
			
		||||
#define DE_PIPE ALGR(DE_LESS)  // |
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@
 | 
			
		|||
#define CH_G KC_G
 | 
			
		||||
#ifdef CH_H
 | 
			
		||||
// The ChibiOS ch.h file defines this...
 | 
			
		||||
#undef CH_H
 | 
			
		||||
#    undef CH_H
 | 
			
		||||
#endif
 | 
			
		||||
#define CH_H KC_H
 | 
			
		||||
#define CH_I KC_I
 | 
			
		||||
| 
						 | 
				
			
			@ -65,53 +65,53 @@
 | 
			
		|||
#define CH_DOT KC_DOT
 | 
			
		||||
#define CH_COMM KC_COMM
 | 
			
		||||
 | 
			
		||||
#define CH_QUOT KC_MINS // ' ? ´
 | 
			
		||||
#define CH_QUOT KC_MINS  // ' ? ´
 | 
			
		||||
#define CH_AE KC_QUOT
 | 
			
		||||
#define CH_UE KC_LBRC
 | 
			
		||||
#define CH_OE KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define CH_PARA KC_GRAVE // secction sign § and °
 | 
			
		||||
#define CH_CARR KC_EQL // carret ^ ` ~
 | 
			
		||||
#define CH_DIER KC_RBRC // dieresis ¨ ! ]
 | 
			
		||||
#define CH_DLR KC_BSLS // $ £ }
 | 
			
		||||
#define CH_LESS KC_NUBS // < and > and backslash
 | 
			
		||||
#define CH_MINS KC_SLSH // - and _
 | 
			
		||||
#define CH_PARA KC_GRAVE  // secction sign § and °
 | 
			
		||||
#define CH_CARR KC_EQL    // carret ^ ` ~
 | 
			
		||||
#define CH_DIER KC_RBRC   // dieresis ¨ ! ]
 | 
			
		||||
#define CH_DLR KC_BSLS    // $ £ }
 | 
			
		||||
#define CH_LESS KC_NUBS   // < and > and backslash
 | 
			
		||||
#define CH_MINS KC_SLSH   // - and _
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define CH_RING LSFT(CH_PARA) // °
 | 
			
		||||
#define CH_PLUS LSFT(KC_1) // +
 | 
			
		||||
#define CH_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define CH_PAST LSFT(KC_3) // *
 | 
			
		||||
#define CH_CELA  LSFT(KC_4) // ç
 | 
			
		||||
#define CH_PERC LSFT(KC_5) // %
 | 
			
		||||
#define CH_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define CH_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define CH_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define CH_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define CH_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define CH_QST  LSFT(CH_QUOT) // ?
 | 
			
		||||
#define CH_GRV  LSFT(CH_CARR) // `
 | 
			
		||||
#define CH_EXLM LSFT(CH_DIER) // !
 | 
			
		||||
#define CH_POND LSFT(CH_DLR) // £
 | 
			
		||||
#define CH_MORE LSFT(CH_LESS) // >
 | 
			
		||||
#define CH_COLN LSFT(KC_DOT) // :
 | 
			
		||||
#define CH_SCLN LSFT(KC_COMM) // ;
 | 
			
		||||
#define CH_UNDS LSFT(CH_MINS) // _
 | 
			
		||||
#define CH_RING LSFT(CH_PARA)  // °
 | 
			
		||||
#define CH_PLUS LSFT(KC_1)     // +
 | 
			
		||||
#define CH_DQOT LSFT(KC_2)     // "
 | 
			
		||||
#define CH_PAST LSFT(KC_3)     // *
 | 
			
		||||
#define CH_CELA LSFT(KC_4)     // ç
 | 
			
		||||
#define CH_PERC LSFT(KC_5)     // %
 | 
			
		||||
#define CH_AMPR LSFT(KC_6)     // &
 | 
			
		||||
#define CH_SLSH LSFT(KC_7)     // /
 | 
			
		||||
#define CH_LPRN LSFT(KC_8)     // (
 | 
			
		||||
#define CH_RPRN LSFT(KC_9)     // )
 | 
			
		||||
#define CH_EQL LSFT(KC_0)      // =
 | 
			
		||||
#define CH_QST LSFT(CH_QUOT)   // ?
 | 
			
		||||
#define CH_GRV LSFT(CH_CARR)   // `
 | 
			
		||||
#define CH_EXLM LSFT(CH_DIER)  // !
 | 
			
		||||
#define CH_POND LSFT(CH_DLR)   // £
 | 
			
		||||
#define CH_MORE LSFT(CH_LESS)  // >
 | 
			
		||||
#define CH_COLN LSFT(KC_DOT)   // :
 | 
			
		||||
#define CH_SCLN LSFT(KC_COMM)  // ;
 | 
			
		||||
#define CH_UNDS LSFT(CH_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define CH_BRBR ALGR(KC_1) // ¦ brocken bar
 | 
			
		||||
#define CH_AT ALGR(KC_2) // @
 | 
			
		||||
#define CH_HASH ALGR(KC_3) // #
 | 
			
		||||
#define CH_NOTL ALGR(KC_6) // ¬ negative logic
 | 
			
		||||
#define CH_PIPE ALGR(KC_7) // |
 | 
			
		||||
#define CH_CENT ALGR(KC_8) // ¢ cent
 | 
			
		||||
#define CH_ACUT ALGR(CH_QUOT) // ´
 | 
			
		||||
#define CH_TILD ALGR(CH_CARR) // ~
 | 
			
		||||
#define CH_EURO ALGR(KC_E) // €
 | 
			
		||||
#define CH_LBRC ALGR(CH_UE) // [
 | 
			
		||||
#define CH_RBRC ALGR(CH_DIER) // ]
 | 
			
		||||
#define CH_LCBR ALGR(CH_AE) // {
 | 
			
		||||
#define CH_RCBR ALGR(CH_DLR) // }
 | 
			
		||||
#define CH_BSLS ALGR(CH_LESS) // backslash
 | 
			
		||||
#define CH_BRBR ALGR(KC_1)     // ¦ brocken bar
 | 
			
		||||
#define CH_AT ALGR(KC_2)       // @
 | 
			
		||||
#define CH_HASH ALGR(KC_3)     // #
 | 
			
		||||
#define CH_NOTL ALGR(KC_6)     // ¬ negative logic
 | 
			
		||||
#define CH_PIPE ALGR(KC_7)     // |
 | 
			
		||||
#define CH_CENT ALGR(KC_8)     // ¢ cent
 | 
			
		||||
#define CH_ACUT ALGR(CH_QUOT)  // ´
 | 
			
		||||
#define CH_TILD ALGR(CH_CARR)  // ~
 | 
			
		||||
#define CH_EURO ALGR(KC_E)     // €
 | 
			
		||||
#define CH_LBRC ALGR(CH_UE)    // [
 | 
			
		||||
#define CH_RBRC ALGR(CH_DIER)  // ]
 | 
			
		||||
#define CH_LCBR ALGR(CH_AE)    // {
 | 
			
		||||
#define CH_RCBR ALGR(CH_DLR)   // }
 | 
			
		||||
#define CH_BSLS ALGR(CH_LESS)  // backslash
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,45 +68,45 @@
 | 
			
		|||
#define DE_OSX_UE KC_LBRC
 | 
			
		||||
#define DE_OSX_OE KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
 | 
			
		||||
#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
 | 
			
		||||
#define DE_OSX_PLUS KC_RBRC // + and * and ~
 | 
			
		||||
#define DE_OSX_HASH KC_BSLS // # and '
 | 
			
		||||
#define DE_OSX_LESS KC_GRV // < and > and |
 | 
			
		||||
#define DE_OSX_MINS KC_SLSH // - and _
 | 
			
		||||
#define DE_OSX_CIRC KC_NUBS  // accent circumflex ^ and ring °
 | 
			
		||||
#define DE_OSX_ACUT KC_EQL   // accent acute ´ and grave `
 | 
			
		||||
#define DE_OSX_PLUS KC_RBRC  // + and * and ~
 | 
			
		||||
#define DE_OSX_HASH KC_BSLS  // # and '
 | 
			
		||||
#define DE_OSX_LESS KC_GRV   // < and > and |
 | 
			
		||||
#define DE_OSX_MINS KC_SLSH  // - and _
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
 | 
			
		||||
#define DE_OSX_EXLM LSFT(KC_1) // !
 | 
			
		||||
#define DE_OSX_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define DE_OSX_PARA LSFT(KC_3) // §
 | 
			
		||||
#define DE_OSX_DLR  LSFT(KC_4) // $
 | 
			
		||||
#define DE_OSX_PERC LSFT(KC_5) // %
 | 
			
		||||
#define DE_OSX_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define DE_OSX_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define DE_OSX_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define DE_OSX_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define DE_OSX_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define DE_OSX_QST  LSFT(DE_OSX_SS) // ?
 | 
			
		||||
#define DE_OSX_GRV  LSFT(DE_OSX_ACUT) // `
 | 
			
		||||
#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
 | 
			
		||||
#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
 | 
			
		||||
#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
 | 
			
		||||
#define DE_OSX_COLN LSFT(KC_DOT) // :
 | 
			
		||||
#define DE_OSX_SCLN LSFT(KC_COMM) // ;
 | 
			
		||||
#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
 | 
			
		||||
#define DE_OSX_RING LSFT(DE_OSX_CIRC)  // °
 | 
			
		||||
#define DE_OSX_EXLM LSFT(KC_1)         // !
 | 
			
		||||
#define DE_OSX_DQOT LSFT(KC_2)         // "
 | 
			
		||||
#define DE_OSX_PARA LSFT(KC_3)         // §
 | 
			
		||||
#define DE_OSX_DLR LSFT(KC_4)          // $
 | 
			
		||||
#define DE_OSX_PERC LSFT(KC_5)         // %
 | 
			
		||||
#define DE_OSX_AMPR LSFT(KC_6)         // &
 | 
			
		||||
#define DE_OSX_SLSH LSFT(KC_7)         // /
 | 
			
		||||
#define DE_OSX_LPRN LSFT(KC_8)         // (
 | 
			
		||||
#define DE_OSX_RPRN LSFT(KC_9)         // )
 | 
			
		||||
#define DE_OSX_EQL LSFT(KC_0)          // =
 | 
			
		||||
#define DE_OSX_QST LSFT(DE_OSX_SS)     // ?
 | 
			
		||||
#define DE_OSX_GRV LSFT(DE_OSX_ACUT)   // `
 | 
			
		||||
#define DE_OSX_ASTR LSFT(DE_OSX_PLUS)  // *
 | 
			
		||||
#define DE_OSX_QUOT LSFT(DE_OSX_HASH)  // '
 | 
			
		||||
#define DE_OSX_MORE LSFT(DE_OSX_LESS)  // >
 | 
			
		||||
#define DE_OSX_COLN LSFT(KC_DOT)       // :
 | 
			
		||||
#define DE_OSX_SCLN LSFT(KC_COMM)      // ;
 | 
			
		||||
#define DE_OSX_UNDS LSFT(DE_OSX_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt-ed characters
 | 
			
		||||
//#define DE_OSX_SQ2 LALT(KC_2) // ²
 | 
			
		||||
//#define DE_OSX_SQ3 LALT(KC_3) // ³
 | 
			
		||||
#define DE_OSX_LCBR LALT(KC_8) // {
 | 
			
		||||
#define DE_OSX_LBRC LALT(KC_5) // [
 | 
			
		||||
#define DE_OSX_RBRC LALT(KC_6) // ]
 | 
			
		||||
#define DE_OSX_RCBR LALT(KC_9) // }
 | 
			
		||||
#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
 | 
			
		||||
#define DE_OSX_AT  LALT(DE_OSX_L) // @
 | 
			
		||||
#define DE_OSX_EURO LALT(KC_E) // €
 | 
			
		||||
#define DE_OSX_TILD LALT(DE_OSX_N) // ~
 | 
			
		||||
#define DE_OSX_PIPE LALT(DE_OSX_7) // |
 | 
			
		||||
#define DE_OSX_LCBR LALT(KC_8)        // {
 | 
			
		||||
#define DE_OSX_LBRC LALT(KC_5)        // [
 | 
			
		||||
#define DE_OSX_RBRC LALT(KC_6)        // ]
 | 
			
		||||
#define DE_OSX_RCBR LALT(KC_9)        // }
 | 
			
		||||
#define DE_OSX_BSLS LALT(LSFT(KC_7))  // backslash
 | 
			
		||||
#define DE_OSX_AT LALT(DE_OSX_L)      // @
 | 
			
		||||
#define DE_OSX_EURO LALT(KC_E)        // €
 | 
			
		||||
#define DE_OSX_TILD LALT(DE_OSX_N)    // ~
 | 
			
		||||
#define DE_OSX_PIPE LALT(DE_OSX_7)    // |
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,64 +73,64 @@
 | 
			
		|||
#define HU_AA KC_QUOT
 | 
			
		||||
#define HU_UEE KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define HU_MINS KC_SLSH // - 
 | 
			
		||||
#define HU_MINS KC_SLSH  // -
 | 
			
		||||
 | 
			
		||||
#define HU_DOT KC_DOT
 | 
			
		||||
#define HU_COMM KC_COMM
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
// num row
 | 
			
		||||
#define HU_PARA LSFT(HU_0) // §
 | 
			
		||||
#define HU_QUOT LSFT(HU_1) // '
 | 
			
		||||
#define HU_DQOT LSFT(HU_2) // "
 | 
			
		||||
#define HU_PLUS LSFT(HU_3) // + 
 | 
			
		||||
#define HU_EXLM LSFT(HU_4) // !
 | 
			
		||||
#define HU_PERC LSFT(HU_5) // %
 | 
			
		||||
#define HU_SLSH LSFT(HU_6) // /
 | 
			
		||||
#define HU_EQL LSFT(HU_7) // =
 | 
			
		||||
#define HU_LPRN LSFT(HU_8) // (
 | 
			
		||||
#define HU_RPRN LSFT(HU_9) // )
 | 
			
		||||
#define HU_PARA LSFT(HU_0)  // §
 | 
			
		||||
#define HU_QUOT LSFT(HU_1)  // '
 | 
			
		||||
#define HU_DQOT LSFT(HU_2)  // "
 | 
			
		||||
#define HU_PLUS LSFT(HU_3)  // +
 | 
			
		||||
#define HU_EXLM LSFT(HU_4)  // !
 | 
			
		||||
#define HU_PERC LSFT(HU_5)  // %
 | 
			
		||||
#define HU_SLSH LSFT(HU_6)  // /
 | 
			
		||||
#define HU_EQL LSFT(HU_7)   // =
 | 
			
		||||
#define HU_LPRN LSFT(HU_8)  // (
 | 
			
		||||
#define HU_RPRN LSFT(HU_9)  // )
 | 
			
		||||
 | 
			
		||||
// í,y row
 | 
			
		||||
#define HU_II	KC_NUBS
 | 
			
		||||
#define HU_QST  LSFT(HU_COMM) // ?
 | 
			
		||||
#define HU_COLN LSFT(HU_DOT) // :
 | 
			
		||||
#define HU_UNDS LSFT(HU_MINS) // _
 | 
			
		||||
#define HU_II KC_NUBS
 | 
			
		||||
#define HU_QST LSFT(HU_COMM)   // ?
 | 
			
		||||
#define HU_COLN LSFT(HU_DOT)   // :
 | 
			
		||||
#define HU_UNDS LSFT(HU_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt Gr'd characters
 | 
			
		||||
// num row
 | 
			
		||||
#define HU_TILD ALGR(HU_1) // ~
 | 
			
		||||
#define HU_TILD ALGR(HU_1)  // ~
 | 
			
		||||
//#define HU_?? ALGR(HU_2) // ˇ (proper name?)
 | 
			
		||||
#define HU_CIRC ALGR(HU_3) // ^
 | 
			
		||||
#define HU_BRV ALGR(HU_4) // ˘
 | 
			
		||||
#define HU_RING ALGR(HU_5) // °
 | 
			
		||||
#define HU_CIRC ALGR(HU_3)  // ^
 | 
			
		||||
#define HU_BRV ALGR(HU_4)   // ˘
 | 
			
		||||
#define HU_RING ALGR(HU_5)  // °
 | 
			
		||||
//#define HU_?? ALGR(HU_6) // ˛ (proper name?)
 | 
			
		||||
#define HU_GRV ALGR(HU_7) // `
 | 
			
		||||
#define HU_GRV ALGR(HU_7)  // `
 | 
			
		||||
//#define HU_?? ALGR(HU_8) // ˙ (proper name?)
 | 
			
		||||
#define HU_ACUT ALGR(HU_9) // ´ 
 | 
			
		||||
#define HU_ACUT ALGR(HU_9)  // ´
 | 
			
		||||
 | 
			
		||||
// q row
 | 
			
		||||
#define HU_BSLS ALGR(HU_Q) // \ backslash 
 | 
			
		||||
#define HU_PIPE ALGR(HU_W) // |
 | 
			
		||||
#define HU_DIV ALGR(HU_OEE) // ÷
 | 
			
		||||
#define HU_CRSS ALGR(HU_UU) // ×
 | 
			
		||||
#define HU_EURO ALGR(HU_U) // €
 | 
			
		||||
#define HU_BSLS ALGR(HU_Q)   // \ backslash
 | 
			
		||||
#define HU_PIPE ALGR(HU_W)   // |
 | 
			
		||||
#define HU_DIV ALGR(HU_OEE)  // ÷
 | 
			
		||||
#define HU_CRSS ALGR(HU_UU)  // ×
 | 
			
		||||
#define HU_EURO ALGR(HU_U)   // €
 | 
			
		||||
 | 
			
		||||
// a row
 | 
			
		||||
#define HU_LBRC ALGR(HU_F) // [
 | 
			
		||||
#define HU_RBRC ALGR(HU_G) // ]
 | 
			
		||||
#define HU_DLR  ALGR(HU_EE) // $
 | 
			
		||||
#define HU_SS ALGR(HU_AA) // ß
 | 
			
		||||
#define HU_LBRC ALGR(HU_F)  // [
 | 
			
		||||
#define HU_RBRC ALGR(HU_G)  // ]
 | 
			
		||||
#define HU_DLR ALGR(HU_EE)  // $
 | 
			
		||||
#define HU_SS ALGR(HU_AA)   // ß
 | 
			
		||||
 | 
			
		||||
// í,y row
 | 
			
		||||
#define HU_LESS ALGR(KC_NUBS) // < 
 | 
			
		||||
#define HU_MORE ALGR(HU_Y) // >
 | 
			
		||||
#define HU_HASH ALGR(HU_X) // # 
 | 
			
		||||
#define HU_AMPR ALGR(HU_C) // &
 | 
			
		||||
#define HU_AT  ALGR(HU_V) // @
 | 
			
		||||
#define HU_LCBR ALGR(HU_B)// {
 | 
			
		||||
#define HU_RCBR ALGR(HU_N) // }
 | 
			
		||||
#define HU_SCLN ALGR(HU_COMM) // ;
 | 
			
		||||
#define HU_ASTR ALGR(HU_MINS) // *
 | 
			
		||||
#define HU_LESS ALGR(KC_NUBS)  // <
 | 
			
		||||
#define HU_MORE ALGR(HU_Y)     // >
 | 
			
		||||
#define HU_HASH ALGR(HU_X)     // #
 | 
			
		||||
#define HU_AMPR ALGR(HU_C)     // &
 | 
			
		||||
#define HU_AT ALGR(HU_V)       // @
 | 
			
		||||
#define HU_LCBR ALGR(HU_B)     // {
 | 
			
		||||
#define HU_RCBR ALGR(HU_N)     // }
 | 
			
		||||
#define HU_SCLN ALGR(HU_COMM)  // ;
 | 
			
		||||
#define HU_ASTR ALGR(HU_MINS)  // *
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,46 +70,43 @@
 | 
			
		|||
 | 
			
		||||
#define IT_APOS KC_MINS  // ', ?,  ,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define IT_BKSL KC_GRAVE // backslash \, |
 | 
			
		||||
 | 
			
		||||
#define IT_BKSL KC_GRAVE  // backslash \, |
 | 
			
		||||
 | 
			
		||||
#define IT_ACUT  // accent acute ´ and grave `
 | 
			
		||||
 | 
			
		||||
#define IT_LESS KC_NUBS // < and > and |
 | 
			
		||||
#define IT_MINS KC_SLSH // - and _
 | 
			
		||||
#define IT_LESS KC_NUBS  // < and > and |
 | 
			
		||||
#define IT_MINS KC_SLSH  // - and _
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define IT_PIPE LSFT(IT_BKSL) // °
 | 
			
		||||
#define IT_EXLM LSFT(KC_1) // !
 | 
			
		||||
#define IT_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define IT_STRL LSFT(KC_3) // £
 | 
			
		||||
#define IT_DLR  LSFT(KC_4) // $
 | 
			
		||||
#define IT_PERC LSFT(KC_5) // %
 | 
			
		||||
#define IT_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define IT_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define IT_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define IT_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define IT_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define IT_QST  LSFT(IT_APOS) // ?
 | 
			
		||||
#define IT_CRC  LSFT(IT_IACC) // ^
 | 
			
		||||
#define IT_ASTR LSFT(IT_PLUS) // *
 | 
			
		||||
#define IT_MORE LSFT(IT_LESS) // >
 | 
			
		||||
#define IT_COLN LSFT(IT_DOT) // :
 | 
			
		||||
#define IT_SCLN LSFT(IT_COMM) // ;
 | 
			
		||||
#define IT_UNDS LSFT(IT_MINS) // _
 | 
			
		||||
#define IT_PIPE LSFT(IT_BKSL)  // °
 | 
			
		||||
#define IT_EXLM LSFT(KC_1)     // !
 | 
			
		||||
#define IT_DQOT LSFT(KC_2)     // "
 | 
			
		||||
#define IT_STRL LSFT(KC_3)     // £
 | 
			
		||||
#define IT_DLR LSFT(KC_4)      // $
 | 
			
		||||
#define IT_PERC LSFT(KC_5)     // %
 | 
			
		||||
#define IT_AMPR LSFT(KC_6)     // &
 | 
			
		||||
#define IT_SLSH LSFT(KC_7)     // /
 | 
			
		||||
#define IT_LPRN LSFT(KC_8)     // (
 | 
			
		||||
#define IT_RPRN LSFT(KC_9)     // )
 | 
			
		||||
#define IT_EQL LSFT(KC_0)      // =
 | 
			
		||||
#define IT_QST LSFT(IT_APOS)   // ?
 | 
			
		||||
#define IT_CRC LSFT(IT_IACC)   // ^
 | 
			
		||||
#define IT_ASTR LSFT(IT_PLUS)  // *
 | 
			
		||||
#define IT_MORE LSFT(IT_LESS)  // >
 | 
			
		||||
#define IT_COLN LSFT(IT_DOT)   // :
 | 
			
		||||
#define IT_SCLN LSFT(IT_COMM)  // ;
 | 
			
		||||
#define IT_UNDS LSFT(IT_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define IT_LCBR ALGR(KC_7) // {
 | 
			
		||||
#define IT_LBRC ALGR(IT_EACC) // [
 | 
			
		||||
#define IT_RBRC ALGR(IT_PLUS) // ]
 | 
			
		||||
#define IT_RCBR ALGR(KC_0) // }
 | 
			
		||||
#define IT_AT   ALGR(IT_OACC) 	// @
 | 
			
		||||
#define IT_EURO ALGR(KC_E) 		// €
 | 
			
		||||
#define IT_PIPE LSFT(IT_BKSL) 	// |
 | 
			
		||||
#define	IT_SHRP	ALGR(IT_AACC) 	// #
 | 
			
		||||
#define IT_LCBR ALGR(KC_7)     // {
 | 
			
		||||
#define IT_LBRC ALGR(IT_EACC)  // [
 | 
			
		||||
#define IT_RBRC ALGR(IT_PLUS)  // ]
 | 
			
		||||
#define IT_RCBR ALGR(KC_0)     // }
 | 
			
		||||
#define IT_AT ALGR(IT_OACC)    // @
 | 
			
		||||
#define IT_EURO ALGR(KC_E)     // €
 | 
			
		||||
#define IT_PIPE LSFT(IT_BKSL)  // |
 | 
			
		||||
#define IT_SHRP ALGR(IT_AACC)  // #
 | 
			
		||||
 | 
			
		||||
#define	IT_X_PLUS	X_RBRACKET 	// #
 | 
			
		||||
#define IT_X_PLUS X_RBRACKET  // #
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,61 +20,55 @@
 | 
			
		|||
 * note: This website is written in Japanese.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef KEYMAP_JP_H
 | 
			
		||||
#define KEYMAP_JP_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
#define JP_ZHTG KC_GRV   // hankaku/zenkaku|kanzi
 | 
			
		||||
#define JP_YEN KC_INT3   // yen, |
 | 
			
		||||
#define JP_CIRC KC_EQL   // ^, ~
 | 
			
		||||
#define JP_AT KC_LBRC    // @, `
 | 
			
		||||
#define JP_LBRC KC_RBRC  // [, {
 | 
			
		||||
#define JP_COLN KC_QUOT  // :, *
 | 
			
		||||
#define JP_RBRC KC_NUHS  // ], }
 | 
			
		||||
#define JP_BSLS KC_INT1  // \, _
 | 
			
		||||
#define JP_MHEN KC_INT5  // muhenkan
 | 
			
		||||
#define JP_HENK KC_INT4  // henkan
 | 
			
		||||
#define JP_KANA KC_INT2  // katakana/hiragana|ro-mazi
 | 
			
		||||
 | 
			
		||||
#define JP_ZHTG KC_GRV  // hankaku/zenkaku|kanzi
 | 
			
		||||
#define JP_YEN  KC_INT3 // yen, |
 | 
			
		||||
#define JP_CIRC KC_EQL  // ^, ~
 | 
			
		||||
#define JP_AT   KC_LBRC // @, `
 | 
			
		||||
#define JP_LBRC KC_RBRC // [, {
 | 
			
		||||
#define JP_COLN KC_QUOT // :, *
 | 
			
		||||
#define JP_RBRC KC_NUHS // ], }
 | 
			
		||||
#define JP_BSLS KC_INT1 // \, _
 | 
			
		||||
#define JP_MHEN KC_INT5 // muhenkan
 | 
			
		||||
#define JP_HENK KC_INT4 // henkan
 | 
			
		||||
#define JP_KANA KC_INT2 // katakana/hiragana|ro-mazi
 | 
			
		||||
 | 
			
		||||
#define JP_MKANA KC_LANG1 //kana on MacOSX
 | 
			
		||||
#define JP_MEISU KC_LANG2 //eisu on MacOSX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Aliases for shifted symbols
 | 
			
		||||
#define JP_DQT  LSFT(KC_2)    // "
 | 
			
		||||
#define JP_AMPR LSFT(KC_6)    // &
 | 
			
		||||
#define JP_QUOT LSFT(KC_7)    // '
 | 
			
		||||
#define JP_LPRN LSFT(KC_8)    // (
 | 
			
		||||
#define JP_RPRN LSFT(KC_9)    // )
 | 
			
		||||
#define JP_EQL  LSFT(KC_MINS) // =
 | 
			
		||||
#define JP_TILD LSFT(JP_CIRC) // ~
 | 
			
		||||
#define JP_PIPE LSFT(JP_YEN)  // |
 | 
			
		||||
#define JP_GRV  LSFT(JP_AT)   // `
 | 
			
		||||
#define JP_LCBR LSFT(JP_LBRC) // {
 | 
			
		||||
#define JP_PLUS LSFT(KC_SCLN) // +
 | 
			
		||||
#define JP_ASTR LSFT(JP_COLN) // *
 | 
			
		||||
#define JP_RCBR LSFT(JP_RBRC) // }
 | 
			
		||||
#define JP_UNDS LSFT(JP_BSLS) // _
 | 
			
		||||
#define JP_MKANA KC_LANG1  // kana on MacOSX
 | 
			
		||||
#define JP_MEISU KC_LANG2  // eisu on MacOSX
 | 
			
		||||
 | 
			
		||||
// Aliases for shifted symbols
 | 
			
		||||
#define JP_DQT LSFT(KC_2)      // "
 | 
			
		||||
#define JP_AMPR LSFT(KC_6)     // &
 | 
			
		||||
#define JP_QUOT LSFT(KC_7)     // '
 | 
			
		||||
#define JP_LPRN LSFT(KC_8)     // (
 | 
			
		||||
#define JP_RPRN LSFT(KC_9)     // )
 | 
			
		||||
#define JP_EQL LSFT(KC_MINS)   // =
 | 
			
		||||
#define JP_TILD LSFT(JP_CIRC)  // ~
 | 
			
		||||
#define JP_PIPE LSFT(JP_YEN)   // |
 | 
			
		||||
#define JP_GRV LSFT(JP_AT)     // `
 | 
			
		||||
#define JP_LCBR LSFT(JP_LBRC)  // {
 | 
			
		||||
#define JP_PLUS LSFT(KC_SCLN)  // +
 | 
			
		||||
#define JP_ASTR LSFT(JP_COLN)  // *
 | 
			
		||||
#define JP_RCBR LSFT(JP_RBRC)  // }
 | 
			
		||||
#define JP_UNDS LSFT(JP_BSLS)  // _
 | 
			
		||||
 | 
			
		||||
// These symbols are correspond to US101-layout.
 | 
			
		||||
#define JP_MINS KC_MINS // -
 | 
			
		||||
#define JP_SCLN KC_SCLN // ;
 | 
			
		||||
#define JP_COMM KC_COMM // ,
 | 
			
		||||
#define JP_DOT  KC_DOT  // .
 | 
			
		||||
#define JP_SLSH KC_SLSH // /
 | 
			
		||||
#define JP_MINS KC_MINS  // -
 | 
			
		||||
#define JP_SCLN KC_SCLN  // ;
 | 
			
		||||
#define JP_COMM KC_COMM  // ,
 | 
			
		||||
#define JP_DOT KC_DOT    // .
 | 
			
		||||
#define JP_SLSH KC_SLSH  // /
 | 
			
		||||
// shifted
 | 
			
		||||
#define JP_EXLM KC_EXLM // !
 | 
			
		||||
#define JP_HASH KC_HASH // #
 | 
			
		||||
#define JP_DLR  KC_DLR  // $
 | 
			
		||||
#define JP_PERC KC_PERC // %
 | 
			
		||||
#define JP_LT   KC_LT   // <
 | 
			
		||||
#define JP_GT   KC_GT   // >
 | 
			
		||||
#define JP_QUES KC_QUES // ?
 | 
			
		||||
 | 
			
		||||
#define JP_EXLM KC_EXLM  // !
 | 
			
		||||
#define JP_HASH KC_HASH  // #
 | 
			
		||||
#define JP_DLR KC_DLR    // $
 | 
			
		||||
#define JP_PERC KC_PERC  // %
 | 
			
		||||
#define JP_LT KC_LT      // <
 | 
			
		||||
#define JP_GT KC_GT      // >
 | 
			
		||||
#define JP_QUES KC_QUES  // ?
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,52 +19,52 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define NO_HALF	KC_GRV
 | 
			
		||||
#define NO_PLUS	KC_MINS
 | 
			
		||||
#define NO_ACUT	KC_EQL
 | 
			
		||||
#define NO_HALF KC_GRV
 | 
			
		||||
#define NO_PLUS KC_MINS
 | 
			
		||||
#define NO_ACUT KC_EQL
 | 
			
		||||
 | 
			
		||||
#define NO_AM	KC_LBRC
 | 
			
		||||
#define NO_QUOT	KC_RBRC // this is the "umlaut" char on Nordic keyboards, Apple layout
 | 
			
		||||
#define NO_AE	KC_SCLN
 | 
			
		||||
#define NO_OSLH	KC_QUOT
 | 
			
		||||
#define	NO_APOS	KC_NUHS
 | 
			
		||||
#define NO_AM KC_LBRC
 | 
			
		||||
#define NO_QUOT KC_RBRC  // this is the "umlaut" char on Nordic keyboards, Apple layout
 | 
			
		||||
#define NO_AE KC_SCLN
 | 
			
		||||
#define NO_OSLH KC_QUOT
 | 
			
		||||
#define NO_APOS KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define NO_LESS	KC_NUBS
 | 
			
		||||
#define NO_LESS KC_NUBS
 | 
			
		||||
#define NO_MINS KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define NO_SECT LSFT(NO_HALF)
 | 
			
		||||
#define NO_QUO2	LSFT(KC_2)
 | 
			
		||||
#define NO_QUO2 LSFT(KC_2)
 | 
			
		||||
#define NO_BULT LSFT(KC_4)
 | 
			
		||||
#define NO_AMPR	LSFT(KC_6)
 | 
			
		||||
#define NO_AMPR LSFT(KC_6)
 | 
			
		||||
#define NO_SLSH LSFT(KC_7)
 | 
			
		||||
#define NO_LPRN	LSFT(KC_8)
 | 
			
		||||
#define NO_RPRN	LSFT(KC_9)
 | 
			
		||||
#define NO_EQL	LSFT(KC_0)
 | 
			
		||||
#define NO_QUES	LSFT(NO_PLUS)
 | 
			
		||||
#define NO_GRV	LSFT(NO_ACUT)
 | 
			
		||||
#define NO_LPRN LSFT(KC_8)
 | 
			
		||||
#define NO_RPRN LSFT(KC_9)
 | 
			
		||||
#define NO_EQL LSFT(KC_0)
 | 
			
		||||
#define NO_QUES LSFT(NO_PLUS)
 | 
			
		||||
#define NO_GRV LSFT(NO_ACUT)
 | 
			
		||||
 | 
			
		||||
#define NO_CIRC LSFT(NO_QUOT)
 | 
			
		||||
 | 
			
		||||
#define NO_GRTR	LSFT(NO_LESS)
 | 
			
		||||
#define NO_GRTR LSFT(NO_LESS)
 | 
			
		||||
#define NO_SCLN LSFT(KC_COMM)
 | 
			
		||||
#define NO_COLN LSFT(KC_DOT)
 | 
			
		||||
#define NO_UNDS LSFT(NO_MINS)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define NO_AT	ALGR(KC_2)
 | 
			
		||||
#define NO_PND	ALGR(KC_3)
 | 
			
		||||
#define NO_DLR	ALGR(KC_4)
 | 
			
		||||
#define NO_AT ALGR(KC_2)
 | 
			
		||||
#define NO_PND ALGR(KC_3)
 | 
			
		||||
#define NO_DLR ALGR(KC_4)
 | 
			
		||||
#define NO_LCBR ALGR(KC_7)
 | 
			
		||||
#define NO_LBRC ALGR(KC_8)
 | 
			
		||||
#define NO_RBRC ALGR(KC_9)
 | 
			
		||||
#define NO_RCBR	ALGR(KC_0)
 | 
			
		||||
#define NO_RCBR ALGR(KC_0)
 | 
			
		||||
#define NO_PIPE ALGR(KC_NUBS)
 | 
			
		||||
 | 
			
		||||
#define NO_EURO ALGR(KC_E)
 | 
			
		||||
#define NO_TILD ALGR(NO_QUOT)
 | 
			
		||||
 | 
			
		||||
#define NO_BSLS ALGR(KC_MINS)
 | 
			
		||||
#define NO_MU 	ALGR(KC_M)
 | 
			
		||||
#define NO_MU ALGR(KC_M)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,37 +18,36 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
// For software implementation of norman
 | 
			
		||||
#define NM_Q    KC_Q
 | 
			
		||||
#define NM_W    KC_W
 | 
			
		||||
#define NM_D    KC_E
 | 
			
		||||
#define NM_F    KC_R
 | 
			
		||||
#define NM_K    KC_T
 | 
			
		||||
#define NM_J    KC_Y
 | 
			
		||||
#define NM_U    KC_U
 | 
			
		||||
#define NM_R    KC_I
 | 
			
		||||
#define NM_L    KC_O
 | 
			
		||||
#define NM_Q KC_Q
 | 
			
		||||
#define NM_W KC_W
 | 
			
		||||
#define NM_D KC_E
 | 
			
		||||
#define NM_F KC_R
 | 
			
		||||
#define NM_K KC_T
 | 
			
		||||
#define NM_J KC_Y
 | 
			
		||||
#define NM_U KC_U
 | 
			
		||||
#define NM_R KC_I
 | 
			
		||||
#define NM_L KC_O
 | 
			
		||||
#define NM_SCLN KC_P
 | 
			
		||||
#define NM_COLN LSFT(NM_SCLN)
 | 
			
		||||
 | 
			
		||||
#define NM_A    KC_A
 | 
			
		||||
#define NM_S    KC_S
 | 
			
		||||
#define NM_E    KC_D
 | 
			
		||||
#define NM_T    KC_F
 | 
			
		||||
#define NM_G    KC_G
 | 
			
		||||
#define NM_Y    KC_H
 | 
			
		||||
#define NM_N    KC_J
 | 
			
		||||
#define NM_I    KC_K
 | 
			
		||||
#define NM_O    KC_L
 | 
			
		||||
#define NM_H    KC_SCLN
 | 
			
		||||
#define NM_A KC_A
 | 
			
		||||
#define NM_S KC_S
 | 
			
		||||
#define NM_E KC_D
 | 
			
		||||
#define NM_T KC_F
 | 
			
		||||
#define NM_G KC_G
 | 
			
		||||
#define NM_Y KC_H
 | 
			
		||||
#define NM_N KC_J
 | 
			
		||||
#define NM_I KC_K
 | 
			
		||||
#define NM_O KC_L
 | 
			
		||||
#define NM_H KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define NM_Z    KC_Z
 | 
			
		||||
#define NM_X    KC_X
 | 
			
		||||
#define NM_C    KC_C
 | 
			
		||||
#define NM_V    KC_V
 | 
			
		||||
#define NM_B    KC_B
 | 
			
		||||
#define NM_P    KC_N
 | 
			
		||||
#define NM_M    KC_M
 | 
			
		||||
#define NM_Z KC_Z
 | 
			
		||||
#define NM_X KC_X
 | 
			
		||||
#define NM_C KC_C
 | 
			
		||||
#define NM_V KC_V
 | 
			
		||||
#define NM_B KC_B
 | 
			
		||||
#define NM_P KC_N
 | 
			
		||||
#define NM_M KC_M
 | 
			
		||||
#define NM_COMM KC_COMM
 | 
			
		||||
#define NM_DOT  KC_DOT
 | 
			
		||||
#define NM_DOT KC_DOT
 | 
			
		||||
#define NM_SLSH KC_SLSH
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,35 +22,35 @@
 | 
			
		|||
 | 
			
		||||
// Norwegian redifinitions from the nordic keyset
 | 
			
		||||
#undef NO_ACUT
 | 
			
		||||
#define NO_ACUT	ALGR(NO_BSLS)  // ´
 | 
			
		||||
#define NO_ACUT ALGR(NO_BSLS)  // ´
 | 
			
		||||
#undef NO_AE
 | 
			
		||||
#define NO_AE	KC_QUOT  // æ
 | 
			
		||||
#define NO_AE KC_QUOT  // æ
 | 
			
		||||
#undef NO_BSLS
 | 
			
		||||
#define NO_BSLS KC_EQL  // '\'
 | 
			
		||||
#undef NO_CIRC
 | 
			
		||||
#define NO_CIRC LSFT(KC_RBRC)  // ^
 | 
			
		||||
#undef NO_GRV
 | 
			
		||||
#define NO_GRV	LSFT(NO_BSLS)  //
 | 
			
		||||
#define NO_GRV LSFT(NO_BSLS)  //
 | 
			
		||||
#undef NO_OSLH
 | 
			
		||||
#define NO_OSLH	KC_SCLN  // ø
 | 
			
		||||
#define NO_OSLH KC_SCLN  // ø
 | 
			
		||||
#undef NO_PIPE
 | 
			
		||||
#define NO_PIPE KC_GRV  // |
 | 
			
		||||
 | 
			
		||||
// Additional norwegian keys not defined in the nordic keyset
 | 
			
		||||
#define NO_AA	KC_LBRC  // å
 | 
			
		||||
#define NO_AA KC_LBRC          // å
 | 
			
		||||
#define NO_ASTR LSFT(KC_BSLS)  // *
 | 
			
		||||
 | 
			
		||||
// Norwegian unique MAC characters
 | 
			
		||||
#define NO_ACUT_MAC KC_EQL  // =
 | 
			
		||||
#define NO_APOS_MAC KC_NUBS  // '
 | 
			
		||||
#define NO_AT_MAC   KC_BSLS  // @
 | 
			
		||||
#define NO_BSLS_MAC ALGR(LSFT(KC_7)) // '\'
 | 
			
		||||
#define NO_DLR_MAC  LSFT(KC_4) // $
 | 
			
		||||
#define NO_GRV_MAC ALGR(NO_BSLS) // `
 | 
			
		||||
#define NO_GRTR_MAC LSFT(KC_GRV)  // >
 | 
			
		||||
#define NO_ACUT_MAC KC_EQL            // =
 | 
			
		||||
#define NO_APOS_MAC KC_NUBS           // '
 | 
			
		||||
#define NO_AT_MAC KC_BSLS             // @
 | 
			
		||||
#define NO_BSLS_MAC ALGR(LSFT(KC_7))  // '\'
 | 
			
		||||
#define NO_DLR_MAC LSFT(KC_4)         // $
 | 
			
		||||
#define NO_GRV_MAC ALGR(NO_BSLS)      // `
 | 
			
		||||
#define NO_GRTR_MAC LSFT(KC_GRV)      // >
 | 
			
		||||
#define NO_LCBR_MAC ALGR(LSFT(KC_8))  // }
 | 
			
		||||
#define NO_LESS_MAC KC_GRV  // >
 | 
			
		||||
#define NO_PIPE_MAC ALGR(KC_7)  // |
 | 
			
		||||
#define NO_LESS_MAC KC_GRV            // >
 | 
			
		||||
#define NO_PIPE_MAC ALGR(KC_7)        // |
 | 
			
		||||
#define NO_RCBR_MAC ALGR(LSFT(KC_9))  // }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,30 +18,30 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
#define PV_NUM  KC_1
 | 
			
		||||
#define PV_LS   KC_Q
 | 
			
		||||
#define PV_LT   KC_W
 | 
			
		||||
#define PV_LP   KC_E
 | 
			
		||||
#define PV_LH   KC_R
 | 
			
		||||
#define PV_LK   KC_S
 | 
			
		||||
#define PV_LW   KC_D
 | 
			
		||||
#define PV_LR   KC_F
 | 
			
		||||
#define PV_NUM KC_1
 | 
			
		||||
#define PV_LS KC_Q
 | 
			
		||||
#define PV_LT KC_W
 | 
			
		||||
#define PV_LP KC_E
 | 
			
		||||
#define PV_LH KC_R
 | 
			
		||||
#define PV_LK KC_S
 | 
			
		||||
#define PV_LW KC_D
 | 
			
		||||
#define PV_LR KC_F
 | 
			
		||||
 | 
			
		||||
#define PV_STAR KC_Y
 | 
			
		||||
#define PV_RF   KC_U
 | 
			
		||||
#define PV_RP   KC_I
 | 
			
		||||
#define PV_RL   KC_O
 | 
			
		||||
#define PV_RT   KC_P
 | 
			
		||||
#define PV_RD   KC_LBRC
 | 
			
		||||
#define PV_RR   KC_J
 | 
			
		||||
#define PV_RB   KC_K
 | 
			
		||||
#define PV_RG   KC_L
 | 
			
		||||
#define PV_RS   KC_SCLN
 | 
			
		||||
#define PV_RZ   KC_QUOT
 | 
			
		||||
#define PV_RF KC_U
 | 
			
		||||
#define PV_RP KC_I
 | 
			
		||||
#define PV_RL KC_O
 | 
			
		||||
#define PV_RT KC_P
 | 
			
		||||
#define PV_RD KC_LBRC
 | 
			
		||||
#define PV_RR KC_J
 | 
			
		||||
#define PV_RB KC_K
 | 
			
		||||
#define PV_RG KC_L
 | 
			
		||||
#define PV_RS KC_SCLN
 | 
			
		||||
#define PV_RZ KC_QUOT
 | 
			
		||||
 | 
			
		||||
#define PV_A    KC_C
 | 
			
		||||
#define PV_O    KC_V
 | 
			
		||||
#define PV_E    KC_N
 | 
			
		||||
#define PV_U    KC_M
 | 
			
		||||
#define PV_A KC_C
 | 
			
		||||
#define PV_O KC_V
 | 
			
		||||
#define PV_E KC_N
 | 
			
		||||
#define PV_U KC_M
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,30 +18,30 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_dvorak.h"
 | 
			
		||||
 | 
			
		||||
#define PD_NUM  DV_1
 | 
			
		||||
#define PD_LS   DV_Q
 | 
			
		||||
#define PD_LT   DV_W
 | 
			
		||||
#define PD_LP   DV_E
 | 
			
		||||
#define PD_LH   DV_R
 | 
			
		||||
#define PD_LK   DV_S
 | 
			
		||||
#define PD_LW   DV_D
 | 
			
		||||
#define PD_LR   DV_F
 | 
			
		||||
#define PD_NUM DV_1
 | 
			
		||||
#define PD_LS DV_Q
 | 
			
		||||
#define PD_LT DV_W
 | 
			
		||||
#define PD_LP DV_E
 | 
			
		||||
#define PD_LH DV_R
 | 
			
		||||
#define PD_LK DV_S
 | 
			
		||||
#define PD_LW DV_D
 | 
			
		||||
#define PD_LR DV_F
 | 
			
		||||
 | 
			
		||||
#define PD_STAR DV_Y
 | 
			
		||||
#define PD_RF   DV_U
 | 
			
		||||
#define PD_RP   DV_I
 | 
			
		||||
#define PD_RL   DV_O
 | 
			
		||||
#define PD_RT   DV_P
 | 
			
		||||
#define PD_RD   DV_LBRC
 | 
			
		||||
#define PD_RR   DV_J
 | 
			
		||||
#define PD_RB   DV_K
 | 
			
		||||
#define PD_RG   DV_L
 | 
			
		||||
#define PD_RS   DV_SCLN
 | 
			
		||||
#define PD_RZ   DV_QUOT
 | 
			
		||||
#define PD_RF DV_U
 | 
			
		||||
#define PD_RP DV_I
 | 
			
		||||
#define PD_RL DV_O
 | 
			
		||||
#define PD_RT DV_P
 | 
			
		||||
#define PD_RD DV_LBRC
 | 
			
		||||
#define PD_RR DV_J
 | 
			
		||||
#define PD_RB DV_K
 | 
			
		||||
#define PD_RG DV_L
 | 
			
		||||
#define PD_RS DV_SCLN
 | 
			
		||||
#define PD_RZ DV_QUOT
 | 
			
		||||
 | 
			
		||||
#define PD_A    DV_C
 | 
			
		||||
#define PD_O    DV_V
 | 
			
		||||
#define PD_E    DV_N
 | 
			
		||||
#define PD_U    DV_M
 | 
			
		||||
#define PD_A DV_C
 | 
			
		||||
#define PD_O DV_V
 | 
			
		||||
#define PD_E DV_N
 | 
			
		||||
#define PD_U DV_M
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,11 +20,11 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
//Swapped Z and Y
 | 
			
		||||
// Swapped Z and Y
 | 
			
		||||
#define SI_Z KC_Y
 | 
			
		||||
#define SI_Y KC_Z
 | 
			
		||||
 | 
			
		||||
//Special characters
 | 
			
		||||
// Special characters
 | 
			
		||||
#define SI_CV KC_SCLN
 | 
			
		||||
#define SI_SV KC_LBRC
 | 
			
		||||
#define SI_ZV KC_BSLS
 | 
			
		||||
| 
						 | 
				
			
			@ -68,40 +68,40 @@
 | 
			
		|||
#define SI_DOT KC_DOT
 | 
			
		||||
#define SI_COMM KC_COMM
 | 
			
		||||
 | 
			
		||||
#define SI_PLUS KC_EQL // + and * and ~
 | 
			
		||||
#define SI_QOT KC_MINS // Single quote
 | 
			
		||||
#define SI_MINS KC_SLSH // - and _
 | 
			
		||||
#define SI_PLUS KC_EQL   // + and * and ~
 | 
			
		||||
#define SI_QOT KC_MINS   // Single quote
 | 
			
		||||
#define SI_MINS KC_SLSH  // - and _
 | 
			
		||||
 | 
			
		||||
// shifted characters
 | 
			
		||||
#define SI_EXLM LSFT(KC_1) // !
 | 
			
		||||
#define SI_DQOT LSFT(KC_2) // "
 | 
			
		||||
#define SI_HASH LSFT(KC_3) // #
 | 
			
		||||
#define SI_DLR  LSFT(KC_4) // $
 | 
			
		||||
#define SI_PERC LSFT(KC_5) // %
 | 
			
		||||
#define SI_AMPR LSFT(KC_6) // &
 | 
			
		||||
#define SI_SLSH LSFT(KC_7) // /
 | 
			
		||||
#define SI_LPRN LSFT(KC_8) // (
 | 
			
		||||
#define SI_RPRN LSFT(KC_9) // )
 | 
			
		||||
#define SI_EQL  LSFT(KC_0) // =
 | 
			
		||||
#define SI_QST  LSFT(SI_QOT) // ?
 | 
			
		||||
#define SI_ASTR LSFT(SI_PLUS) // *
 | 
			
		||||
#define SI_COLN LSFT(KC_DOT) // :
 | 
			
		||||
#define SI_SCLN LSFT(KC_COMM) // ;
 | 
			
		||||
#define SI_UNDS LSFT(SI_MINS) // _
 | 
			
		||||
#define SI_EXLM LSFT(KC_1)     // !
 | 
			
		||||
#define SI_DQOT LSFT(KC_2)     // "
 | 
			
		||||
#define SI_HASH LSFT(KC_3)     // #
 | 
			
		||||
#define SI_DLR LSFT(KC_4)      // $
 | 
			
		||||
#define SI_PERC LSFT(KC_5)     // %
 | 
			
		||||
#define SI_AMPR LSFT(KC_6)     // &
 | 
			
		||||
#define SI_SLSH LSFT(KC_7)     // /
 | 
			
		||||
#define SI_LPRN LSFT(KC_8)     // (
 | 
			
		||||
#define SI_RPRN LSFT(KC_9)     // )
 | 
			
		||||
#define SI_EQL LSFT(KC_0)      // =
 | 
			
		||||
#define SI_QST LSFT(SI_QOT)    // ?
 | 
			
		||||
#define SI_ASTR LSFT(SI_PLUS)  // *
 | 
			
		||||
#define SI_COLN LSFT(KC_DOT)   // :
 | 
			
		||||
#define SI_SCLN LSFT(KC_COMM)  // ;
 | 
			
		||||
#define SI_UNDS LSFT(SI_MINS)  // _
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define SI_CIRC ALGR(KC_3) // ^
 | 
			
		||||
#define SI_DEG ALGR(KC_5) // °
 | 
			
		||||
#define SI_GRV ALGR(KC_7) // `
 | 
			
		||||
#define SI_ACCU ALGR(KC_9) // ´
 | 
			
		||||
#define SI_LCBR ALGR(KC_B) // {
 | 
			
		||||
#define SI_RCBR ALGR(KC_N) // }
 | 
			
		||||
#define SI_LBRC ALGR(KC_F) // [
 | 
			
		||||
#define SI_RBRC ALGR(KC_G) // ]
 | 
			
		||||
#define SI_BSLS ALGR(KC_Q) // backslash
 | 
			
		||||
#define SI_AT  ALGR(KC_V) // @
 | 
			
		||||
#define SI_EURO ALGR(KC_E) // €
 | 
			
		||||
#define SI_TILD ALGR(KC_1) // ~
 | 
			
		||||
#define SI_PIPE ALGR(KC_W) // |
 | 
			
		||||
#define SI_CIRC ALGR(KC_3)  // ^
 | 
			
		||||
#define SI_DEG ALGR(KC_5)   // °
 | 
			
		||||
#define SI_GRV ALGR(KC_7)   // `
 | 
			
		||||
#define SI_ACCU ALGR(KC_9)  // ´
 | 
			
		||||
#define SI_LCBR ALGR(KC_B)  // {
 | 
			
		||||
#define SI_RCBR ALGR(KC_N)  // }
 | 
			
		||||
#define SI_LBRC ALGR(KC_F)  // [
 | 
			
		||||
#define SI_RBRC ALGR(KC_G)  // ]
 | 
			
		||||
#define SI_BSLS ALGR(KC_Q)  // backslash
 | 
			
		||||
#define SI_AT ALGR(KC_V)    // @
 | 
			
		||||
#define SI_EURO ALGR(KC_E)  // €
 | 
			
		||||
#define SI_TILD ALGR(KC_1)  // ~
 | 
			
		||||
#define SI_PIPE ALGR(KC_W)  // |
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,54 +20,54 @@
 | 
			
		|||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define ES_OVRR KC_GRV
 | 
			
		||||
#define ES_APOS	KC_MINS
 | 
			
		||||
#define ES_IEXL	KC_EQL
 | 
			
		||||
#define ES_APOS KC_MINS
 | 
			
		||||
#define ES_IEXL KC_EQL
 | 
			
		||||
 | 
			
		||||
#define ES_GRV	KC_LBRC
 | 
			
		||||
#define ES_PLUS	KC_RBRC
 | 
			
		||||
#define ES_GRV KC_LBRC
 | 
			
		||||
#define ES_PLUS KC_RBRC
 | 
			
		||||
 | 
			
		||||
#define ES_NTIL	KC_SCLN
 | 
			
		||||
#define ES_ACUT	KC_QUOT
 | 
			
		||||
#define ES_CCED	KC_NUHS
 | 
			
		||||
#define ES_NTIL KC_SCLN
 | 
			
		||||
#define ES_ACUT KC_QUOT
 | 
			
		||||
#define ES_CCED KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define ES_LESS	KC_NUBS
 | 
			
		||||
#define ES_MINS	KC_SLSH
 | 
			
		||||
#define ES_LESS KC_NUBS
 | 
			
		||||
#define ES_MINS KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define ES_ASML	LSFT(ES_OVRR)
 | 
			
		||||
#define ES_QUOT	LSFT(KC_2)
 | 
			
		||||
#define ES_OVDT	LSFT(KC_3)
 | 
			
		||||
#define ES_AMPR	LSFT(KC_6)
 | 
			
		||||
#define ES_ASML LSFT(ES_OVRR)
 | 
			
		||||
#define ES_QUOT LSFT(KC_2)
 | 
			
		||||
#define ES_OVDT LSFT(KC_3)
 | 
			
		||||
#define ES_AMPR LSFT(KC_6)
 | 
			
		||||
#define ES_SLSH LSFT(KC_7)
 | 
			
		||||
#define ES_LPRN LSFT(KC_8)
 | 
			
		||||
#define ES_RPRN LSFT(KC_9)
 | 
			
		||||
#define ES_EQL	LSFT(KC_0)
 | 
			
		||||
#define ES_QUES	LSFT(ES_APOS)
 | 
			
		||||
#define ES_IQUE	LSFT(ES_IEXL)
 | 
			
		||||
#define ES_EQL LSFT(KC_0)
 | 
			
		||||
#define ES_QUES LSFT(ES_APOS)
 | 
			
		||||
#define ES_IQUE LSFT(ES_IEXL)
 | 
			
		||||
 | 
			
		||||
#define ES_CIRC	LSFT(ES_GRV)
 | 
			
		||||
#define ES_ASTR	LSFT(ES_PLUS)
 | 
			
		||||
#define ES_CIRC LSFT(ES_GRV)
 | 
			
		||||
#define ES_ASTR LSFT(ES_PLUS)
 | 
			
		||||
 | 
			
		||||
#define ES_UMLT	LSFT(ES_GRV)
 | 
			
		||||
#define ES_UMLT LSFT(ES_GRV)
 | 
			
		||||
 | 
			
		||||
#define ES_GRTR	LSFT(ES_LESS)
 | 
			
		||||
#define ES_SCLN	LSFT(KC_COMM)
 | 
			
		||||
#define ES_COLN	LSFT(KC_DOT)
 | 
			
		||||
#define ES_UNDS	LSFT(ES_MINS)
 | 
			
		||||
#define ES_GRTR LSFT(ES_LESS)
 | 
			
		||||
#define ES_SCLN LSFT(KC_COMM)
 | 
			
		||||
#define ES_COLN LSFT(KC_DOT)
 | 
			
		||||
#define ES_UNDS LSFT(ES_MINS)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define ES_BSLS	ALGR(ES_OVRR)
 | 
			
		||||
#define ES_PIPE	ALGR(KC_1)
 | 
			
		||||
#define ES_AT 	ALGR(KC_2)
 | 
			
		||||
#define ES_HASH	ALGR(KC_3)
 | 
			
		||||
#define ES_TILD	ALGR(ES_NTIL)
 | 
			
		||||
#define ES_EURO	ALGR(KC_5)
 | 
			
		||||
#define ES_NOT	ALGR(KC_6)
 | 
			
		||||
#define ES_BSLS ALGR(ES_OVRR)
 | 
			
		||||
#define ES_PIPE ALGR(KC_1)
 | 
			
		||||
#define ES_AT ALGR(KC_2)
 | 
			
		||||
#define ES_HASH ALGR(KC_3)
 | 
			
		||||
#define ES_TILD ALGR(ES_NTIL)
 | 
			
		||||
#define ES_EURO ALGR(KC_5)
 | 
			
		||||
#define ES_NOT ALGR(KC_6)
 | 
			
		||||
 | 
			
		||||
#define ES_LBRC	ALGR(ES_GRV)
 | 
			
		||||
#define ES_LBRC ALGR(ES_GRV)
 | 
			
		||||
#define ES_RBRC ALGR(ES_PLUS)
 | 
			
		||||
 | 
			
		||||
#define ES_LCBR	ALGR(ES_ACUT)
 | 
			
		||||
#define ES_RCBR	ALGR(ES_CCED)
 | 
			
		||||
#define ES_LCBR ALGR(ES_ACUT)
 | 
			
		||||
#define ES_RCBR ALGR(ES_CCED)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,55 +22,55 @@
 | 
			
		|||
// errors, this must be <= 42 total entries in order to
 | 
			
		||||
// support the GeminiPR protocol.
 | 
			
		||||
enum steno_keycodes {
 | 
			
		||||
  STN__MIN = QK_STENO,
 | 
			
		||||
  STN_FN  = STN__MIN,
 | 
			
		||||
  STN_NUM,
 | 
			
		||||
  STN_N1 = STN_NUM,
 | 
			
		||||
  STN_N2,
 | 
			
		||||
  STN_N3,
 | 
			
		||||
  STN_N4,
 | 
			
		||||
  STN_N5,
 | 
			
		||||
  STN_N6,
 | 
			
		||||
  STN_SL,
 | 
			
		||||
  STN_S1 = STN_SL,
 | 
			
		||||
  STN_S2,
 | 
			
		||||
  STN_TL,
 | 
			
		||||
  STN_KL,
 | 
			
		||||
  STN_PL,
 | 
			
		||||
  STN_WL,
 | 
			
		||||
  STN_HL,
 | 
			
		||||
  STN_RL,
 | 
			
		||||
  STN_A,
 | 
			
		||||
  STN_O,
 | 
			
		||||
  STN_STR,
 | 
			
		||||
  STN_ST1 = STN_STR,
 | 
			
		||||
  STN_ST2,
 | 
			
		||||
  STN_RES1,
 | 
			
		||||
  STN_RE1 = STN_RES1,
 | 
			
		||||
  STN_RES2,
 | 
			
		||||
  STN_RE2 = STN_RES2,
 | 
			
		||||
  STN_PWR,
 | 
			
		||||
  STN_ST3,
 | 
			
		||||
  STN_ST4,
 | 
			
		||||
  STN_E,
 | 
			
		||||
  STN_U,
 | 
			
		||||
  STN_FR,
 | 
			
		||||
  STN_RR,
 | 
			
		||||
  STN_PR,
 | 
			
		||||
  STN_BR,
 | 
			
		||||
  STN_LR,
 | 
			
		||||
  STN_GR,
 | 
			
		||||
  STN_TR,
 | 
			
		||||
  STN_SR,
 | 
			
		||||
  STN_DR,
 | 
			
		||||
  STN_N7,
 | 
			
		||||
  STN_N8,
 | 
			
		||||
  STN_N9,
 | 
			
		||||
  STN_NA,
 | 
			
		||||
  STN_NB,
 | 
			
		||||
  STN_NC,
 | 
			
		||||
  STN_ZR,
 | 
			
		||||
  STN__MAX = STN_ZR, // must be less than QK_STENO_BOLT
 | 
			
		||||
    STN__MIN = QK_STENO,
 | 
			
		||||
    STN_FN   = STN__MIN,
 | 
			
		||||
    STN_NUM,
 | 
			
		||||
    STN_N1 = STN_NUM,
 | 
			
		||||
    STN_N2,
 | 
			
		||||
    STN_N3,
 | 
			
		||||
    STN_N4,
 | 
			
		||||
    STN_N5,
 | 
			
		||||
    STN_N6,
 | 
			
		||||
    STN_SL,
 | 
			
		||||
    STN_S1 = STN_SL,
 | 
			
		||||
    STN_S2,
 | 
			
		||||
    STN_TL,
 | 
			
		||||
    STN_KL,
 | 
			
		||||
    STN_PL,
 | 
			
		||||
    STN_WL,
 | 
			
		||||
    STN_HL,
 | 
			
		||||
    STN_RL,
 | 
			
		||||
    STN_A,
 | 
			
		||||
    STN_O,
 | 
			
		||||
    STN_STR,
 | 
			
		||||
    STN_ST1 = STN_STR,
 | 
			
		||||
    STN_ST2,
 | 
			
		||||
    STN_RES1,
 | 
			
		||||
    STN_RE1 = STN_RES1,
 | 
			
		||||
    STN_RES2,
 | 
			
		||||
    STN_RE2 = STN_RES2,
 | 
			
		||||
    STN_PWR,
 | 
			
		||||
    STN_ST3,
 | 
			
		||||
    STN_ST4,
 | 
			
		||||
    STN_E,
 | 
			
		||||
    STN_U,
 | 
			
		||||
    STN_FR,
 | 
			
		||||
    STN_RR,
 | 
			
		||||
    STN_PR,
 | 
			
		||||
    STN_BR,
 | 
			
		||||
    STN_LR,
 | 
			
		||||
    STN_GR,
 | 
			
		||||
    STN_TR,
 | 
			
		||||
    STN_SR,
 | 
			
		||||
    STN_DR,
 | 
			
		||||
    STN_N7,
 | 
			
		||||
    STN_N8,
 | 
			
		||||
    STN_N9,
 | 
			
		||||
    STN_NA,
 | 
			
		||||
    STN_NB,
 | 
			
		||||
    STN_NC,
 | 
			
		||||
    STN_ZR,
 | 
			
		||||
    STN__MAX = STN_ZR,  // must be less than QK_STENO_BOLT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,68 +20,68 @@
 | 
			
		|||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define SE_HALF	KC_GRV
 | 
			
		||||
#define SE_PLUS	KC_MINS
 | 
			
		||||
#define SE_ACUT	KC_EQL
 | 
			
		||||
#define SE_HALF KC_GRV
 | 
			
		||||
#define SE_PLUS KC_MINS
 | 
			
		||||
#define SE_ACUT KC_EQL
 | 
			
		||||
 | 
			
		||||
#define SE_AM	KC_LBRC
 | 
			
		||||
#define SE_QUOT	KC_RBRC // this is the "umlaut" char on Nordic keyboards, Apple layout
 | 
			
		||||
#define SE_AE   KC_QUOT  // ä
 | 
			
		||||
#define SE_AM KC_LBRC
 | 
			
		||||
#define SE_QUOT KC_RBRC  // this is the "umlaut" char on Nordic keyboards, Apple layout
 | 
			
		||||
#define SE_AE KC_QUOT    // ä
 | 
			
		||||
#define SE_OSLH KC_SCLN  // ö
 | 
			
		||||
#define	SE_APOS	KC_NUHS
 | 
			
		||||
#define SE_APOS KC_NUHS
 | 
			
		||||
 | 
			
		||||
#define SE_LESS	KC_NUBS
 | 
			
		||||
#define SE_LESS KC_NUBS
 | 
			
		||||
#define SE_MINS KC_SLSH
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define SE_SECT LSFT(SE_HALF)
 | 
			
		||||
#define SE_QUO2	LSFT(KC_2)
 | 
			
		||||
#define SE_QUO2 LSFT(KC_2)
 | 
			
		||||
#define SE_BULT LSFT(KC_4)
 | 
			
		||||
#define SE_AMPR	LSFT(KC_6)
 | 
			
		||||
#define SE_AMPR LSFT(KC_6)
 | 
			
		||||
#define SE_SLSH LSFT(KC_7)
 | 
			
		||||
#define SE_LPRN	LSFT(KC_8)
 | 
			
		||||
#define SE_RPRN	LSFT(KC_9)
 | 
			
		||||
#define SE_EQL	LSFT(KC_0)
 | 
			
		||||
#define SE_QUES	LSFT(SE_PLUS)
 | 
			
		||||
#define SE_GRV	LSFT(SE_ACUT)
 | 
			
		||||
#define SE_LPRN LSFT(KC_8)
 | 
			
		||||
#define SE_RPRN LSFT(KC_9)
 | 
			
		||||
#define SE_EQL LSFT(KC_0)
 | 
			
		||||
#define SE_QUES LSFT(SE_PLUS)
 | 
			
		||||
#define SE_GRV LSFT(SE_ACUT)
 | 
			
		||||
 | 
			
		||||
#define SE_CIRC LSFT(KC_RBRC)  // ^
 | 
			
		||||
 | 
			
		||||
#define SE_GRTR	LSFT(SE_LESS)
 | 
			
		||||
#define SE_GRTR LSFT(SE_LESS)
 | 
			
		||||
#define SE_SCLN LSFT(KC_COMM)
 | 
			
		||||
#define SE_COLN LSFT(KC_DOT)
 | 
			
		||||
#define SE_UNDS LSFT(SE_MINS)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define SE_AT	ALGR(KC_2)
 | 
			
		||||
#define SE_PND	ALGR(KC_3)
 | 
			
		||||
#define SE_DLR	ALGR(KC_4)
 | 
			
		||||
#define SE_AT ALGR(KC_2)
 | 
			
		||||
#define SE_PND ALGR(KC_3)
 | 
			
		||||
#define SE_DLR ALGR(KC_4)
 | 
			
		||||
#define SE_LCBR ALGR(KC_7)
 | 
			
		||||
#define SE_LBRC ALGR(KC_8)
 | 
			
		||||
#define SE_RBRC ALGR(KC_9)
 | 
			
		||||
#define SE_RCBR	ALGR(KC_0)
 | 
			
		||||
#define SE_RCBR ALGR(KC_0)
 | 
			
		||||
#define SE_PIPE ALGR(KC_NUBS)
 | 
			
		||||
 | 
			
		||||
#define SE_EURO ALGR(KC_E)
 | 
			
		||||
#define SE_TILD ALGR(SE_QUOT)
 | 
			
		||||
 | 
			
		||||
#define SE_BSLS ALGR(KC_MINS)
 | 
			
		||||
#define SE_MU 	ALGR(KC_M)
 | 
			
		||||
#define SE_MU ALGR(KC_M)
 | 
			
		||||
 | 
			
		||||
#define SE_AA   KC_LBRC  // å
 | 
			
		||||
#define SE_AA KC_LBRC          // å
 | 
			
		||||
#define SE_ASTR LSFT(KC_BSLS)  // *
 | 
			
		||||
 | 
			
		||||
// Norwegian unique MAC characters (not vetted for Swedish)
 | 
			
		||||
#define SE_ACUT_MAC KC_EQL  // =
 | 
			
		||||
#define SE_APOS_MAC KC_NUBS  // '
 | 
			
		||||
#define SE_AT_MAC   KC_BSLS  // @
 | 
			
		||||
#define SE_BSLS_MAC ALGR(LSFT(KC_7)) // '\'
 | 
			
		||||
#define SE_DLR_MAC  ALGR(KC_4) // $
 | 
			
		||||
#define SE_GRV_MAC ALGR(SE_BSLS) // `
 | 
			
		||||
#define SE_GRTR_MAC LSFT(KC_GRV)  // >
 | 
			
		||||
#define SE_ACUT_MAC KC_EQL            // =
 | 
			
		||||
#define SE_APOS_MAC KC_NUBS           // '
 | 
			
		||||
#define SE_AT_MAC KC_BSLS             // @
 | 
			
		||||
#define SE_BSLS_MAC ALGR(LSFT(KC_7))  // '\'
 | 
			
		||||
#define SE_DLR_MAC ALGR(KC_4)         // $
 | 
			
		||||
#define SE_GRV_MAC ALGR(SE_BSLS)      // `
 | 
			
		||||
#define SE_GRTR_MAC LSFT(KC_GRV)      // >
 | 
			
		||||
#define SE_LCBR_MAC ALGR(LSFT(KC_8))  // {
 | 
			
		||||
#define SE_LESS_MAC KC_GRV  // <
 | 
			
		||||
#define SE_PIPE_MAC ALGR(KC_7)  // |
 | 
			
		||||
#define SE_LESS_MAC KC_GRV            // <
 | 
			
		||||
#define SE_PIPE_MAC ALGR(KC_7)        // |
 | 
			
		||||
#define SE_RCBR_MAC ALGR(LSFT(KC_9))  // }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,21 +20,21 @@
 | 
			
		|||
 | 
			
		||||
// Normal characters
 | 
			
		||||
#define UK_HASH KC_NUHS
 | 
			
		||||
#define UK_BSLS	KC_NUBS
 | 
			
		||||
#define UK_BSLS KC_NUBS
 | 
			
		||||
 | 
			
		||||
// Shifted characters
 | 
			
		||||
#define UK_NOT	LSFT(KC_GRV)
 | 
			
		||||
#define UK_DQUO	LSFT(KC_2)
 | 
			
		||||
#define UK_PND	LSFT(KC_3)
 | 
			
		||||
#define UK_AT	LSFT(KC_QUOT)
 | 
			
		||||
#define UK_TILD	LSFT(KC_NUHS)
 | 
			
		||||
#define UK_PIPE	LSFT(KC_NUBS)
 | 
			
		||||
#define UK_NOT LSFT(KC_GRV)
 | 
			
		||||
#define UK_DQUO LSFT(KC_2)
 | 
			
		||||
#define UK_PND LSFT(KC_3)
 | 
			
		||||
#define UK_AT LSFT(KC_QUOT)
 | 
			
		||||
#define UK_TILD LSFT(KC_NUHS)
 | 
			
		||||
#define UK_PIPE LSFT(KC_NUBS)
 | 
			
		||||
 | 
			
		||||
// Alt Gr-ed characters
 | 
			
		||||
#define UK_BRKP	ALGR(KC_GRV)
 | 
			
		||||
#define UK_EURO	ALGR(KC_4)
 | 
			
		||||
#define UK_EACT	ALGR(KC_E)
 | 
			
		||||
#define UK_UACT	ALGR(KC_U)
 | 
			
		||||
#define UK_BRKP ALGR(KC_GRV)
 | 
			
		||||
#define UK_EURO ALGR(KC_4)
 | 
			
		||||
#define UK_EACT ALGR(KC_E)
 | 
			
		||||
#define UK_UACT ALGR(KC_U)
 | 
			
		||||
#define UK_IACT ALGR(KC_I)
 | 
			
		||||
#define UK_OACT ALGR(KC_O)
 | 
			
		||||
#define UK_AACT ALGR(KC_A)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,66 +18,66 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
// For software implementation of workman
 | 
			
		||||
#define WK_Q    KC_Q
 | 
			
		||||
#define WK_D    KC_W
 | 
			
		||||
#define WK_R    KC_E
 | 
			
		||||
#define WK_W    KC_R
 | 
			
		||||
#define WK_B    KC_T
 | 
			
		||||
#define WK_J    KC_Y
 | 
			
		||||
#define WK_F    KC_U
 | 
			
		||||
#define WK_U    KC_I
 | 
			
		||||
#define WK_P    KC_O
 | 
			
		||||
#define WK_Q KC_Q
 | 
			
		||||
#define WK_D KC_W
 | 
			
		||||
#define WK_R KC_E
 | 
			
		||||
#define WK_W KC_R
 | 
			
		||||
#define WK_B KC_T
 | 
			
		||||
#define WK_J KC_Y
 | 
			
		||||
#define WK_F KC_U
 | 
			
		||||
#define WK_U KC_I
 | 
			
		||||
#define WK_P KC_O
 | 
			
		||||
#define WK_SCLN KC_P
 | 
			
		||||
 | 
			
		||||
#define WK_A    KC_A
 | 
			
		||||
#define WK_S    KC_S
 | 
			
		||||
#define WK_H    KC_D
 | 
			
		||||
#define WK_T    KC_F
 | 
			
		||||
#define WK_G    KC_G
 | 
			
		||||
#define WK_Y    KC_H
 | 
			
		||||
#define WK_N    KC_J
 | 
			
		||||
#define WK_E    KC_K
 | 
			
		||||
#define WK_O    KC_L
 | 
			
		||||
#define WK_I    KC_SCLN
 | 
			
		||||
#define WK_A KC_A
 | 
			
		||||
#define WK_S KC_S
 | 
			
		||||
#define WK_H KC_D
 | 
			
		||||
#define WK_T KC_F
 | 
			
		||||
#define WK_G KC_G
 | 
			
		||||
#define WK_Y KC_H
 | 
			
		||||
#define WK_N KC_J
 | 
			
		||||
#define WK_E KC_K
 | 
			
		||||
#define WK_O KC_L
 | 
			
		||||
#define WK_I KC_SCLN
 | 
			
		||||
 | 
			
		||||
#define WK_Z    KC_Z
 | 
			
		||||
#define WK_X    KC_X
 | 
			
		||||
#define WK_M    KC_C
 | 
			
		||||
#define WK_C    KC_V
 | 
			
		||||
#define WK_V    KC_B
 | 
			
		||||
#define WK_K    KC_N
 | 
			
		||||
#define WK_L    KC_M
 | 
			
		||||
#define WK_Z KC_Z
 | 
			
		||||
#define WK_X KC_X
 | 
			
		||||
#define WK_M KC_C
 | 
			
		||||
#define WK_C KC_V
 | 
			
		||||
#define WK_V KC_B
 | 
			
		||||
#define WK_K KC_N
 | 
			
		||||
#define WK_L KC_M
 | 
			
		||||
 | 
			
		||||
// Make it easy to support these in macros
 | 
			
		||||
// TODO: change macro implementation so these aren't needed
 | 
			
		||||
#define KC_WK_Q    WK_Q
 | 
			
		||||
#define KC_WK_D    WK_D
 | 
			
		||||
#define KC_WK_R    WK_R
 | 
			
		||||
#define KC_WK_W    WK_W
 | 
			
		||||
#define KC_WK_B    WK_B
 | 
			
		||||
#define KC_WK_J    WK_J
 | 
			
		||||
#define KC_WK_F    WK_F
 | 
			
		||||
#define KC_WK_U    WK_U
 | 
			
		||||
#define KC_WK_P    WK_P
 | 
			
		||||
#define KC_WK_Q WK_Q
 | 
			
		||||
#define KC_WK_D WK_D
 | 
			
		||||
#define KC_WK_R WK_R
 | 
			
		||||
#define KC_WK_W WK_W
 | 
			
		||||
#define KC_WK_B WK_B
 | 
			
		||||
#define KC_WK_J WK_J
 | 
			
		||||
#define KC_WK_F WK_F
 | 
			
		||||
#define KC_WK_U WK_U
 | 
			
		||||
#define KC_WK_P WK_P
 | 
			
		||||
#define KC_WK_SCLN WK_SCLN
 | 
			
		||||
 | 
			
		||||
#define KC_WK_A    WK_A
 | 
			
		||||
#define KC_WK_S    WK_S
 | 
			
		||||
#define KC_WK_H    WK_H
 | 
			
		||||
#define KC_WK_T    WK_T
 | 
			
		||||
#define KC_WK_G    WK_G
 | 
			
		||||
#define KC_WK_Y    WK_Y
 | 
			
		||||
#define KC_WK_N    WK_N
 | 
			
		||||
#define KC_WK_E    WK_E
 | 
			
		||||
#define KC_WK_O    WK_O
 | 
			
		||||
#define KC_WK_I    WK_I
 | 
			
		||||
#define KC_WK_A WK_A
 | 
			
		||||
#define KC_WK_S WK_S
 | 
			
		||||
#define KC_WK_H WK_H
 | 
			
		||||
#define KC_WK_T WK_T
 | 
			
		||||
#define KC_WK_G WK_G
 | 
			
		||||
#define KC_WK_Y WK_Y
 | 
			
		||||
#define KC_WK_N WK_N
 | 
			
		||||
#define KC_WK_E WK_E
 | 
			
		||||
#define KC_WK_O WK_O
 | 
			
		||||
#define KC_WK_I WK_I
 | 
			
		||||
 | 
			
		||||
#define KC_WK_Z    WK_Z
 | 
			
		||||
#define KC_WK_X    WK_X
 | 
			
		||||
#define KC_WK_M    WK_M
 | 
			
		||||
#define KC_WK_C    WK_C
 | 
			
		||||
#define KC_WK_V    WK_V
 | 
			
		||||
#define KC_WK_K    WK_K
 | 
			
		||||
#define KC_WK_L    WK_L
 | 
			
		||||
#define KC_WK_Z WK_Z
 | 
			
		||||
#define KC_WK_X WK_X
 | 
			
		||||
#define KC_WK_M WK_M
 | 
			
		||||
#define KC_WK_C WK_C
 | 
			
		||||
#define KC_WK_V WK_V
 | 
			
		||||
#define KC_WK_K WK_K
 | 
			
		||||
#define KC_WK_L WK_L
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,78 +20,45 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_belgian.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 0, 0, 1, 0, 0,
 | 
			
		||||
    0, 0, 1, 1, 0, 0, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 0, 0, 0, 0, 1, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR,  BE_UGRV, BE_AMP,  BE_APOS,
 | 
			
		||||
    KC_SPC, BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR, BE_UGRV, BE_AMP, BE_APOS,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    BE_LPRN, BE_RPRN, BE_DLR,  BE_EQL,  BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
 | 
			
		||||
    BE_LPRN, BE_RPRN, BE_DLR, BE_EQL, BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    BE_AGRV, BE_AMP,  BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
 | 
			
		||||
    BE_AGRV, BE_AMP, BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL,  BE_LESS, BE_COMM,
 | 
			
		||||
    BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL, BE_LESS, BE_COMM,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    BE_EACU, BE_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    BE_EACU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    BE_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    KC_P,    BE_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    BE_W,
 | 
			
		||||
    KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    KC_X,    KC_Y,    BE_Z,    BE_CIRC, BE_LESS, BE_DLR,  BE_PARA, BE_MINS,
 | 
			
		||||
    KC_X, KC_Y, BE_Z, BE_CIRC, BE_LESS, BE_DLR, BE_PARA, BE_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    BE_MU,   BE_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    BE_MU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    BE_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    KC_P,    BE_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    BE_W,
 | 
			
		||||
    KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    KC_X,    KC_Y,    BE_Z,    BE_CCED, BE_AMP,  BE_AGRV, BE_EQL,  KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    KC_X, KC_Y, BE_Z, BE_CCED, BE_AMP, BE_AGRV, BE_EQL, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,78 +20,45 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_bepo.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 1, 0, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 0, 0, 0, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 1, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 1, 0, 1, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  BP_DCRC, BP_DQOT, BP_DLR,  BP_DLR,  BP_PERC, BP_P,    BP_APOS,
 | 
			
		||||
    KC_SPC, BP_DCRC, BP_DQOT, BP_DLR, BP_DLR, BP_PERC, BP_P, BP_APOS,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINS, BP_DOT,  BP_SLSH,
 | 
			
		||||
    BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINS, BP_DOT, BP_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    BP_ASTR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT,   BP_PLUS,
 | 
			
		||||
    BP_ASTR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    BP_MINS, BP_SLSH, BP_DOT,  BP_COMM, BP_LGIL, BP_EQL,  BP_RGIL, BP_APOS,
 | 
			
		||||
    BP_MINS, BP_SLSH, BP_DOT, BP_COMM, BP_LGIL, BP_EQL, BP_RGIL, BP_APOS,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    BP_AT,   BP_A,    BP_B,    BP_C,    BP_D,    BP_E,    BP_F,    BP_G,
 | 
			
		||||
    BP_AT, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    BP_H,    BP_I,    BP_J,    BP_K,    BP_L,    BP_M,    BP_N,    BP_O,
 | 
			
		||||
    BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    BP_P,    BP_Q,    BP_R,    BP_S,    BP_T,    BP_U,    BP_V,    BP_W,
 | 
			
		||||
    BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    BP_X,    BP_Y,    BP_Z,    BP_LPRN, BP_AGRV, BP_RPRN, BP_AT,   KC_SPC,
 | 
			
		||||
    BP_X, BP_Y, BP_Z, BP_LPRN, BP_AGRV, BP_RPRN, BP_AT, KC_SPC,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    BP_PERC, BP_A,    BP_B,    BP_C,    BP_D,    BP_E,    BP_F,    BP_G,
 | 
			
		||||
    BP_PERC, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    BP_H,    BP_I,    BP_J,    BP_K,    BP_L,    BP_M,    BP_N,    BP_O,
 | 
			
		||||
    BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    BP_P,    BP_Q,    BP_R,    BP_S,    BP_T,    BP_U,    BP_V,    BP_W,
 | 
			
		||||
    BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    BP_X,    BP_Y,    BP_Z,    BP_Y,    BP_B,    BP_X,    BP_K,    KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    BP_X, BP_Y, BP_Z, BP_Y, BP_B, BP_X, BP_K, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,34 +24,33 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		|||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  KC_1,    KC_QUOT, KC_3,    KC_4,    KC_5,    KC_7,    KC_QUOT,
 | 
			
		||||
    KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    KC_9,    KC_0,    KC_8,    KC_EQL,  KC_COMM, KC_MINS, KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    KC_8,    KC_9,    CM_SCLN, CM_SCLN, KC_COMM, KC_EQL,  KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    KC_2,    CM_A,    CM_B,    CM_C,    CM_D,    CM_E,    CM_F,    CM_G,
 | 
			
		||||
    KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    CM_H,    CM_I,    CM_J,    CM_K,    CM_L,    CM_M,    CM_N,    CM_O,
 | 
			
		||||
    CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    CM_P,    CM_Q,    CM_R,    CM_S,    CM_T,    CM_U,    CM_V,    CM_W,
 | 
			
		||||
    CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    CM_X,    CM_Y,    CM_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_6,    KC_MINS,
 | 
			
		||||
    CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    KC_GRV,  CM_A,    CM_B,    CM_C,    CM_D,    CM_E,    CM_F,    CM_G,
 | 
			
		||||
    KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    CM_H,    CM_I,    CM_J,    CM_K,    CM_L,    CM_M,    CM_N,    CM_O,
 | 
			
		||||
    CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    CM_P,    CM_Q,    CM_R,    CM_S,    CM_T,    CM_U,    CM_V,    CM_W,
 | 
			
		||||
    CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    CM_X,    CM_Y,    CM_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV,  KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,34 +24,33 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		|||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  DV_1,    DV_QUOT, DV_3,    DV_4,    DV_5,    DV_7,    DV_QUOT,
 | 
			
		||||
    KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    DV_9,    DV_0,    DV_8,    DV_EQL,  DV_COMM, DV_MINS, DV_DOT,  DV_SLSH,
 | 
			
		||||
    DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    DV_0,    DV_1,    DV_2,    DV_3,    DV_4,    DV_5,    DV_6,    DV_7,
 | 
			
		||||
    DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    DV_8,    DV_9,    DV_SCLN, DV_SCLN, DV_COMM, DV_EQL,  DV_DOT,  DV_SLSH,
 | 
			
		||||
    DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    DV_2,    DV_A,    DV_B,    DV_C,    DV_D,    DV_E,    DV_F,    DV_G,
 | 
			
		||||
    DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    DV_H,    DV_I,    DV_J,    DV_K,    DV_L,    DV_M,    DV_N,    DV_O,
 | 
			
		||||
    DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    DV_P,    DV_Q,    DV_R,    DV_S,    DV_T,    DV_U,    DV_V,    DV_W,
 | 
			
		||||
    DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    DV_X,    DV_Y,    DV_Z,    DV_LBRC, DV_BSLS, DV_RBRC, DV_6,    DV_MINS,
 | 
			
		||||
    DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    DV_GRV,  DV_A,    DV_B,    DV_C,    DV_D,    DV_E,    DV_F,    DV_G,
 | 
			
		||||
    DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    DV_H,    DV_I,    DV_J,    DV_K,    DV_L,    DV_M,    DV_N,    DV_O,
 | 
			
		||||
    DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    DV_P,    DV_Q,    DV_R,    DV_S,    DV_T,    DV_U,    DV_V,    DV_W,
 | 
			
		||||
    DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    DV_X,    DV_Y,    DV_Z,    DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV,  KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,78 +20,45 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_french.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 0, 0, 1, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 0, 0, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 0, 0, 0, 0, 1, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  FR_EXLM, FR_QUOT, FR_QUOT, FR_DLR,  FR_UGRV, FR_AMP,  FR_APOS,
 | 
			
		||||
    KC_SPC, FR_EXLM, FR_QUOT, FR_QUOT, FR_DLR, FR_UGRV, FR_AMP, FR_APOS,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    FR_LPRN, FR_RPRN, FR_ASTR, FR_EQL,  FR_COMM, FR_MINS, FR_SCLN, FR_COLN,
 | 
			
		||||
    FR_LPRN, FR_RPRN, FR_ASTR, FR_EQL, FR_COMM, FR_MINS, FR_SCLN, FR_COLN,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    FR_AGRV, FR_AMP,  FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, FR_MINS, FR_EGRV,
 | 
			
		||||
    FR_AGRV, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, FR_MINS, FR_EGRV,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    FR_CCED, FR_AGRV, FR_COLN, FR_SCLN, FR_LESS, FR_EQL,  FR_LESS, FR_COMM,
 | 
			
		||||
    FR_CCED, FR_AGRV, FR_COLN, FR_SCLN, FR_LESS, FR_EQL, FR_LESS, FR_COMM,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    FR_AGRV, FR_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    FR_AGRV, FR_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    FR_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, FR_M, KC_N, KC_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    KC_P,    FR_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    FR_W,
 | 
			
		||||
    KC_P, FR_Q, KC_R, KC_S, KC_T, KC_U, KC_V, FR_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    KC_X,    KC_Y,    FR_Z,    FR_LPRN, FR_UNDS, FR_RPRN, FR_CCED, FR_UNDS,
 | 
			
		||||
    KC_X, KC_Y, FR_Z, FR_LPRN, FR_UNDS, FR_RPRN, FR_CCED, FR_UNDS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    FR_EGRV, FR_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    FR_EGRV, FR_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    FR_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, FR_M, KC_N, KC_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    KC_P,    FR_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    FR_W,
 | 
			
		||||
    KC_P, FR_Q, KC_R, KC_S, KC_T, KC_U, KC_V, FR_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    KC_X,    KC_Y,    FR_Z,    FR_APOS, FR_MINS, FR_EQL,  FR_EACU, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    KC_X, KC_Y, FR_Z, FR_APOS, FR_MINS, FR_EQL, FR_EACU, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,78 +20,45 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_german.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 1, 1, 0, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 1, 1, 0, 1, 1, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 1,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  DE_1,    DE_2,    DE_HASH, DE_4,    DE_5,    DE_6,    DE_HASH,
 | 
			
		||||
    KC_SPC, DE_1, DE_2, DE_HASH, DE_4, DE_5, DE_6, DE_HASH,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    DE_8,    DE_9,    DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT,  DE_7,
 | 
			
		||||
    DE_8, DE_9, DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT, DE_7,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    DE_0,    DE_1,    DE_2,    DE_3,    DE_4,    DE_5,    DE_6,    DE_7,
 | 
			
		||||
    DE_0, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    DE_8,    DE_9,    DE_DOT,  DE_COMM, DE_LESS, DE_0,    DE_LESS, DE_SS,
 | 
			
		||||
    DE_8, DE_9, DE_DOT, DE_COMM, DE_LESS, DE_0, DE_LESS, DE_SS,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    DE_Q,    DE_A,    DE_B,    DE_C,    DE_D,    DE_E,    DE_F,    DE_G,
 | 
			
		||||
    DE_Q, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    DE_H,    DE_I,    DE_J,    DE_K,    DE_L,    DE_M,    DE_N,    DE_O,
 | 
			
		||||
    DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    DE_P,    DE_Q,    DE_R,    DE_S,    DE_T,    DE_U,    DE_V,    DE_W,
 | 
			
		||||
    DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    DE_X,    DE_Y,    DE_Z,    DE_8,    DE_SS,   DE_9,    DE_CIRC, DE_MINS,
 | 
			
		||||
    DE_X, DE_Y, DE_Z, DE_8, DE_SS, DE_9, DE_CIRC, DE_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    DE_ACUT, DE_A,    DE_B,    DE_C,    DE_D,    DE_E,    DE_F,    DE_G,
 | 
			
		||||
    DE_ACUT, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    DE_H,    DE_I,    DE_J,    DE_K,    DE_L,    DE_M,    DE_N,    DE_O,
 | 
			
		||||
    DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    DE_P,    DE_Q,    DE_R,    DE_S,    DE_T,    DE_U,    DE_V,    DE_W,
 | 
			
		||||
    DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    DE_X,    DE_Y,    DE_Z,    DE_7,    DE_LESS, DE_0,    DE_PLUS, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    DE_X, DE_Y, DE_Z, DE_7, DE_LESS, DE_0, DE_PLUS, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,58 +20,41 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_jp.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 1, 1, 1, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 1,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    KC_8,    KC_9,    JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT,  JP_SLSH,
 | 
			
		||||
    KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    KC_8,    KC_9,    JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT,  JP_SLSH,
 | 
			
		||||
    KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    JP_AT,   KC_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    KC_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    KC_P,    KC_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    KC_W,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    KC_X,    KC_Y,    KC_Z,    JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
 | 
			
		||||
    KC_X, KC_Y, KC_Z, JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    JP_AT,   KC_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    KC_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    KC_P,    KC_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    KC_W,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    KC_X,    KC_Y,    KC_Z,    JP_LBRC, JP_YEN,  JP_RBRC, JP_CIRC, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    KC_X, KC_Y, KC_Z, JP_LBRC, JP_YEN, JP_RBRC, JP_CIRC, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,34 +24,33 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		|||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  KC_1,    KC_QUOT, KC_3,    KC_4,    KC_5,    KC_7,    KC_QUOT,
 | 
			
		||||
    KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    KC_9,    KC_0,    KC_8,    KC_EQL,  KC_COMM, KC_MINS, KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    KC_8,    KC_9,    NM_SCLN, NM_SCLN, KC_COMM, KC_EQL,  KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    KC_2,    NM_A,    NM_B,    NM_C,    NM_D,    NM_E,    NM_F,    NM_G,
 | 
			
		||||
    KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    NM_H,    NM_I,    NM_J,    NM_K,    NM_L,    NM_M,    NM_N,    NM_O,
 | 
			
		||||
    NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    NM_P,    NM_Q,    NM_R,    NM_S,    NM_T,    NM_U,    NM_V,    NM_W,
 | 
			
		||||
    NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    NM_X,    NM_Y,    NM_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_6,    KC_MINS,
 | 
			
		||||
    NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    KC_GRV,  NM_A,    NM_B,    NM_C,    NM_D,    NM_E,    NM_F,    NM_G,
 | 
			
		||||
    KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    NM_H,    NM_I,    NM_J,    NM_K,    NM_L,    NM_M,    NM_N,    NM_O,
 | 
			
		||||
    NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    NM_P,    NM_Q,    NM_R,    NM_S,    NM_T,    NM_U,    NM_V,    NM_W,
 | 
			
		||||
    NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    NM_X,    NM_Y,    NM_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV,  KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,78 +20,45 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_spanish.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 1, 1, 0, 1, 1, 1, 0,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 0, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 1, 1, 0, 1, 1, 1,
 | 
			
		||||
    0, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 1, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_altgr_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 0, 0, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    1, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    ES_APOS,
 | 
			
		||||
    KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, ES_APOS,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    KC_8,    KC_9,    ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT,  KC_7,
 | 
			
		||||
    KC_8, KC_9, ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT, KC_7,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    KC_8,    KC_9,    KC_DOT,  KC_COMM, ES_LESS, KC_0,    ES_LESS, ES_APOS,
 | 
			
		||||
    KC_8, KC_9, KC_DOT, KC_COMM, ES_LESS, KC_0, ES_LESS, ES_APOS,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    KC_2,    KC_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    KC_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    KC_P,    KC_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    KC_W,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    KC_X,    KC_Y,    KC_Z,    ES_GRV,  ES_OVRR, ES_PLUS, ES_GRV,  ES_MINS,
 | 
			
		||||
    KC_X, KC_Y, KC_Z, ES_GRV, ES_OVRR, ES_PLUS, ES_GRV, ES_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    ES_GRV,  KC_A,    KC_B,    KC_C,    KC_D,    KC_E,    KC_F,    KC_G,
 | 
			
		||||
    ES_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    KC_H,    KC_I,    KC_J,    KC_K,    KC_L,    KC_M,    KC_N,    KC_O,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    KC_P,    KC_Q,    KC_R,    KC_S,    KC_T,    KC_U,    KC_V,    KC_W,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    KC_X,    KC_Y,    KC_Z,    ES_ACUT, KC_1,    ES_CCED, ES_NTIL, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    KC_X, KC_Y, KC_Z, ES_ACUT, KC_1, ES_CCED, ES_NTIL, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,58 +20,41 @@
 | 
			
		|||
 | 
			
		||||
#include "keymap_uk.h"
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
const bool ascii_to_shift_lut[128] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
 | 
			
		||||
    0, 1, 1, 0, 1, 1, 1, 0,
 | 
			
		||||
    1, 1, 1, 1, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 1, 0, 1, 0, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 1, 1, 1, 1, 1,
 | 
			
		||||
    1, 1, 1, 0, 0, 0, 1, 1,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 1, 1, 1, 1, 0
 | 
			
		||||
};
 | 
			
		||||
                                              0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		||||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    UK_SPC,  UK_1,    UK_2,    UK_HASH, UK_4,    UK_5,    UK_7,    UK_QUOT,
 | 
			
		||||
    UK_SPC, UK_1, UK_2, UK_HASH, UK_4, UK_5, UK_7, UK_QUOT,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    UK_9,    UK_0,    UK_8,    UK_EQL,  UK_COMM, UK_MINS, UK_DOT,  UK_SLSH,
 | 
			
		||||
    UK_9, UK_0, UK_8, UK_EQL, UK_COMM, UK_MINS, UK_DOT, UK_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    UK_0,    UK_1,    UK_2,    UK_3,    UK_4,    UK_5,    UK_6,    UK_7,
 | 
			
		||||
    UK_0, UK_1, UK_2, UK_3, UK_4, UK_5, UK_6, UK_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    UK_8,    UK_9,    UK_SCLN, UK_SCLN, UK_COMM, UK_EQL,  UK_DOT,  UK_SLSH,
 | 
			
		||||
    UK_8, UK_9, UK_SCLN, UK_SCLN, UK_COMM, UK_EQL, UK_DOT, UK_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    UK_QUOT, UK_A,    UK_B,    UK_C,    UK_D,    UK_E,    UK_F,    UK_G,
 | 
			
		||||
    UK_QUOT, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    UK_H,    UK_I,    UK_J,    UK_K,    UK_L,    UK_M,    UK_N,    UK_O,
 | 
			
		||||
    UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    UK_P,    UK_Q,    UK_R,    UK_S,    UK_T,    UK_U,    UK_V,    UK_W,
 | 
			
		||||
    UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    UK_X,    UK_Y,    UK_Z,    UK_LBRC, UK_BSLS, UK_RBRC, UK_6,    UK_MINS,
 | 
			
		||||
    UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_6, UK_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    UK_GRV,  UK_A,    UK_B,    UK_C,    UK_D,    UK_E,    UK_F,    UK_G,
 | 
			
		||||
    UK_GRV, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    UK_H,    UK_I,    UK_J,    UK_K,    UK_L,    UK_M,    UK_N,    UK_O,
 | 
			
		||||
    UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    UK_P,    UK_Q,    UK_R,    UK_S,    UK_T,    UK_U,    UK_V,    UK_W,
 | 
			
		||||
    UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    UK_X,    UK_Y,    UK_Z,    UK_LBRC, UK_BSLS, UK_RBRC, UK_HASH, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_HASH, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,34 +24,33 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
 | 
			
		|||
    // NUL   SOH      STX      ETX      EOT      ENQ      ACK      BEL
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // BS    TAB      LF       VT       FF       CR       SO       SI
 | 
			
		||||
    KC_BSPC, KC_TAB,  KC_ENT,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // DLE   DC1      DC2      DC3      DC4      NAK      SYN      ETB
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    // CAN   EM       SUB      ESC      FS       GS       RS       US
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    //       !        "        #        $        %        &        '
 | 
			
		||||
    KC_SPC,  KC_1,    KC_QUOT, KC_3,    KC_4,    KC_5,    KC_7,    KC_QUOT,
 | 
			
		||||
    KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
 | 
			
		||||
    // (     )        *        +        ,        -        .        /
 | 
			
		||||
    KC_9,    KC_0,    KC_8,    KC_EQL,  KC_COMM, KC_MINS, KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
 | 
			
		||||
    // 0     1        2        3        4        5        6        7
 | 
			
		||||
    KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    // 8     9        :        ;        <        =        >        ?
 | 
			
		||||
    KC_8,    KC_9,    KC_SCLN, KC_SCLN, KC_COMM, KC_EQL,  KC_DOT,  KC_SLSH,
 | 
			
		||||
    KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
 | 
			
		||||
    // @     A        B        C        D        E        F        G
 | 
			
		||||
    KC_2,    WK_A,    WK_B,    WK_C,    WK_D,    WK_E,    WK_F,    WK_G,
 | 
			
		||||
    KC_2, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
 | 
			
		||||
    // H     I        J        K        L        M        N        O
 | 
			
		||||
    WK_H,    WK_I,    WK_J,    WK_K,    WK_L,    WK_M,    WK_N,    WK_O,
 | 
			
		||||
    WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
 | 
			
		||||
    // P     Q        R        S        T        U        V        W
 | 
			
		||||
    WK_P,    WK_Q,    WK_R,    WK_S,    WK_T,    WK_U,    WK_V,    WK_W,
 | 
			
		||||
    WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
 | 
			
		||||
    // X     Y        Z        [        \        ]        ^        _
 | 
			
		||||
    WK_X,    WK_Y,    WK_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_6,    KC_MINS,
 | 
			
		||||
    WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
 | 
			
		||||
    // `     a        b        c        d        e        f        g
 | 
			
		||||
    KC_GRV,  WK_A,    WK_B,    WK_C,    WK_D,    WK_E,    WK_F,    WK_G,
 | 
			
		||||
    KC_GRV, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
 | 
			
		||||
    // h     i        j        k        l        m        n        o
 | 
			
		||||
    WK_H,    WK_I,    WK_J,    WK_K,    WK_L,    WK_M,    WK_N,    WK_O,
 | 
			
		||||
    WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
 | 
			
		||||
    // p     q        r        s        t        u        v        w
 | 
			
		||||
    WK_P,    WK_Q,    WK_R,    WK_S,    WK_T,    WK_U,    WK_V,    WK_W,
 | 
			
		||||
    WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
 | 
			
		||||
    // x     y        z        {        |        }        ~        DEL
 | 
			
		||||
    WK_X,    WK_Y,    WK_Z,    KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV,  KC_DEL
 | 
			
		||||
};
 | 
			
		||||
    WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue