Retro_Refit is an example of using a Teensy to replace a keyboard controller on an older keyboard. The original 6x15 keyboard had a non-standard 11x8 matrix.
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
Copyright 2012 Jun Wako <wakojun@gmail.com>
 | 
						|
 | 
						|
This program is free software: you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation, either version 2 of the License, or
 | 
						|
(at your option) any later version.
 | 
						|
 | 
						|
This program is distributed in the hope that it will be useful,
 | 
						|
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
GNU General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef CONFIG_H
 | 
						|
#define CONFIG_H
 | 
						|
 | 
						|
#include "config_common.h"
 | 
						|
 | 
						|
/* USB Device descriptor parameter */
 | 
						|
#define VENDOR_ID       0xFEED
 | 
						|
#define PRODUCT_ID      0x6060
 | 
						|
#define DEVICE_VER      0x0001
 | 
						|
#define MANUFACTURER    Nobody
 | 
						|
#define PRODUCT         retro_refit
 | 
						|
#define DESCRIPTION     Retro Refit
 | 
						|
 | 
						|
/* key matrix size */
 | 
						|
#define MATRIX_ROWS 11
 | 
						|
#define MATRIX_COLS 8
 | 
						|
 | 
						|
// See note in retro_refit.h for an explanation of how this matrix is wired up
 | 
						|
#define COLS (int []){ B0, B1, B2, B3, D2, D3, C7, D5 }
 | 
						|
#define ROWS (int []){ D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 }
 | 
						|
 | 
						|
/* COL2ROW or ROW2COL */
 | 
						|
#define DIODE_DIRECTION COL2ROW
 | 
						|
 | 
						|
/* define if matrix has ghost */
 | 
						|
//#define MATRIX_HAS_GHOST
 | 
						|
 | 
						|
/* number of backlight levels */
 | 
						|
#define BACKLIGHT_LEVELS 0
 | 
						|
 | 
						|
/* Set 0 if debouncing isn't needed */
 | 
						|
#define DEBOUNCE 5
 | 
						|
 | 
						|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 | 
						|
#define LOCKING_SUPPORT_ENABLE
 | 
						|
/* Locking resynchronize hack */
 | 
						|
#define LOCKING_RESYNC_ENABLE
 | 
						|
 | 
						|
/* key combination for command */
 | 
						|
#define IS_COMMAND() ( \
 | 
						|
    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 | 
						|
)
 | 
						|
 | 
						|
/*
 | 
						|
 * Feature disable options
 | 
						|
 *  These options are also useful to firmware size reduction.
 | 
						|
 */
 | 
						|
 | 
						|
/* disable debug print */
 | 
						|
//#define NO_DEBUG
 | 
						|
 | 
						|
/* disable print */
 | 
						|
//#define NO_PRINT
 | 
						|
 | 
						|
/* disable action features */
 | 
						|
//#define NO_ACTION_LAYER
 | 
						|
//#define NO_ACTION_TAPPING
 | 
						|
//#define NO_ACTION_ONESHOT
 | 
						|
//#define NO_ACTION_MACRO
 | 
						|
//#define NO_ACTION_FUNCTION
 | 
						|
 | 
						|
#endif
 |