commit
f8a35175d9
@ -0,0 +1,109 @@
|
||||
# Kaleidoscope-LED-AlphaSquare
|
||||
|
||||
An alphabet for your per-key LEDs, `AlphaSquare` provides a way to display 4x4
|
||||
"pixel" symbols on your keyboard. With this building block, one can build some
|
||||
sweet animations, or just show off - the possibilities are almost endless!
|
||||
|
||||
## Using the plugin
|
||||
|
||||
To use the plugin, one needs to include the header in their Sketch, tell the
|
||||
firmware to `use` the plugin, and one way or another, call the `display` method.
|
||||
This can be done from a macro, or via the `AlphaSquareEffect` LED mode.
|
||||
|
||||
```c++
|
||||
#include <Kaleidoscope.h>
|
||||
#include <Kaleidoscope-LEDControl.h>
|
||||
#include <Kaleidoscope-LED-AlphaSquare.h>
|
||||
|
||||
KALEIDOSCOPE_INIT_PLUGINS(LEDControl,
|
||||
AlphaSquare,
|
||||
AlphaSquareEffect);
|
||||
|
||||
void setup() {
|
||||
Kaleidoscope.setup();
|
||||
|
||||
AlphaSquare.display (Key_A);
|
||||
}
|
||||
```
|
||||
|
||||
## Plugin methods
|
||||
|
||||
The plugin provides the `AlphaSquare` object, which has its methods and
|
||||
properties listed below, and an `AlphaSquareEffect` LED mode, which has no
|
||||
methods or properties other than those provided by all LED modes.
|
||||
|
||||
### `.display(key)`
|
||||
### `.display(key, col)`
|
||||
### `.display(key, row, col)`
|
||||
### `.display(key, row, col, color)`
|
||||
|
||||
> Display the symbol for `key` at the given row or column, with pixels set to
|
||||
> the specified `color`. If `row` is omitted, the first row - `0` is assumed. If
|
||||
> the column is omitted, then the third column - `2` - is used.
|
||||
> If the `color` is omitted, the plugin will use the global `.color` property.
|
||||
>
|
||||
> The plugin can display the English alphabet, and the numbers from 0 to 9. The
|
||||
> symbol will be drawn with the top-left corner at the given position.
|
||||
>
|
||||
> Please consult the appropriate hardware library of your keyboard to see how
|
||||
> keys are laid out in rows and columns.
|
||||
|
||||
### `.display(symbol)`
|
||||
### `.display(symbol, col)`
|
||||
### `.display(symbol, row, col)`
|
||||
### `.display(symbol, row, col, color)`
|
||||
|
||||
> As the previous function, but instead of a key, it expects a 4x4 bitmap in
|
||||
> the form of a 16-bit unsigned integer, where the low bit is the top-right
|
||||
> corner, the second-lowest bit is to the right of that, and so on.
|
||||
>
|
||||
> The `SYM4x4` macro can be used to simplify creating these bitmaps.
|
||||
|
||||
### `.clear(key)`, `.clear(symbol)`
|
||||
### `.clear(key, col)`, `.clear(symbol, col)`
|
||||
### `.clear(key, col, row)`, `.clear(symbol, col, row)`
|
||||
|
||||
> Just like the `.display()` counterparts, except these clear the symbol, by
|
||||
> turning the LED pixels it is made up from off.
|
||||
|
||||
### `.color`
|
||||
|
||||
> The color to use to draw the pixels.
|
||||
>
|
||||
> Defaults to `{ 0x80, 0x80, 0x80 }` (light gray).
|
||||
|
||||
## Plugin helpers
|
||||
|
||||
### `SYM4x4(...)`
|
||||
|
||||
> A helper macro, which can be used to set up custom bitmaps. It expects 16
|
||||
> values, a 4x4 square of zeroes and ones. Zeroes are transparent pixels, ones
|
||||
> will be colored.
|
||||
|
||||
## Extra symbols
|
||||
|
||||
There is a growing number of pre-defined symbols available in the
|
||||
`kaleidoscope::plugin::alpha_square::symbols` namespace. Ok, growing may have
|
||||
been an exaggeration, there is only one as of this writing:
|
||||
|
||||
### `Lambda`
|
||||
|
||||
> A lambda (`λ`) symbol.
|
||||
|
||||
## Dependencies
|
||||
|
||||
* [Kaleidoscope-LEDControl](LEDControl.md)
|
||||
|
||||
## Further reading
|
||||
|
||||
Starting from the [example][plugin:example] is the recommended way of getting
|
||||
started with the plugin.
|
||||
|
||||
[plugin:example]: ../../examples/LED-AlphaSquare/LED-AlphaSquare.ino
|
||||
|
||||
## Upgrading
|
||||
|
||||
Former versions of the plugin used to have extra symbols in the
|
||||
`kaleidoscope::alpha_square::symbols` namespace, while current versions have
|
||||
them under `kaleidoscope::plugin::alpha_square::symbols`. The old name is
|
||||
deprecated, and will be removed by 2019-01-14.
|
@ -0,0 +1,110 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017, 2018 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include <Kaleidoscope.h>
|
||||
#include <Kaleidoscope-LEDControl.h>
|
||||
#include <Kaleidoscope-LED-AlphaSquare.h>
|
||||
#include <Kaleidoscope-Macros.h>
|
||||
|
||||
// *INDENT-OFF*
|
||||
const Key keymaps[][ROWS][COLS] PROGMEM = {
|
||||
[0] = KEYMAP_STACKED
|
||||
(
|
||||
Key_LEDEffectNext, Key_1, Key_2, Key_3, Key_4, Key_5, M(0),
|
||||
Key_Backtick, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab,
|
||||
Key_PageUp, Key_A, Key_S, Key_D, Key_F, Key_G,
|
||||
Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape,
|
||||
|
||||
Key_LeftControl, Key_Backspace, Key_LeftGui, Key_LeftShift,
|
||||
Key_skip,
|
||||
|
||||
Key_skip, Key_6, Key_7, Key_8, Key_9, Key_0, Key_skip,
|
||||
Key_Enter, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_Equals,
|
||||
Key_H, Key_J, Key_K, Key_L, Key_Semicolon, Key_Quote,
|
||||
Key_skip, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus,
|
||||
|
||||
Key_RightShift, Key_RightAlt, Key_Spacebar, Key_RightControl,
|
||||
Key_skip),
|
||||
};
|
||||
// *INDENT-ON*
|
||||
|
||||
const macro_t *macroAction(uint8_t macro_index, uint8_t key_state) {
|
||||
if (!keyToggledOn(key_state))
|
||||
return MACRO_NONE;
|
||||
|
||||
if (macro_index == 0) {
|
||||
for (uint8_t i = Key_A.keyCode; i <= Key_0.keyCode; i++) {
|
||||
LEDControl.set_all_leds_to(0, 0, 0);
|
||||
LEDControl.syncLeds();
|
||||
delay(100);
|
||||
|
||||
uint8_t col = 2;
|
||||
if (i % 2)
|
||||
col = 10;
|
||||
|
||||
for (uint8_t step = 0; step <= 0xf0; step += 8) {
|
||||
AlphaSquare.color = { step, step, step };
|
||||
AlphaSquare.display({i, 0}, col);
|
||||
delay(10);
|
||||
}
|
||||
for (uint8_t step = 0xff; step >= 8; step -= 8) {
|
||||
AlphaSquare.color = { step, step, step };
|
||||
AlphaSquare.display({i, 0}, col);
|
||||
delay(10);
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
|
||||
LEDControl.set_all_leds_to(0, 0, 0);
|
||||
LEDControl.syncLeds();
|
||||
delay(100);
|
||||
|
||||
for (uint8_t step = 0; step <= 0xf0; step += 8) {
|
||||
AlphaSquare.color = { step, step, step };
|
||||
AlphaSquare.display(kaleidoscope::plugin::alpha_square::symbols::Lambda, 2);
|
||||
AlphaSquare.display(kaleidoscope::plugin::alpha_square::symbols::Lambda, 10);
|
||||
delay(10);
|
||||
}
|
||||
|
||||
for (uint8_t step = 0xff; step >= 8; step -= 8) {
|
||||
AlphaSquare.color = { step, step, step };
|
||||
AlphaSquare.display(kaleidoscope::plugin::alpha_square::symbols::Lambda, 2);
|
||||
AlphaSquare.display(kaleidoscope::plugin::alpha_square::symbols::Lambda, 10);
|
||||
delay(10);
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
|
||||
LEDControl.set_all_leds_to(0, 0, 0);
|
||||
|
||||
return MACRO_NONE;
|
||||
}
|
||||
|
||||
KALEIDOSCOPE_INIT_PLUGINS(LEDControl,
|
||||
AlphaSquare,
|
||||
AlphaSquareEffect,
|
||||
Macros);
|
||||
|
||||
void setup() {
|
||||
Kaleidoscope.setup();
|
||||
|
||||
AlphaSquare.color = { 0xcb, 0xc0, 0xff };
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Kaleidoscope.loop();
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <kaleidoscope/plugin/LED-AlphaSquare.h>
|
||||
#include <kaleidoscope/plugin/LED-AlphaSquare/Effect.h>
|
||||
#include <kaleidoscope/plugin/LED-AlphaSquare/Symbols.h>
|
@ -0,0 +1,101 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include <Kaleidoscope-LED-AlphaSquare.h>
|
||||
#include <kaleidoscope/plugin/LED-AlphaSquare/Font-4x4.h>
|
||||
|
||||
namespace kaleidoscope {
|
||||
namespace plugin {
|
||||
|
||||
static const uint16_t alphabet[] PROGMEM = {
|
||||
ALPHASQUARE_SYMBOL_A,
|
||||
ALPHASQUARE_SYMBOL_B,
|
||||
ALPHASQUARE_SYMBOL_C,
|
||||
ALPHASQUARE_SYMBOL_D,
|
||||
ALPHASQUARE_SYMBOL_E,
|
||||
ALPHASQUARE_SYMBOL_F,
|
||||
ALPHASQUARE_SYMBOL_G,
|
||||
ALPHASQUARE_SYMBOL_H,
|
||||
ALPHASQUARE_SYMBOL_I,
|
||||
ALPHASQUARE_SYMBOL_J,
|
||||
ALPHASQUARE_SYMBOL_K,
|
||||
ALPHASQUARE_SYMBOL_L,
|
||||
ALPHASQUARE_SYMBOL_M,
|
||||
ALPHASQUARE_SYMBOL_N,
|
||||
ALPHASQUARE_SYMBOL_O,
|
||||
ALPHASQUARE_SYMBOL_P,
|
||||
ALPHASQUARE_SYMBOL_Q,
|
||||
ALPHASQUARE_SYMBOL_R,
|
||||
ALPHASQUARE_SYMBOL_S,
|
||||
ALPHASQUARE_SYMBOL_T,
|
||||
ALPHASQUARE_SYMBOL_U,
|
||||
ALPHASQUARE_SYMBOL_V,
|
||||
ALPHASQUARE_SYMBOL_W,
|
||||
ALPHASQUARE_SYMBOL_X,
|
||||
ALPHASQUARE_SYMBOL_Y,
|
||||
ALPHASQUARE_SYMBOL_Z,
|
||||
ALPHASQUARE_SYMBOL_1,
|
||||
ALPHASQUARE_SYMBOL_2,
|
||||
ALPHASQUARE_SYMBOL_3,
|
||||
ALPHASQUARE_SYMBOL_4,
|
||||
ALPHASQUARE_SYMBOL_5,
|
||||
ALPHASQUARE_SYMBOL_6,
|
||||
ALPHASQUARE_SYMBOL_7,
|
||||
ALPHASQUARE_SYMBOL_8,
|
||||
ALPHASQUARE_SYMBOL_9,
|
||||
ALPHASQUARE_SYMBOL_0
|
||||
};
|
||||
|
||||
|
||||
cRGB AlphaSquare::color = {0x80, 0x80, 0x80};
|
||||
|
||||
void AlphaSquare::display(Key key, uint8_t row, uint8_t col, cRGB key_color) {
|
||||
if (key < Key_A || key > Key_0)
|
||||
return;
|
||||
|
||||
uint8_t index = key.keyCode - Key_A.keyCode;
|
||||
uint16_t symbol = pgm_read_word(&alphabet[index]);
|
||||
|
||||
display(symbol, row, col, key_color);
|
||||
}
|
||||
|
||||
void AlphaSquare::display(Key key, uint8_t row, uint8_t col) {
|
||||
display(key, row, col, color);
|
||||
}
|
||||
|
||||
void AlphaSquare::display(uint16_t symbol, uint8_t row, uint8_t col, cRGB key_color) {
|
||||
for (uint8_t r = 0; r < 4; r++) {
|
||||
for (uint8_t c = 0; c < 4; c++) {
|
||||
uint8_t pixel = bitRead(symbol, r * 4 + c);
|
||||
if (!pixel)
|
||||
continue;
|
||||
|
||||
::LEDControl.setCrgbAt(row + r, col + c, key_color);
|
||||
}
|
||||
}
|
||||
|
||||
::LEDControl.syncLeds();
|
||||
}
|
||||
|
||||
void AlphaSquare::display(uint16_t symbol, uint8_t row, uint8_t col) {
|
||||
display(symbol, row, col, color);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
kaleidoscope::plugin::AlphaSquare AlphaSquare;
|
@ -0,0 +1,84 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Kaleidoscope.h>
|
||||
#include <Kaleidoscope-LEDControl.h>
|
||||
|
||||
#define SYM4x4( \
|
||||
p00, p01, p02, p03, \
|
||||
p10, p11, p12, p13, \
|
||||
p20, p21, p22, p23, \
|
||||
p30, p31, p32, p33) \
|
||||
(uint16_t) ( \
|
||||
p00 << 0 | p01 << 1 | p02 << 2 | p03 << 3 | \
|
||||
p10 << 4 | p11 << 5 | p12 << 6 | p13 << 7 | \
|
||||
p20 << 8 | p21 << 9 | p22 << 10 | p23 << 11 | \
|
||||
p30 << 12 | p31 << 13 | p32 << 14 | p33 << 15 )
|
||||
|
||||
namespace kaleidoscope {
|
||||
namespace plugin {
|
||||
class AlphaSquare : public kaleidoscope::Plugin {
|
||||
public:
|
||||
AlphaSquare(void) {}
|
||||
|
||||
static void display(Key key, uint8_t row, uint8_t col, cRGB key_color);
|
||||
static void display(Key key, uint8_t row, uint8_t col);
|
||||
static void display(Key key) {
|
||||
display(key, 0, 2);
|
||||
}
|
||||
static void display(Key key, uint8_t col) {
|
||||
display(key, 0, col);
|
||||
}
|
||||
|
||||
static void display(uint16_t symbol, uint8_t row, uint8_t col, cRGB key_color);
|
||||
static void display(uint16_t symbol, uint8_t row, uint8_t col);
|
||||
static void display(uint16_t symbol) {
|
||||
display(symbol, 0, 2);
|
||||
}
|
||||
static void display(uint16_t symbol, uint8_t col) {
|
||||
display(symbol, 0, col);
|
||||
}
|
||||
|
||||
static void clear(Key key, uint8_t row, uint8_t col) {
|
||||
display(key, row, col, {0, 0, 0});
|
||||
}
|
||||
static void clear(Key key, uint8_t col) {
|
||||
clear(key, 0, col);
|
||||
}
|
||||
static void clear(Key key) {
|
||||
clear(key, 0, 2);
|
||||
}
|
||||
|
||||
static void clear(uint16_t symbol, uint8_t row, uint8_t col) {
|
||||
display(symbol, row, col, {0, 0, 0});
|
||||
}
|
||||
static void clear(uint16_t symbol, uint8_t col) {
|
||||
clear(symbol, 0, col);
|
||||
}
|
||||
static void clear(uint16_t symbol) {
|
||||
clear(symbol, 0, 2);
|
||||
}
|
||||
|
||||
static cRGB color;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
extern kaleidoscope::plugin::AlphaSquare AlphaSquare;
|
@ -0,0 +1,74 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017, 2018 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include <Kaleidoscope-LED-AlphaSquare.h>
|
||||
|
||||
namespace kaleidoscope {
|
||||
namespace plugin {
|
||||
|
||||
uint16_t AlphaSquareEffect::length = 1000;
|
||||
uint32_t AlphaSquareEffect::end_time_left_, AlphaSquareEffect::end_time_right_;
|
||||
Key AlphaSquareEffect::last_key_left_, AlphaSquareEffect::last_key_right_;
|
||||
|
||||
void AlphaSquareEffect::update(void) {
|
||||
if (end_time_left_ && millis() > end_time_left_) {
|
||||
::AlphaSquare.clear(last_key_left_);
|
||||
end_time_left_ = 0;
|
||||
}
|
||||
if (end_time_right_ && millis() > end_time_right_) {
|
||||
::AlphaSquare.clear(last_key_right_, 10);
|
||||
end_time_right_ = 0;
|
||||
}
|
||||
}
|
||||
|
||||
EventHandlerResult AlphaSquareEffect::onKeyswitchEvent(Key &mappedKey, byte row, byte col, uint8_t keyState) {
|
||||
if (::LEDControl.get_mode() != &::AlphaSquareEffect)
|
||||
return EventHandlerResult::OK;
|
||||
|
||||
if (keyState & INJECTED)
|
||||
return EventHandlerResult::OK;
|
||||
|
||||
if (mappedKey < Key_A || mappedKey > Key_0)
|
||||
return EventHandlerResult::OK;
|
||||
|
||||
if (!keyIsPressed(keyState))
|
||||
return EventHandlerResult::OK;
|
||||
|
||||
uint8_t display_col = 2;
|
||||
Key prev_key = last_key_left_;
|
||||
|
||||
if (col < COLS / 2) {
|
||||
last_key_left_ = mappedKey;
|
||||
end_time_left_ = millis() + length;
|
||||
} else {
|
||||
prev_key = last_key_right_;
|
||||
last_key_right_ = mappedKey;
|
||||
end_time_right_ = millis() + length;
|
||||
display_col = 10;
|
||||
}
|
||||
|
||||
if (prev_key != mappedKey)
|
||||
::AlphaSquare.clear(prev_key, display_col);
|
||||
::AlphaSquare.display(mappedKey, display_col);
|
||||
|
||||
return EventHandlerResult::OK;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
kaleidoscope::plugin::AlphaSquareEffect AlphaSquareEffect;
|
@ -0,0 +1,43 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017, 2018 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Kaleidoscope.h>
|
||||
#include <Kaleidoscope-LEDControl.h>
|
||||
|
||||
namespace kaleidoscope {
|
||||
namespace plugin {
|
||||
class AlphaSquareEffect : public LEDMode {
|
||||
public:
|
||||
AlphaSquareEffect(void) {}
|
||||
|
||||
static uint16_t length;
|
||||
|
||||
EventHandlerResult onKeyswitchEvent(Key &mappedKey, byte row, byte col, uint8_t keyState);
|
||||
|
||||
protected:
|
||||
void update(void) final;
|
||||
|
||||
private:
|
||||
static uint32_t end_time_left_, end_time_right_;
|
||||
static Key last_key_left_, last_key_right_;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
extern kaleidoscope::plugin::AlphaSquareEffect AlphaSquareEffect;
|
@ -0,0 +1,169 @@
|
||||
/* Kaleidoscope-LED-AlphaSquare -- 3x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef KALEIDOSCOPE_LED_FONT
|
||||
#define KALEIDOSCOPE_LED_FONT
|
||||
|
||||
#define ALPHASQUARE_SYMBOL_A SYM4x4(0, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_B SYM4x4(1, 1, 0, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_C SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_D SYM4x4(1, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_E SYM4x4(1, 1, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_F SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_G SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_H SYM4x4(1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_I SYM4x4(1, 1, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_J SYM4x4(1, 1, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_K SYM4x4(1, 0, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_L SYM4x4(1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_M SYM4x4(1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_N SYM4x4(1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_O SYM4x4(0, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_P SYM4x4(1, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_Q SYM4x4(0, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_R SYM4x4(1, 1, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_S SYM4x4(1, 1, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
0, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_T SYM4x4(1, 1, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_U SYM4x4(1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_V SYM4x4(1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_W SYM4x4(1, 0, 0, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_X SYM4x4(1, 0, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
1, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_Y SYM4x4(1, 0, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_Z SYM4x4(1, 1, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
// ---------------------
|
||||
#define ALPHASQUARE_SYMBOL_1 SYM4x4(1, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
0, 1, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_2 SYM4x4(1, 1, 0, 0, \
|
||||
0, 0, 1, 0, \
|
||||
0, 1, 0, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_3 SYM4x4(1, 1, 1, 0, \
|
||||
0, 1, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_4 SYM4x4(1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
0, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_5 SYM4x4(1, 1, 1, 0, \
|
||||
1, 1, 0, 0, \
|
||||
0, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_6 SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_7 SYM4x4(1, 1, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
0, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_8 SYM4x4(1, 1, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_9 SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0, \
|
||||
0, 0, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_0 SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
1, 1, 1, 0)
|
||||
|
||||
#endif
|
@ -0,0 +1,168 @@
|
||||
/* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef KALEIDOSCOPE_LED_FONT
|
||||
#define KALEIDOSCOPE_LED_FONT
|
||||
|
||||
#define ALPHASQUARE_SYMBOL_A SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
1, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_B SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 1, 1, \
|
||||
1, 1, 0, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_C SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_D SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_E SYM4x4(1, 1, 1, 1, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_F SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_G SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_H SYM4x4(1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_I SYM4x4(1, 1, 1, 1, \
|
||||
0, 1, 1, 0, \
|
||||
0, 1, 1, 0, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_J SYM4x4(1, 1, 1, 1, \
|
||||
0, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_K SYM4x4(1, 0, 0, 1, \
|
||||
1, 1, 0, 0, \
|
||||
1, 1, 0, 0, \
|
||||
1, 0, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_L SYM4x4(1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_M SYM4x4(1, 0, 1, 1, \
|
||||
1, 1, 1, 1, \
|
||||
1, 1, 0, 1, \
|
||||
1, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_N SYM4x4(1, 0, 0, 1, \
|
||||
1, 1, 0, 1, \
|
||||
1, 0, 1, 1, \
|
||||
1, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_O SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_P SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
1, 0, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_Q SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 1, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_R SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 0, \
|
||||
1, 0, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_S SYM4x4(1, 1, 1, 1, \
|
||||
1, 1, 0, 0, \
|
||||
0, 0, 1, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_T SYM4x4(1, 1, 1, 1, \
|
||||
0, 1, 1, 0, \
|
||||
0, 1, 1, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_U SYM4x4(1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_V SYM4x4(1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_W SYM4x4(1, 0, 0, 1, \
|
||||
1, 0, 1, 1, \
|
||||
1, 1, 1, 1, \
|
||||
1, 0, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_X SYM4x4(1, 0, 0, 1, \
|
||||
0, 1, 1, 0, \
|
||||
0, 1, 1, 0, \
|
||||
1, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_Y SYM4x4(1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
0, 1, 1, 0, \
|
||||
0, 1, 1, 0)
|
||||
#define ALPHASQUARE_SYMBOL_Z SYM4x4(1, 1, 1, 1, \
|
||||
0, 0, 1, 1, \
|
||||
1, 1, 0, 0, \
|
||||
1, 1, 1, 1)
|
||||
// ---------------------
|
||||
#define ALPHASQUARE_SYMBOL_1 SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 1, 0, \
|
||||
0, 0, 1, 0, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_2 SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 1, \
|
||||
0, 0, 1, 0, \
|
||||
1, 1, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_3 SYM4x4(1, 1, 1, 1, \
|
||||
0, 0, 1, 1, \
|
||||
0, 0, 0, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_4 SYM4x4(1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
0, 0, 0, 1, \
|
||||
0, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_5 SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 0, \
|
||||
0, 1, 1, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_6 SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 0, \
|
||||
1, 1, 1, 1, \
|
||||
1, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_7 SYM4x4(1, 1, 1, 1, \
|
||||
0, 0, 0, 1, \
|
||||
0, 0, 1, 0, \
|
||||
0, 1, 0, 0)
|
||||
#define ALPHASQUARE_SYMBOL_8 SYM4x4(1, 1, 1, 0, \
|
||||
1, 0, 1, 1, \
|
||||
1, 1, 0, 1, \
|
||||
0, 1, 1, 1)
|
||||
#define ALPHASQUARE_SYMBOL_9 SYM4x4(1, 1, 1, 1, \
|
||||
1, 0, 0, 1, \
|
||||
1, 1, 1, 1, \
|
||||
0, 0, 0, 1)
|
||||
#define ALPHASQUARE_SYMBOL_0 SYM4x4(0, 1, 1, 0, \
|
||||
1, 0, 0, 1, \
|
||||
1, 0, 0, 1, \
|
||||
0, 1, 1, 0)
|
||||
|
||||
#endif
|
@ -0,0 +1,39 @@
|
||||
/* -*- mode: c++ -*-
|
||||
* Kaleidoscope-LED-AlphaSquare -- 4x4 pixel LED alphabet
|
||||
* Copyright (C) 2017 Keyboard.io, Inc
|
||||
*
|
||||
* 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, version 3.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <kaleidoscope/plugin/LED-AlphaSquare.h>
|
||||
|
||||
namespace kaleidoscope {
|
||||
namespace plugin {
|
||||
namespace alpha_square {
|
||||
namespace symbols {
|
||||
|
||||
/* λ */
|
||||
static constexpr uint16_t Lambda = SYM4x4(1, 0, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 1, 1, 0,
|
||||
1, 0, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Backwards compatibility
|
||||
namespace alpha_square = kaleidoscope::plugin::alpha_square;
|
||||
|
||||
}
|
Loading…
Reference in new issue