Pull out sendstring variations to their own files.
Instead of having all sendstring keycode mappings in the main quantum.c file, give each one its own file in keymap_extras that can be #included in a user's keymap. If one is included, it will define the appropriate lookup tables and overwrite the weak definitions in quantum.c. (Including more than one sendstring definition will fail at compile time.) Update @rai-suta's test keymap to match, as well as the documentation.
This commit is contained in:
		
							parent
							
								
									fdc2e8058b
								
							
						
					
					
						commit
						48ff93582b
					
				
					 8 changed files with 153 additions and 92 deletions
				
			
		
							
								
								
									
										41
									
								
								quantum/keymap_extras/sendstring_colemak.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								quantum/keymap_extras/sendstring_colemak.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
/* Copyright 2016 Jack Humbert
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
/* Sendstring definitions for the Colemak layout */
 | 
			
		||||
#ifndef SENDSTRING_COLEMAK
 | 
			
		||||
#define SENDSTRING_COLEMAK
 | 
			
		||||
 | 
			
		||||
#include "keymap_colemak.h"
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, KC_ESC, 0, 0, 0, 0,
 | 
			
		||||
    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_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
 | 
			
		||||
    KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
 | 
			
		||||
    CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
 | 
			
		||||
    CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
 | 
			
		||||
    CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
 | 
			
		||||
    KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
 | 
			
		||||
    CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
 | 
			
		||||
    CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
 | 
			
		||||
    CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										41
									
								
								quantum/keymap_extras/sendstring_dvorak.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								quantum/keymap_extras/sendstring_dvorak.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
/* Copyright 2016 Jack Humbert
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
/* Sendstring definitions for the Dvorak layout */
 | 
			
		||||
#ifndef SENDSTRING_DVORAK
 | 
			
		||||
#define SENDSTRING_DVORAK
 | 
			
		||||
 | 
			
		||||
#include "keymap_dvorak.h"
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, KC_ESC, 0, 0, 0, 0,
 | 
			
		||||
    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_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
 | 
			
		||||
    DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
 | 
			
		||||
    DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
 | 
			
		||||
    DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
 | 
			
		||||
    DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
 | 
			
		||||
    DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
 | 
			
		||||
    DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
 | 
			
		||||
    DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
 | 
			
		||||
    DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
 | 
			
		||||
    DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										58
									
								
								quantum/keymap_extras/sendstring_jis.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								quantum/keymap_extras/sendstring_jis.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
/* Copyright 2016 Jack Humbert
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
/* Sendstring definitions for the JIS keyboard layout */
 | 
			
		||||
#ifndef SENDSTRING_JIS
 | 
			
		||||
#define SENDSTRING_JIS
 | 
			
		||||
 | 
			
		||||
const bool ascii_to_shift_lut[0x80] 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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
    0, 0, 0, KC_ESC, 0, 0, 0, 0,
 | 
			
		||||
    KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
 | 
			
		||||
    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
 | 
			
		||||
    KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
 | 
			
		||||
    KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_RO,
 | 
			
		||||
    KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
 | 
			
		||||
    KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
 | 
			
		||||
    KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
 | 
			
		||||
    KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_DEL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue