Michael Richters
778cb705bc
Correct for timer overflow
...
When the value returned by `millis()` overflows (after ~two months of runtime), a straight
comparison to the end time would fail. This wasn't a really big deal, but it is possible
to do it correctly, and in the process, reduce the size of the time values stored from 32
bits to 16 bits (~one minute), since the largest conceivable useful timeout is measured in
seconds (at most).
7 years ago
Michael Richters
71d2be1264
Define flushing_queue_ & fix logic error
7 years ago
Michael Richters
94db15ad08
Use a static variable instead of INJECTED keyswitch state
...
We need to prevent infinite loops, and also stop handling keyswitch events when flushing
the queue, but if we do this by setting the `INJECTED` bit in `keyswitch_state` when
calling `handleKeyswitchEvent()`, then other plugins will ignore those events, which is
not what we want; we need them to process those events as if they were real
keypresses. The solution is to use a static boolean to let us know if the queue is being
flushed.
7 years ago
Michael Richters
86c2f44dff
Merge pull request #17 from gedankenlab/code-cleanup
...
Correct array initialization
7 years ago
Michael Richters
421556f7cc
Correct array initialization
7 years ago
Michael Richters
40d2e5bc35
Re-wrote README
7 years ago
Michael Richters
9205c67da3
Merge pull request #16 from gedankenlab/code-cleanup
...
Code cleanup
7 years ago
Michael Richters
cd0073f0ae
Prettier formatting of keymap; astyle off for that section
7 years ago
Michael Richters
41437c789a
Spurious comments removed
7 years ago
Michael Richters
e842a7cef5
Removed trailing underscore from public member variable names
7 years ago
Michael Richters
50a074bafc
Make internal functions private
7 years ago
Michael Richters
e5813aba55
Removed unnecessary comments
7 years ago
Michael Richters
f2894fa455
Removed unused & commented init() function
7 years ago
Michael Richters
d33deda114
astyle
7 years ago
Michael Richters
c112cc615d
Flush non-qukeys from the head of the queue
7 years ago
Michael Richters
abea4c281c
Simplify if(keyToggledOn)
7 years ago
Michael Richters
65163be9c7
Store qukey state as a bitfield instead of a struct member ( #15 )
...
* Defined bitfield structure for storing qukey state
* Implement storage of qukey states in bitfield
7 years ago
Michael Richters
632e876084
Mask keys when they're in the queue; unmask when flushed
7 years ago
Michael Richters
ba67fe2ee6
Fixed addr::unmask()
...
It was calling `maskKey()` instead of `unMaskKey()`
7 years ago
Michael Richters
0e951d8b46
Changed parameter name
...
In `flushKey()`, I changed the ambiguous parameter name `state` to the more descriptive `qukey_state`.
7 years ago
Michael Richters
f2dc52ba0b
Added mask() & unmask() functions
7 years ago
Michael Richters
2db772aeca
Better pos-scan flushing of the key queue
7 years ago
Michael Richters
6102388813
Call handleKeyswitchEvent() again after restoring the current report
...
After restoring the current report, if we don't add the keycode for the current key back
in (by calling `handleKeyswitchEvent()` with the "held" state flags if the flushed key is
still held), we'll accidentally leave that keycode out of the next report.
fixes #13
7 years ago
Michael Richters
99988e4c76
Call toggle() only when the macro key toggles on ( fixes #11 )
7 years ago
Michael Richters
17d61518c2
Fix example toggle-qukeys macro
7 years ago
Michael Richters
8fcff0109f
Small improvement to QUKEYS() macro
...
Using braces really makes it much clearer. I stole the idea from @algernon.
7 years ago
Michael Richters
6e57b9868f
Added a macro to toggle Qukeys in the example
...
- also updated the keymaps definition
7 years ago
Michael Richters
6ca34d7f99
Added a function to toggle Qukeys on/off
7 years ago
Michael Richters
f603e6d8d3
astyle
7 years ago
Michael Richters
d12a4870fe
Added `setTimeout()` function to set the time limit in sketch
7 years ago
Michael Richters
cb16b32215
Fixed `QUKEYS()` macro for defining qukeys in sketch
7 years ago
Michael Richters
b51d679939
Ignore output/ directory
7 years ago
Michael Richters
87c98b15af
Direct manipulation of `Keyboard.keyReport` & `.lastKeyReport`
...
KeyboardioHID isn't going to get a function to copy the previous
report to the current one, but it is now making the current and
previous HID reports public. This is a much better solution all
around, as it allows us to save and restore the current report in the
midst of a scan, while still sending a modified version of the old
report.
7 years ago
Michael Richters
7fb0c96931
Why was .gitignore in a .gitignore/ directory?
...
GitHub screwed that up, I think.
7 years ago
Michael Richters
2fba5c4541
First working version
...
Too many bug fixes to list them all. Luckily, at this early stage,
that doesn't matter.
7 years ago
Michael Richters
eff16ded81
Not functional yet, but doesn't seem to break anything else
7 years ago
Michael Richters
721baeca78
Fixed lots of compilation errors
7 years ago
Michael Richters
5bfe5c07eb
Version 1 of the Qukeys implementation
...
I think everything is there. This probably doesn't even compile yet,
and it certainly hasn't been debugged.
7 years ago
Michael Richters
29c243eda5
Added addr.h with helper functions
...
This contains helper functions for converting (row,col) coordinates to
single-byte addresses, assuming the keyboard has fewer than 256 keys.
7 years ago
Michael Richters
bba6cf878f
Empty example sketch
7 years ago
Michael Richters
ac354318d3
Basic skeleton code
7 years ago
Michael Richters
ecc52c86de
Pluralized library name
7 years ago
Michael Richters
d6d56cbd81
Basic design overview
7 years ago
Michael Richters
cf48742d7c
Create README.md
7 years ago
Michael Richters
ff89e4ec87
Create LICENSE
7 years ago
Michael Richters
5f0619caa5
Update .gitignore
7 years ago