Comments (18)
Also, generatedKeymap.h because either GitHub won't allow me to attach a file or I can't figure out how:
/* Copyright (C) 2014-2015 by Jacob Alexander
*
* This file is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This file 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 file. If not, see <http://www.gnu.org/licenses/>.
*/
// This file was generated by the kll compiler, DO NOT EDIT.
// Generation Date: 2015-02-27
// KLL Backend: kiibohd
// KLL Git Rev: 867e7495a5cc050ef5c93fabd2a66eadf170e60d
// KLL Git Changes: None
// Compiler arguments:
// ../kll/kll.py
// /Users/steve/git/github/controller/Macro/PartialMap/capabilities.kll
// /Users/steve/git/github/controller/Output/pjrcUSB/capabilities.kll
// /Users/steve/git/github/controller/Scan/MD1/defaultMap.kll
// -d
// /Users/steve/git/github/controller/kll/layouts/mcmLayer0.kll
// /Users/steve/git/github/controller/kll/layouts/stdFuncMap.kll
// -p
// /Users/steve/git/github/controller/kll/layouts/mcmLayer1.kll
// --backend
// kiibohd
// --templates
// /Users/steve/git/github/controller/kll/templates/kiibohdKeymap.h
// /Users/steve/git/github/controller/kll/templates/kiibohdDefs.h
// --outputs
// generatedKeymap.h
// kll_defs.h
//
// - Base Layer -
// PartialMapCapabilities
// /Users/steve/git/github/controller/Macro/PartialMap/capabilities.kll
// pjrcUSBCapabilities
// /Users/steve/git/github/controller/Output/pjrcUSB/capabilities.kll
// MD1
// /Users/steve/git/github/controller/Scan/MD1/defaultMap.kll
// - Default Layer -
// mcmLayer0
// /Users/steve/git/github/controller/kll/layouts/mcmLayer0.kll
// stdFuncMap
// /Users/steve/git/github/controller/kll/layouts/stdFuncMap.kll
// - Partial Layers -
// Layer 1
// mcmLayer1
// /Users/steve/git/github/controller/kll/layouts/mcmLayer1.kll
#ifndef __kiibohdKeymap_h
#define __kiibohdKeymap_h
// ----- Includes -----
// KLL Include
#include <kll.h>
// ----- Capabilities -----
// Indexed Capabilities Table
const Capability CapabilitiesList[] = {
{ Macro_layerLatch_capability, 2 },
{ Macro_layerLock_capability, 2 },
{ Macro_layerShift_capability, 2 },
{ Macro_layerState_capability, 3 },
{ Output_consCtrlSend_capability, 2 },
{ Output_kbdProtocolBoot_capability, 0 },
{ Output_kbdProtocolNKRO_capability, 0 },
{ Output_sysCtrlSend_capability, 1 },
{ Output_usbCodeSend_capability, 1 },
};
// -- Result Macros
// Result Macro Guides
Guide_RM( 0 ) = { 1, 8, KEY_4, 0 };
Guide_RM( 1 ) = { 1, 8, KEY_L, 0 };
Guide_RM( 2 ) = { 1, 8, KEY_TAB, 0 };
Guide_RM( 3 ) = { 1, 8, KEY_LALT, 0 };
Guide_RM( 4 ) = { 1, 8, KEY_R, 0 };
Guide_RM( 5 ) = { 1, 8, KEY_RSHIFT, 0 };
Guide_RM( 6 ) = { 1, 8, KEY_ESC, 0 };
Guide_RM( 7 ) = { 1, 8, KEY_LGUI, 0 };
Guide_RM( 8 ) = { 1, 8, KEY_G, 0 };
Guide_RM( 9 ) = { 1, 8, KEY_T, 0 };
Guide_RM( 10 ) = { 1, 2, 1, 0, 0 };
Guide_RM( 11 ) = { 1, 8, KEY_S, 0 };
Guide_RM( 12 ) = { 1, 8, KEY_1, 0 };
Guide_RM( 13 ) = { 1, 8, KEY_H, 0 };
Guide_RM( 14 ) = { 1, 8, KEY_Q, 0 };
Guide_RM( 15 ) = { 1, 8, KEY_COMMA, 0 };
Guide_RM( 16 ) = { 1, 8, KEY_J, 0 };
Guide_RM( 17 ) = { 1, 8, KEY_BACKSLASH, 0 };
Guide_RM( 18 ) = { 1, 8, KEY_B, 0 };
Guide_RM( 19 ) = { 1, 8, KEY_W, 0 };
Guide_RM( 20 ) = { 1, 8, KEY_PERIOD, 0 };
Guide_RM( 21 ) = { 1, 8, KEY_DELETE, 0 };
Guide_RM( 22 ) = { 1, 8, KEY_D, 0 };
Guide_RM( 23 ) = { 1, 8, KEY_SLASH, 0 };
Guide_RM( 24 ) = { 1, 8, KEY_LCTRL, 0 };
Guide_RM( 25 ) = { 1, 8, KEY_F, 0 };
Guide_RM( 26 ) = { 1, 8, KEY_0, 0 };
Guide_RM( 27 ) = { 1, 8, KEY_A, 0 };
Guide_RM( 28 ) = { 1, 8, KEY_7, 0 };
Guide_RM( 29 ) = { 1, 8, KEY_N, 0 };
Guide_RM( 30 ) = { 1, 8, KEY_MINUS, 0 };
Guide_RM( 31 ) = { 1, 8, KEY_C, 0 };
Guide_RM( 32 ) = { 1, 8, KEY_M, 0 };
Guide_RM( 33 ) = { 1, 8, KEY_LEFT_BRACE, 0 };
Guide_RM( 34 ) = { 1, 8, KEY_EQUAL, 0 };
Guide_RM( 35 ) = { 1, 8, KEY_V, 0 };
Guide_RM( 36 ) = { 1, 8, KEY_I, 0 };
Guide_RM( 37 ) = { 1, 8, KEY_RIGHT_BRACE, 0 };
Guide_RM( 38 ) = { 1, 2, 3, 0, 0 };
Guide_RM( 39 ) = { 1, 8, KEY_8, 0 };
Guide_RM( 40 ) = { 1, 8, KEY_LSHIFT, 0 };
Guide_RM( 41 ) = { 1, 8, KEY_BACKSPACE, 0 };
Guide_RM( 42 ) = { 1, 8, KEY_5, 0 };
Guide_RM( 43 ) = { 1, 2, 4, 0, 0 };
Guide_RM( 44 ) = { 1, 8, KEY_SEMICOLON, 0 };
Guide_RM( 45 ) = { 1, 8, KEY_9, 0 };
Guide_RM( 46 ) = { 1, 8, KEY_Z, 0 };
Guide_RM( 47 ) = { 1, 8, KEY_6, 0 };
Guide_RM( 48 ) = { 1, 8, KEY_O, 0 };
Guide_RM( 49 ) = { 1, 8, KEY_SPACE, 0 };
Guide_RM( 50 ) = { 1, 8, KEY_X, 0 };
Guide_RM( 51 ) = { 1, 8, KEY_Y, 0 };
Guide_RM( 52 ) = { 1, 8, KEY_P, 0 };
Guide_RM( 53 ) = { 1, 8, KEY_2, 0 };
Guide_RM( 54 ) = { 1, 8, KEY_RGUI, 0 };
Guide_RM( 55 ) = { 1, 8, KEY_U, 0 };
Guide_RM( 56 ) = { 1, 8, KEY_QUOTE, 0 };
Guide_RM( 57 ) = { 1, 8, KEY_3, 0 };
Guide_RM( 58 ) = { 1, 8, KEY_RALT, 0 };
Guide_RM( 59 ) = { 1, 8, KEY_K, 0 };
Guide_RM( 60 ) = { 1, 8, KEY_ENTER, 0 };
Guide_RM( 61 ) = { 1, 8, KEY_E, 0 };
Guide_RM( 62 ) = { 1, 8, KEY_F4, 0 };
Guide_RM( 63 ) = { 1, 8, KEY_BACKTICK, 0 };
Guide_RM( 64 ) = { 1, 8, KEY_DOWN, 0 };
Guide_RM( 65 ) = { 1, 8, KEY_F1, 0 };
Guide_RM( 66 ) = { 1, 8, KEY_PAGE_UP, 0 };
Guide_RM( 67 ) = { 1, 8, KEY_UP, 0 };
Guide_RM( 68 ) = { 1, 8, KEY_PAGE_DOWN, 0 };
Guide_RM( 69 ) = { 1, 8, KEY_RIGHT, 0 };
Guide_RM( 70 ) = { 1, 8, KEY_F10, 0 };
Guide_RM( 71 ) = { 1, 8, KEY_LEFT, 0 };
Guide_RM( 72 ) = { 1, 8, KEY_F7, 0 };
Guide_RM( 73 ) = { 1, 8, KEY_HOME, 0 };
Guide_RM( 74 ) = { 1, 8, KEY_END, 0 };
Guide_RM( 75 ) = { 1, 8, KEY_F8, 0 };
Guide_RM( 76 ) = { 1, 8, KEY_F5, 0 };
Guide_RM( 77 ) = { 1, 8, KEY_F9, 0 };
Guide_RM( 78 ) = { 1, 8, KEY_F6, 0 };
Guide_RM( 79 ) = { 1, 8, KEY_F2, 0 };
Guide_RM( 80 ) = { 1, 8, KEY_F3, 0 };
// -- Result Macro List
// Indexed Table of Result Macros
const ResultMacro ResultMacroList[] = {
Define_RM( 0 ),
Define_RM( 1 ),
Define_RM( 2 ),
Define_RM( 3 ),
Define_RM( 4 ),
Define_RM( 5 ),
Define_RM( 6 ),
Define_RM( 7 ),
Define_RM( 8 ),
Define_RM( 9 ),
Define_RM( 10 ),
Define_RM( 11 ),
Define_RM( 12 ),
Define_RM( 13 ),
Define_RM( 14 ),
Define_RM( 15 ),
Define_RM( 16 ),
Define_RM( 17 ),
Define_RM( 18 ),
Define_RM( 19 ),
Define_RM( 20 ),
Define_RM( 21 ),
Define_RM( 22 ),
Define_RM( 23 ),
Define_RM( 24 ),
Define_RM( 25 ),
Define_RM( 26 ),
Define_RM( 27 ),
Define_RM( 28 ),
Define_RM( 29 ),
Define_RM( 30 ),
Define_RM( 31 ),
Define_RM( 32 ),
Define_RM( 33 ),
Define_RM( 34 ),
Define_RM( 35 ),
Define_RM( 36 ),
Define_RM( 37 ),
Define_RM( 38 ),
Define_RM( 39 ),
Define_RM( 40 ),
Define_RM( 41 ),
Define_RM( 42 ),
Define_RM( 43 ),
Define_RM( 44 ),
Define_RM( 45 ),
Define_RM( 46 ),
Define_RM( 47 ),
Define_RM( 48 ),
Define_RM( 49 ),
Define_RM( 50 ),
Define_RM( 51 ),
Define_RM( 52 ),
Define_RM( 53 ),
Define_RM( 54 ),
Define_RM( 55 ),
Define_RM( 56 ),
Define_RM( 57 ),
Define_RM( 58 ),
Define_RM( 59 ),
Define_RM( 60 ),
Define_RM( 61 ),
Define_RM( 62 ),
Define_RM( 63 ),
Define_RM( 64 ),
Define_RM( 65 ),
Define_RM( 66 ),
Define_RM( 67 ),
Define_RM( 68 ),
Define_RM( 69 ),
Define_RM( 70 ),
Define_RM( 71 ),
Define_RM( 72 ),
Define_RM( 73 ),
Define_RM( 74 ),
Define_RM( 75 ),
Define_RM( 76 ),
Define_RM( 77 ),
Define_RM( 78 ),
Define_RM( 79 ),
Define_RM( 80 ),
};
// -- Trigger Macro Record
// Keeps a record/state of each result macro
ResultMacroRecord ResultMacroRecordList[ ResultMacroNum ];
// -- Trigger Macros
// Trigger Macro Guides
Guide_TM( 0 ) = { 1, 0x00, 0x01, 0x04, 0 };
Guide_TM( 1 ) = { 1, 0x00, 0x01, 0x26, 0 };
Guide_TM( 2 ) = { 1, 0x00, 0x01, 0x0F, 0 };
Guide_TM( 3 ) = { 1, 0x00, 0x01, 0x38, 0 };
Guide_TM( 4 ) = { 1, 0x00, 0x01, 0x13, 0 };
Guide_TM( 5 ) = { 1, 0x00, 0x01, 0x35, 0 };
Guide_TM( 6 ) = { 1, 0x00, 0x01, 0x00, 0 };
Guide_TM( 7 ) = { 1, 0x00, 0x01, 0x39, 0 };
Guide_TM( 8 ) = { 1, 0x00, 0x01, 0x22, 0 };
Guide_TM( 9 ) = { 1, 0x00, 0x01, 0x14, 0 };
Guide_TM( 10 ) = { 1, 0x00, 0x01, 0x36, 0 };
Guide_TM( 11 ) = { 1, 0x00, 0x01, 0x1F, 0 };
Guide_TM( 12 ) = { 1, 0x00, 0x01, 0x01, 0 };
Guide_TM( 13 ) = { 1, 0x00, 0x01, 0x23, 0 };
Guide_TM( 14 ) = { 1, 0x00, 0x01, 0x10, 0 };
Guide_TM( 15 ) = { 1, 0x00, 0x01, 0x32, 0 };
Guide_TM( 16 ) = { 1, 0x00, 0x01, 0x24, 0 };
Guide_TM( 17 ) = { 1, 0x00, 0x01, 0x0D, 0 };
Guide_TM( 18 ) = { 1, 0x00, 0x01, 0x2F, 0 };
Guide_TM( 19 ) = { 1, 0x00, 0x01, 0x11, 0 };
Guide_TM( 20 ) = { 1, 0x00, 0x01, 0x33, 0 };
Guide_TM( 21 ) = { 1, 0x00, 0x01, 0x0E, 0 };
Guide_TM( 22 ) = { 1, 0x00, 0x01, 0x20, 0 };
Guide_TM( 23 ) = { 1, 0x00, 0x01, 0x34, 0 };
Guide_TM( 24 ) = { 1, 0x00, 0x01, 0x1D, 0 };
Guide_TM( 25 ) = { 1, 0x00, 0x01, 0x21, 0 };
Guide_TM( 26 ) = { 1, 0x00, 0x01, 0x0A, 0 };
Guide_TM( 27 ) = { 1, 0x00, 0x01, 0x1E, 0 };
Guide_TM( 28 ) = { 1, 0x00, 0x01, 0x07, 0 };
Guide_TM( 29 ) = { 1, 0x00, 0x01, 0x30, 0 };
Guide_TM( 30 ) = { 1, 0x00, 0x01, 0x0B, 0 };
Guide_TM( 31 ) = { 1, 0x00, 0x01, 0x2D, 0 };
Guide_TM( 32 ) = { 1, 0x00, 0x01, 0x31, 0 };
Guide_TM( 33 ) = { 1, 0x00, 0x01, 0x1A, 0 };
Guide_TM( 34 ) = { 1, 0x00, 0x01, 0x0C, 0 };
Guide_TM( 35 ) = { 1, 0x00, 0x01, 0x2E, 0 };
Guide_TM( 36 ) = { 1, 0x00, 0x01, 0x17, 0 };
Guide_TM( 37 ) = { 1, 0x00, 0x01, 0x1B, 0 };
Guide_TM( 38 ) = { 1, 0x00, 0x01, 0x3D, 0 };
Guide_TM( 39 ) = { 1, 0x00, 0x01, 0x08, 0 };
Guide_TM( 40 ) = { 1, 0x00, 0x01, 0x2A, 0 };
Guide_TM( 41 ) = { 1, 0x00, 0x01, 0x1C, 0 };
Guide_TM( 42 ) = { 1, 0x00, 0x01, 0x05, 0 };
Guide_TM( 43 ) = { 1, 0x00, 0x01, 0x3E, 0 };
Guide_TM( 44 ) = { 1, 0x00, 0x01, 0x27, 0 };
Guide_TM( 45 ) = { 1, 0x00, 0x01, 0x09, 0 };
Guide_TM( 46 ) = { 1, 0x00, 0x01, 0x2B, 0 };
Guide_TM( 47 ) = { 1, 0x00, 0x01, 0x06, 0 };
Guide_TM( 48 ) = { 1, 0x00, 0x01, 0x18, 0 };
Guide_TM( 49 ) = { 1, 0x00, 0x01, 0x3A, 0 };
Guide_TM( 50 ) = { 1, 0x00, 0x01, 0x2C, 0 };
Guide_TM( 51 ) = { 1, 0x00, 0x01, 0x15, 0 };
Guide_TM( 52 ) = { 1, 0x00, 0x01, 0x37, 0 };
Guide_TM( 53 ) = { 1, 0x00, 0x01, 0x19, 0 };
Guide_TM( 54 ) = { 1, 0x00, 0x01, 0x02, 0 };
Guide_TM( 55 ) = { 1, 0x00, 0x01, 0x3B, 0 };
Guide_TM( 56 ) = { 1, 0x00, 0x01, 0x16, 0 };
Guide_TM( 57 ) = { 1, 0x00, 0x01, 0x28, 0 };
Guide_TM( 58 ) = { 1, 0x00, 0x01, 0x03, 0 };
Guide_TM( 59 ) = { 1, 0x00, 0x01, 0x3C, 0 };
Guide_TM( 60 ) = { 1, 0x00, 0x01, 0x25, 0 };
Guide_TM( 61 ) = { 1, 0x00, 0x01, 0x29, 0 };
Guide_TM( 62 ) = { 1, 0x00, 0x01, 0x12, 0 };
Guide_TM( 63 ) = { 1, 0x00, 0x01, 0x04, 0 };
Guide_TM( 64 ) = { 1, 0x00, 0x01, 0x00, 0 };
Guide_TM( 65 ) = { 1, 0x00, 0x01, 0x1F, 0 };
Guide_TM( 66 ) = { 1, 0x00, 0x01, 0x01, 0 };
Guide_TM( 67 ) = { 1, 0x00, 0x01, 0x0D, 0 };
Guide_TM( 68 ) = { 1, 0x00, 0x01, 0x11, 0 };
Guide_TM( 69 ) = { 1, 0x00, 0x01, 0x0E, 0 };
Guide_TM( 70 ) = { 1, 0x00, 0x01, 0x20, 0 };
Guide_TM( 71 ) = { 1, 0x00, 0x01, 0x34, 0 };
Guide_TM( 72 ) = { 1, 0x00, 0x01, 0x0A, 0 };
Guide_TM( 73 ) = { 1, 0x00, 0x01, 0x1E, 0 };
Guide_TM( 74 ) = { 1, 0x00, 0x01, 0x07, 0 };
Guide_TM( 75 ) = { 1, 0x00, 0x01, 0x0B, 0 };
Guide_TM( 76 ) = { 1, 0x00, 0x01, 0x1A, 0 };
Guide_TM( 77 ) = { 1, 0x00, 0x01, 0x0C, 0 };
Guide_TM( 78 ) = { 1, 0x00, 0x01, 0x08, 0 };
Guide_TM( 79 ) = { 1, 0x00, 0x01, 0x1C, 0 };
Guide_TM( 80 ) = { 1, 0x00, 0x01, 0x05, 0 };
Guide_TM( 81 ) = { 1, 0x00, 0x01, 0x27, 0 };
Guide_TM( 82 ) = { 1, 0x00, 0x01, 0x09, 0 };
Guide_TM( 83 ) = { 1, 0x00, 0x01, 0x06, 0 };
Guide_TM( 84 ) = { 1, 0x00, 0x01, 0x02, 0 };
Guide_TM( 85 ) = { 1, 0x00, 0x01, 0x28, 0 };
Guide_TM( 86 ) = { 1, 0x00, 0x01, 0x03, 0 };
// -- Trigger Macro List
// Indexed Table of Trigger Macros
const TriggerMacro TriggerMacroList[] = {
Define_TM( 0, 0 ),
Define_TM( 1, 1 ),
Define_TM( 2, 2 ),
Define_TM( 3, 3 ),
Define_TM( 4, 4 ),
Define_TM( 5, 5 ),
Define_TM( 6, 6 ),
Define_TM( 7, 7 ),
Define_TM( 8, 8 ),
Define_TM( 9, 9 ),
Define_TM( 10, 10 ),
Define_TM( 11, 11 ),
Define_TM( 12, 12 ),
Define_TM( 13, 13 ),
Define_TM( 14, 14 ),
Define_TM( 15, 15 ),
Define_TM( 16, 16 ),
Define_TM( 17, 17 ),
Define_TM( 18, 18 ),
Define_TM( 19, 19 ),
Define_TM( 20, 20 ),
Define_TM( 21, 21 ),
Define_TM( 22, 22 ),
Define_TM( 23, 23 ),
Define_TM( 24, 24 ),
Define_TM( 25, 25 ),
Define_TM( 26, 26 ),
Define_TM( 27, 27 ),
Define_TM( 28, 28 ),
Define_TM( 29, 29 ),
Define_TM( 30, 30 ),
Define_TM( 31, 31 ),
Define_TM( 32, 32 ),
Define_TM( 33, 33 ),
Define_TM( 34, 34 ),
Define_TM( 35, 35 ),
Define_TM( 36, 36 ),
Define_TM( 37, 37 ),
Define_TM( 38, 38 ),
Define_TM( 39, 39 ),
Define_TM( 40, 40 ),
Define_TM( 41, 41 ),
Define_TM( 42, 42 ),
Define_TM( 43, 43 ),
Define_TM( 44, 44 ),
Define_TM( 45, 45 ),
Define_TM( 46, 46 ),
Define_TM( 47, 47 ),
Define_TM( 48, 48 ),
Define_TM( 49, 49 ),
Define_TM( 50, 50 ),
Define_TM( 51, 51 ),
Define_TM( 52, 10 ),
Define_TM( 53, 52 ),
Define_TM( 54, 53 ),
Define_TM( 55, 54 ),
Define_TM( 56, 55 ),
Define_TM( 57, 56 ),
Define_TM( 58, 57 ),
Define_TM( 59, 58 ),
Define_TM( 60, 59 ),
Define_TM( 61, 60 ),
Define_TM( 62, 61 ),
Define_TM( 63, 62 ),
Define_TM( 64, 63 ),
Define_TM( 65, 64 ),
Define_TM( 66, 65 ),
Define_TM( 67, 66 ),
Define_TM( 68, 67 ),
Define_TM( 69, 68 ),
Define_TM( 70, 69 ),
Define_TM( 71, 64 ),
Define_TM( 72, 70 ),
Define_TM( 73, 71 ),
Define_TM( 74, 72 ),
Define_TM( 75, 73 ),
Define_TM( 76, 67 ),
Define_TM( 77, 74 ),
Define_TM( 78, 75 ),
Define_TM( 79, 21 ),
Define_TM( 80, 76 ),
Define_TM( 81, 71 ),
Define_TM( 82, 77 ),
Define_TM( 83, 78 ),
Define_TM( 84, 79 ),
Define_TM( 85, 69 ),
Define_TM( 86, 80 ),
};
// -- Trigger Macro Record List
// Keeps a record/state of each trigger macro
TriggerMacroRecord TriggerMacroRecordList[ TriggerMacroNum ];
// ----- Trigger Maps -----
// MaxScanCode
// - This is retrieved from the KLL configuration
// - Should be corollated with the max scan code in the scan module
// - Maximum value is 0x100 (0x0 to 0xFF)
// - Increasing it beyond the keyboard's capabilities is just a waste of ram...
#define MaxScanCode 0x3E
// -- Trigger Lists
//
// Index 0: # of triggers in list
// Index n: pointer to trigger macro - use tm() macro
// - Default Layer -
Define_TL( default, 0x00 ) = { 1, 6 };
Define_TL( default, 0x01 ) = { 1, 12 };
Define_TL( default, 0x02 ) = { 1, 54 };
Define_TL( default, 0x03 ) = { 1, 58 };
Define_TL( default, 0x04 ) = { 1, 0 };
Define_TL( default, 0x05 ) = { 1, 42 };
Define_TL( default, 0x06 ) = { 1, 47 };
Define_TL( default, 0x07 ) = { 1, 28 };
Define_TL( default, 0x08 ) = { 1, 39 };
Define_TL( default, 0x09 ) = { 1, 45 };
Define_TL( default, 0x0A ) = { 1, 26 };
Define_TL( default, 0x0B ) = { 1, 30 };
Define_TL( default, 0x0C ) = { 1, 34 };
Define_TL( default, 0x0D ) = { 1, 17 };
Define_TL( default, 0x0E ) = { 1, 21 };
Define_TL( default, 0x0F ) = { 1, 2 };
Define_TL( default, 0x10 ) = { 1, 14 };
Define_TL( default, 0x11 ) = { 1, 19 };
Define_TL( default, 0x12 ) = { 1, 62 };
Define_TL( default, 0x13 ) = { 1, 4 };
Define_TL( default, 0x14 ) = { 1, 9 };
Define_TL( default, 0x15 ) = { 1, 51 };
Define_TL( default, 0x16 ) = { 1, 56 };
Define_TL( default, 0x17 ) = { 1, 36 };
Define_TL( default, 0x18 ) = { 1, 48 };
Define_TL( default, 0x19 ) = { 1, 53 };
Define_TL( default, 0x1A ) = { 1, 33 };
Define_TL( default, 0x1B ) = { 1, 37 };
Define_TL( default, 0x1C ) = { 1, 41 };
Define_TL( default, 0x1D ) = { 1, 24 };
Define_TL( default, 0x1E ) = { 1, 27 };
Define_TL( default, 0x1F ) = { 1, 11 };
Define_TL( default, 0x20 ) = { 1, 22 };
Define_TL( default, 0x21 ) = { 1, 25 };
Define_TL( default, 0x22 ) = { 1, 8 };
Define_TL( default, 0x23 ) = { 1, 13 };
Define_TL( default, 0x24 ) = { 1, 16 };
Define_TL( default, 0x25 ) = { 1, 60 };
Define_TL( default, 0x26 ) = { 1, 1 };
Define_TL( default, 0x27 ) = { 1, 44 };
Define_TL( default, 0x28 ) = { 1, 57 };
Define_TL( default, 0x29 ) = { 1, 61 };
Define_TL( default, 0x2A ) = { 1, 40 };
Define_TL( default, 0x2B ) = { 1, 46 };
Define_TL( default, 0x2C ) = { 1, 50 };
Define_TL( default, 0x2D ) = { 1, 31 };
Define_TL( default, 0x2E ) = { 1, 35 };
Define_TL( default, 0x2F ) = { 1, 18 };
Define_TL( default, 0x30 ) = { 1, 29 };
Define_TL( default, 0x31 ) = { 1, 32 };
Define_TL( default, 0x32 ) = { 1, 15 };
Define_TL( default, 0x33 ) = { 1, 20 };
Define_TL( default, 0x34 ) = { 1, 23 };
Define_TL( default, 0x35 ) = { 1, 5 };
Define_TL( default, 0x36 ) = { 1, 10 };
Define_TL( default, 0x37 ) = { 1, 52 };
Define_TL( default, 0x38 ) = { 1, 3 };
Define_TL( default, 0x39 ) = { 1, 7 };
Define_TL( default, 0x3A ) = { 1, 49 };
Define_TL( default, 0x3B ) = { 1, 55 };
Define_TL( default, 0x3C ) = { 1, 59 };
Define_TL( default, 0x3D ) = { 1, 38 };
Define_TL( default, 0x3E ) = { 1, 43 };
// - Partial Layers -
// Partial Layer 1
Define_TL( layer1, 0x00 ) = { 1, 64 };
Define_TL( layer1, 0x01 ) = { 1, 66 };
Define_TL( layer1, 0x02 ) = { 1, 84 };
Define_TL( layer1, 0x03 ) = { 1, 86 };
Define_TL( layer1, 0x04 ) = { 1, 63 };
Define_TL( layer1, 0x05 ) = { 1, 80 };
Define_TL( layer1, 0x06 ) = { 1, 83 };
Define_TL( layer1, 0x07 ) = { 1, 74 };
Define_TL( layer1, 0x08 ) = { 1, 78 };
Define_TL( layer1, 0x09 ) = { 1, 82 };
Define_TL( layer1, 0x0A ) = { 1, 72 };
Define_TL( layer1, 0x0B ) = { 1, 75 };
Define_TL( layer1, 0x0C ) = { 1, 77 };
Define_TL( layer1, 0x0D ) = { 1, 67 };
Define_TL( layer1, 0x0E ) = { 1, 69 };
Define_TL( layer1, 0x0F ) = { 0 };
Define_TL( layer1, 0x10 ) = { 0 };
Define_TL( layer1, 0x11 ) = { 1, 68 };
Define_TL( layer1, 0x12 ) = { 0 };
Define_TL( layer1, 0x13 ) = { 0 };
Define_TL( layer1, 0x14 ) = { 0 };
Define_TL( layer1, 0x15 ) = { 0 };
Define_TL( layer1, 0x16 ) = { 0 };
Define_TL( layer1, 0x17 ) = { 0 };
Define_TL( layer1, 0x18 ) = { 0 };
Define_TL( layer1, 0x19 ) = { 0 };
Define_TL( layer1, 0x1A ) = { 1, 76 };
Define_TL( layer1, 0x1B ) = { 0 };
Define_TL( layer1, 0x1C ) = { 1, 79 };
Define_TL( layer1, 0x1D ) = { 0 };
Define_TL( layer1, 0x1E ) = { 1, 73 };
Define_TL( layer1, 0x1F ) = { 1, 65 };
Define_TL( layer1, 0x20 ) = { 1, 70 };
Define_TL( layer1, 0x21 ) = { 0 };
Define_TL( layer1, 0x22 ) = { 0 };
Define_TL( layer1, 0x23 ) = { 0 };
Define_TL( layer1, 0x24 ) = { 0 };
Define_TL( layer1, 0x25 ) = { 0 };
Define_TL( layer1, 0x26 ) = { 0 };
Define_TL( layer1, 0x27 ) = { 1, 81 };
Define_TL( layer1, 0x28 ) = { 1, 85 };
Define_TL( layer1, 0x29 ) = { 0 };
Define_TL( layer1, 0x2A ) = { 0 };
Define_TL( layer1, 0x2B ) = { 0 };
Define_TL( layer1, 0x2C ) = { 0 };
Define_TL( layer1, 0x2D ) = { 0 };
Define_TL( layer1, 0x2E ) = { 0 };
Define_TL( layer1, 0x2F ) = { 0 };
Define_TL( layer1, 0x30 ) = { 0 };
Define_TL( layer1, 0x31 ) = { 0 };
Define_TL( layer1, 0x32 ) = { 0 };
Define_TL( layer1, 0x33 ) = { 0 };
Define_TL( layer1, 0x34 ) = { 1, 71 };
// -- ScanCode Indexed Maps
// Maps to a trigger list of macro pointers
// _
// <scan code> -> |T|
// |r| -> <trigger macro pointer 1>
// |i|
// |g| -> <trigger macro pointer 2>
// |g|
// |e| -> <trigger macro pointer 3>
// |r|
// |s| -> <trigger macro pointer n>
// -
// - Default Map for ScanCode Lookup -
const nat_ptr_t *default_scanMap[] = {
default_tl_0x00, default_tl_0x01, default_tl_0x02, default_tl_0x03, default_tl_0x04, default_tl_0x05, default_tl_0x06, default_tl_0x07, default_tl_0x08, default_tl_0x09, default_tl_0x0A, default_tl_0x0B, default_tl_0x0C, default_tl_0x0D, default_tl_0x0E, default_tl_0x0F, default_tl_0x10, default_tl_0x11, default_tl_0x12, default_tl_0x13, default_tl_0x14, default_tl_0x15, default_tl_0x16, default_tl_0x17, default_tl_0x18, default_tl_0x19, default_tl_0x1A, default_tl_0x1B, default_tl_0x1C, default_tl_0x1D, default_tl_0x1E, default_tl_0x1F, default_tl_0x20, default_tl_0x21, default_tl_0x22, default_tl_0x23, default_tl_0x24, default_tl_0x25, default_tl_0x26, default_tl_0x27, default_tl_0x28, default_tl_0x29, default_tl_0x2A, default_tl_0x2B, default_tl_0x2C, default_tl_0x2D, default_tl_0x2E, default_tl_0x2F, default_tl_0x30, default_tl_0x31, default_tl_0x32, default_tl_0x33, default_tl_0x34, default_tl_0x35, default_tl_0x36, default_tl_0x37, default_tl_0x38, default_tl_0x39, default_tl_0x3A, default_tl_0x3B, default_tl_0x3C, default_tl_0x3D, default_tl_0x3E
};
// - Partial Layer ScanCode Lookup Maps -
// Partial Layer 1
const nat_ptr_t *layer1_scanMap[] = {
layer1_tl_0x00, layer1_tl_0x01, layer1_tl_0x02, layer1_tl_0x03, layer1_tl_0x04, layer1_tl_0x05, layer1_tl_0x06, layer1_tl_0x07, layer1_tl_0x08, layer1_tl_0x09, layer1_tl_0x0A, layer1_tl_0x0B, layer1_tl_0x0C, layer1_tl_0x0D, layer1_tl_0x0E, layer1_tl_0x0F, layer1_tl_0x10, layer1_tl_0x11, layer1_tl_0x12, layer1_tl_0x13, layer1_tl_0x14, layer1_tl_0x15, layer1_tl_0x16, layer1_tl_0x17, layer1_tl_0x18, layer1_tl_0x19, layer1_tl_0x1A, layer1_tl_0x1B, layer1_tl_0x1C, layer1_tl_0x1D, layer1_tl_0x1E, layer1_tl_0x1F, layer1_tl_0x20, layer1_tl_0x21, layer1_tl_0x22, layer1_tl_0x23, layer1_tl_0x24, layer1_tl_0x25, layer1_tl_0x26, layer1_tl_0x27, layer1_tl_0x28, layer1_tl_0x29, layer1_tl_0x2A, layer1_tl_0x2B, layer1_tl_0x2C, layer1_tl_0x2D, layer1_tl_0x2E, layer1_tl_0x2F, layer1_tl_0x30, layer1_tl_0x31, layer1_tl_0x32, layer1_tl_0x33, layer1_tl_0x34
};
// ----- Layer Index -----
// -- Layer Index List
//
// Index 0: Default map
// Index n: Additional layers
const Layer LayerIndex[] = {
Layer_IN( default_scanMap, "D: mcmLayer0 + stdFuncMap", 0x00 ),
Layer_IN( layer1_scanMap, "1: mcmLayer1", 0x00 ),
};
// - Layer State
uint8_t LayerState[ LayerNum ];
#endif // __generatedKeymap_h
from controller.
Actually, I realized that I had mapped the key i THOUGHT was control to function 1, and also conveniently made myself function 1 + escape is backtick. So, the control option doesn't work either.
from controller.
As best as I can tell with my limited understanding of how the KLL compiler works, it looks like in the eval_usbCode
function (kll.py, line 427ish), the triggers has the properly expanded KEY_LCTRL and KEY_BACKTICK, but when it calls macros_map.lookupUSBCodes, the combination of those two isn't found anywhere. I'm not sure how to go about investigating this further, but I'm happy to help if you can point me in the right direction.
from controller.
Yeah, kll.py and kll_lib/containers.py are responsible for the kll file parsing and correlation.
backends/kiibohd.py is responsible for generating the .h file output. I'd probably start here to see if the correct data is available in the data structures.
Unforunately, these data structures are multi-dimensional lists so it gets a bit confusing to think about (I'm going to have to add more dimensions for the next draft of kll too...).
The easiest way to think about it though: Sequence of combinations. The inner most list deals with key combinations, where level up you are looking at sequences. It starts to get tricky when you get into dealing with the range definitions of kll (so hopefully you don't have to dig that deep).
from controller.
So this works:
S0x1D + S0x00 : '1';
Which in my case is Control + Escape. If I use S0x2A instead of S0x1D (LShift), then I get an "!" and an escape character (that is, if I open vim, go into insert mode and press shift + esc, I get a "!" and it exits insert mode, as if I had typed "!" and then pressed escape.
Hopefully I'm getting closer?
from controller.
So, that sorta makes sense with the current implementation.
First, it sounds like scan codes are definitely working and the issues has to do with the USB -> Scan translation (the firmware uses Scan codes internally as that's the most efficient lookup).
Second, ! is expected, because the keyboard is also sending the shift key at the same time. Right now there isn't a way to block shift key from sending shift. Is this a feature you want?
It would involve changes to the KLL and compiler so it would a bit lower on my priority list right now (bug fixing first :P).
from controller.
I think it would be neat but since my end goal is shift + esc = ~, which itself requires shift, I don't think this is in particular a problem. I can get by with using Scan codes for now.
I'll keep poking at the KLL compiler because I'm having fun and see if I can make the USB -> Scan translation work for combinations and sequences (I tested U"Shift" , U"Esc" as well, also doesn't work).
from controller.
It's a fun little compiler.
But it was a bit of a rush job so it doesn't have the error and debug reporting that I'd like it to have.
I'm also working on a kll -> json backend (as well as a json -> kll option) to better support web configurators. The massdrop configurator was only intended as a temporary thing until we could find someone to write us a full featured one (and support future features as well). All of it will be opensource.
from controller.
I submitted a PR to the KLL compiler that seems to fix the issue with not supporting combinations/sequences with USB codes as triggers. Works in my testing.
I will keep this issue around in case you decide to add support for blocking the Shift key in combinations.
from controller.
Thanks a lot! The patch looks good, but I want to run it through a couple of tests first. I should be able to properly review it this weekend.
Shift key blocking will take changes in a bunch of places as the state of the shift key must be tracked by the macro using the shift key.
from controller.
Understood. Not really a high priority feature for me at this point, just figured in case you get bored down the road I'll leave the issue laying around.
from controller.
While not the full feature, I did implement an example of how to achieve this using capabiltiies.
It's somewhat hack'ish but seems to work ok (at least until I can get KLL straightened out for doing it properly).
from controller.
I'm having a similar problem. I would like to map Space+Q = 1.
Infinity keyboard using infinity.bash with my custommap
DefaultMap="md1Overlay mycustommap stdFuncMap"
that contains:
U["Space"] : blockHold( 0x10 );
U"Q" : blockKey( 0x10 );
U["Space"] + U"Q" : '1';
Space+Q does work, but Q by itself now emits 'm' and space does not work.
Thoughts on what I could try?
from controller.
hi,
edit the "scancode_map.kll" is the best way to make dvorak programmer layout(on infinity keyboard)?
S0x01 : U"7"+U"LShift";
S0x01 + S0x2A : U"5"+U"LShift";
S0x01 + S0x35 : U"5"+U"LShift";
work!
i try same thing in base layer
S0x01 : '&';
S0x2A + S0x01 : '%';
S0x35 + S0x01 : '%';
if I press the S0x01 the keyboard print '&'
if I press S0x01 and (S0x2A or S0x35) the keyboard print "%&"
http://www.kaufmann.no/roland/dvorak/images/dvp1.png
thanks
from controller.
The easiest way is to use a kll "overlay".
I have a Colemak example here -> https://github.com/kiibohd/kll/blob/master/layouts/colemak.kll
from controller.
I put this :
'1':'&'
'!':'%'
In infinity60%.bash as default map...
If I press 1+Lshift to print '%' the keyboard print "%&"
If I press 1+Rshift to print '%' the keyboard print "&"
from controller.
Ah, yes. So, you have two options for that.
- Wait till KLL 0.5 (still rewriting the compiler for support of this)
- Write a custom capability in C, that handles key blocking
from controller.
Thanks for the reply!
I'll wait the .5 ;)
from controller.
Related Issues (20)
- Method for toggling a set of LEDs off/on?
- Colours differ between sections of the underlighting on Gemini HOT 1
- Stretch Rainbow Animations
- K-Type enters flashing mode when using Ultimaker Cura HOT 5
- Mouse Key Control - Ergodox Infinity
- Creating custom KLL files
- Errors running ergodox.bash HOT 2
- GEMINI RGUI (possibly MENU as well) remap issue due to layout mismatch HOT 2
- Support for Aurora RGB sync HOT 3
- Macro "CapsLock" + "I" produces extra letters HOT 1
- Support for fwupd - Linux Vendor Firmware Service HOT 12
- Hexgears Gemini white backlighting not white HOT 2
- Kira LEDS go into a continous blinking loop (red, blue, green on different parts of the keyboard) HOT 5
- K-Type not detected in flash mode
- Kira - Multiple issues flashing the firmware HOT 2
- HID-IO as a replacement for CDC Virtual Serial Port? HOT 1
- Docker Missing CMakeLists.txt HOT 1
- Slow initialization and /dev/ttyACM0 no longer available after flashing with updated controller
- How do I map right alt to emit Fn? HOT 1
- Cannot install libusbK driver
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from controller.