Moves the LED control code, along with the built-in effects into the
Keyboardio-LEDControl plugin.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
This is a slightly tweaked version of LEDControl from core
KeyboardioFirmware, along with the built-in LED effects.
The one major change is that LED sync is now called just before the update,
instead of at the end of the main loop. This, however, should not be a
noticeable change.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
I forgot to update the `LCTRL`, `LALT`, etc macros, and they still assumed the
previous order. This little patch fixes that.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
With the swap, using `raw` becomes more straightforward, because the flags will
occupy the higher bits, and the keyCode the lower ones. This makes range checks
much more intuitive.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
The text of the GPL-2 in LICENSE was old, had the old FSF address, and referred
to the LGPL as the "Library GPL" (it's been "Lesser GPL" for a while now). This
simply updates the text with the latest text of the GPL-2. Apart from
formatting, the FSF address change, and the Library->Lesser GPL, there are no
other changes.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
There is no `libraries/` in the core firmware anymore, do not add that to the
library search path.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Apart from marking the `build` target as the default, and a custom
`astyle` target, everything else will just be dispatched further to
tools/keyboardio-builder.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
If there exists a configuration in the user's home directory, source it
too. Allows setting up some host-wide defaults.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
If there are no local libraries installed, do not add the directory to
the arduino-builder commandline.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Instead of cding all the time to the Sketch directory, remain where it
was, and work from there. This makes it possible to use relative paths
for the various tool paths.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Now supports everything that the old Makefile did, and a bit more. Some
cases still need to be handled, and documentation needs to be written,
but it is in a much better shape now.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
The tool - a work in progress - is meant to eventually replace the Makefile. It
is set up so that it can easily be reused by third-party libraries to build
their own examples, with minimal amount of configuration.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
These were moved to their own repos, and are now included in
keyboardio-libraries, which in turn is included in Arduino-Boards. As such,
remove the libraries from the core firmware.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Only turn the LED off if it was on before. Otherwise we will turn off those too
that were not in the map yet.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Instead of relying on the active effect to turn the LED off, do so
ourselves at the end.
Fixes#1.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Arch puts the Arduino tools into /usr/bin, hardware bits under
/usr/share/arduino, and so on. To make ends meet, and support both the
traditional install, and Arch, introduce a bit of magic:
- If `ARDUINO_TOOLS_PATH` is empty, then we should not add the `-tools`
param that refers to it. On arch, this is not needed, and there is no
reasonable alternative, that would also make sense. So in this case,
it should not be added at all. Setting the variable to an empty string
accomplishes that goal nicely.
- If an `AVR_GCC_PREFIX` variable is set, use that as the value for
`runtime.tools.avr-gcc.path`, otherwise `arduino-builder` will try to
find the avr-* tools somewhere under the Arduino prefix, which on
Arch, is not the case.
With this change, along with keyboardio/KeyboardioHID#3, and adding an
`archlinux-arduino`=>`arduino` symlink somewhere, it becomes possible to
complie KeyboardioFirmware on Arch, using the packaged Arduino, with the
following commandline:
> make ARDUINO_BUILDER_PATH=/usr/bin/arduino-builder \
> ARDUINO_PATH=/usr/share/arduino \
> ARDUINO_LOCAL_LIB_PATH=../arduino-local \
> AVR_GCC_PREFIX=/usr \
> ARDUINO_TOOLS_PATH= \
> AVR_SIZE_PATH=avr-size
Not the nicest, by far, but possible.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Instead of syncing right after updating, sync at the end of the loop. This
allows hooks (both loop and event handler hooks) to override LED colors, without
cooperation from the active LED effect, and without flickering.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Because we have `raw`, `rawKey` was confusing. Rename it to `keyCode` instead,
which better conveys what the byte is for.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Makes some code not only easier to follow (by not having to use `.raw`
all the time), but for some odd reason, smaller too, in many cases.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
We want the `Keyboardio` object to be a singleton. If it is static, then
each library that gets compiled separately, and uses it in one way or
the other, will have a copy of it.
Making it extern, we'll only have one copy, as it should be.
I don't think there were any bugs caused by it being static, but it was
certainly a tiny bit of wasted code and memory.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
With the Layer code not using the hooks anymore, the Arduino builder will tell
the linker to remove any unreferenced code. As we are using dot_a_linkage, that
means that the hook functions will be removed due to being unreferenced before
plugins had a chance to reference them.
Add a dummy call in Keyboardio_::setup() to prevent this case.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>