Mercurial > louis > kiibohd-controller
changeset 197:1ebb6fb5f74f
All basic macros tested and working!
Tested
------
Single : Single
Single : Combo
Single : Sequence
Combo : Single
Combo : Combo
Combo : Sequence
Sequence : Single
Sequence : Combo
Sequence : Sequence
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sat, 23 Aug 2014 10:49:13 -0700 |
parents | 8ecfdaa27234 |
children | c011d5a6c26c |
files | Macro/PartialMap/generatedKeymap.h Macro/PartialMap/macro.c |
diffstat | 2 files changed, 20 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/Macro/PartialMap/generatedKeymap.h Wed Aug 20 10:53:22 2014 -0700 +++ b/Macro/PartialMap/generatedKeymap.h Sat Aug 23 10:49:13 2014 -0700 @@ -249,7 +249,7 @@ Define_TM( 6, 1 ), Define_TM( 7, 2 ), Define_TM( 8, 0 ), - Define_TM( 9, 0 ), // TODO + Define_TM( 9, 0 ), Define_TM( 10, 4 ), }; @@ -308,9 +308,9 @@ Define_TL( default, 0x1D ) = { 0 }; Define_TL( default, 0x1E ) = { 0 }; Define_TL( default, 0x1F ) = { 0 }; -Define_TL( default, 0x20 ) = { 1, 8 }; +Define_TL( default, 0x20 ) = { 2, 8, 9 }; Define_TL( default, 0x21 ) = { 1, 8 }; -Define_TL( default, 0x22 ) = { 0 }; +Define_TL( default, 0x22 ) = { 1, 9 }; Define_TL( default, 0x23 ) = { 0 }; Define_TL( default, 0x24 ) = { 0 }; Define_TL( default, 0x25 ) = { 0 };
--- a/Macro/PartialMap/macro.c Wed Aug 20 10:53:22 2014 -0700 +++ b/Macro/PartialMap/macro.c Sat Aug 23 10:49:13 2014 -0700 @@ -56,12 +56,13 @@ // Bit positions are important, passes (correct key) always trump incorrect key votes typedef enum TriggerMacroVote { - TriggerMacroVote_Release = 0x8, // Correct key - TriggerMacroVote_PassRelease = 0xC, // Correct key (both pass and release) - TriggerMacroVote_Pass = 0x4, // Correct key - TriggerMacroVote_DoNothing = 0x2, // Incorrect key - TriggerMacroVote_Fail = 0x1, // Incorrect key - TriggerMacroVote_Invalid = 0x0, // Invalid state + TriggerMacroVote_Release = 0x10, // Correct key + TriggerMacroVote_PassRelease = 0x18, // Correct key (both pass and release) + TriggerMacroVote_Pass = 0x8, // Correct key + TriggerMacroVote_DoNothingRelease = 0x4, // Incorrect key + TriggerMacroVote_DoNothing = 0x2, // Incorrect key + TriggerMacroVote_Fail = 0x1, // Incorrect key + TriggerMacroVote_Invalid = 0x0, // Invalid state } TriggerMacroVote; typedef enum TriggerMacroEval { @@ -450,10 +451,13 @@ case 0x01: return TriggerMacroVote_Fail; - // Wrong key, held or released, do not pass (no effect) + // Wrong key, held, do not pass (no effect) case 0x02: + return TriggerMacroVote_DoNothing; + + // Wrong key released, fail out if pos == 0 case 0x03: - return TriggerMacroVote_DoNothing; + return TriggerMacroVote_DoNothing | TriggerMacroVote_DoNothingRelease; } } @@ -572,6 +576,11 @@ overallVote |= vote; } + // If no pass vote was found after scanning the entire combo + // And this is the first position in the combo, just remove it (nothing important happened) + if ( longMacro && overallVote & TriggerMacroVote_DoNothingRelease && pos == 0 ) + overallVote |= TriggerMacroVote_Fail; + // Decide new state of macro after voting // Fail macro, remove from pending list if ( overallVote & TriggerMacroVote_Fail ) @@ -780,22 +789,18 @@ case TriggerMacroEval_DoResult: // Append ResultMacro to PendingList Macro_appendResultMacroToPendingList( &TriggerMacroList[ macroTriggerMacroPendingList[ macro ] ] ); - print("D"); default: macroTriggerMacroPendingList[ macroTriggerMacroPendingListTail++ ] = macroTriggerMacroPendingList[ macro ]; - print("A"); break; // Trigger Result Macro and Remove (purposely falling through) case TriggerMacroEval_DoResultAndRemove: // Append ResultMacro to PendingList Macro_appendResultMacroToPendingList( &TriggerMacroList[ macroTriggerMacroPendingList[ macro ] ] ); - print("&"); // Remove Macro from Pending List, nothing to do, removing by default case TriggerMacroEval_Remove: - print("R"); break; } }