Merge branch '2016-02-hardware'

* 2016-02-hardware:
  Move keymap data structures out of the toplevel sketch
  better implementation/general separation for keyswitch matrix
  We're not using WS2812 in the new implementation
  Make cRGB initialization not depend on struct order.
pull/18/head
Jesse Vincent 9 years ago
commit 024c8f39ab

@ -27,8 +27,6 @@ void setup();
extern HARDWARE_IMPLEMENTATION KeyboardHardware;
extern uint8_t matrixState[ROWS][COLS];
extern const Key keymaps[KEYMAPS][ROWS][COLS];
extern uint8_t primary_keymap;
extern uint8_t temporary_keymap;

@ -7,8 +7,6 @@
#include "KeyboardioHID.h"
uint8_t matrixState[ROWS][COLS] = {0};
const Key keymaps[KEYMAPS][ROWS][COLS] = { KEYMAP_LIST };
uint8_t primary_keymap = 0;
uint8_t temporary_keymap = 0;

@ -1,6 +1,23 @@
#include "LEDControl.h"
LEDControl_::LEDControl_(void) {
led_off.r = 0;
led_off.g = 0;
led_off.b = 0;
led_steady.r = 0;
led_steady.g = 255;
led_steady.b = 0;
led_blue.r = 0;
led_blue.g = 0;
led_blue.b = 255;
led_dark_blue.r = 0;
led_dark_blue.g = 0;
led_dark_blue .b = 127;
led_bright_red.r = 255;
led_bright_red.g = 0;
led_bright_red.b = 0;
}
@ -107,7 +124,7 @@ void LEDControl_::led_compute_breath() {
}
led_breathe.SetHSV(200, 255, breathe_brightness);
hsv_to_rgb(&led_breathe,200, 255, breathe_brightness);
}
void LEDControl_::effect_breathe_update() {

@ -32,17 +32,14 @@ class LEDControl_ {
uint8_t pos = 0;
void hsv_to_rgb(cRGB *cRGB, uint16_t h, uint16_t s, uint16_t v);
cRGB led_off = { .r = 0, .g = 0, .b = 0 };
cRGB led_steady = { .r = 0, .g = 255, .b = 0};
cRGB led_blue = { .r = 0, .g = 0, .b = 255 };
cRGB led_dark_blue = { .r = 0, .g = 0, .b = 127 };
cRGB led_bright_red = { .r = 255, .g = 0, .b = 0};
cRGB led_off;
cRGB led_steady;
cRGB led_blue;
cRGB led_dark_blue;
cRGB led_bright_red;
cRGB led_breathe;
cRGB rainbow;
uint16_t rainbow_hue = 0; //stores 0 to 614
static const uint8_t rainbow_steps = 1; //number of hues we skip in a 360 range per update

@ -1,5 +1,4 @@
#include <Arduino.h>
#include "WS2812.h"
#include "Model01.h"
Model01::Model01(void) {
@ -24,12 +23,13 @@ void Model01::led_sync() {
void Model01::scan_matrix() {
uint8_t key_data;
//scan the Keyboard matrix looking for connections
for (byte row = 0; row < LEFT_ROWS; row++) {
for (byte col = 0; col < LEFT_COLS; col++) {
handle_key_event(row, col);
handle_key_event(row, (COLS - 1) - col);
handle_key_event(row, col, &key_data);
handle_key_event(row, (COLS - 1) - col, &key_data);
}
}
}

@ -4,7 +4,6 @@
#include "../keymaps.h"
#include "../generated/keymaps.h"
#include "../key_events.h"

@ -42,11 +42,11 @@ void Model01Beta::scan_matrix() {
for (byte col = 0; col < LEFT_COLS; col++) {
scan_left_col(row,col,&matrixState[row][col]);
handle_key_event(row, col);
handle_key_event(row, col, &matrixState[row][col]);
if (right_hand_connected()) {
scan_right_col(row,col,&matrixState[row][(COLS - 1) - col]);
handle_key_event(row, (COLS - 1) - col);
handle_key_event(row, (COLS - 1) - col, &matrixState[row][(COLS - 1) - col]);
}
}
finish_scanning_row(row);

@ -2,7 +2,6 @@
#include <Arduino.h>
#include "../keymaps.h"
#include "../generated/keymaps.h"
#include "WS2812.h"
#include "KeyboardioSX1509.h"
#include "../key_events.h"
@ -41,7 +40,7 @@ class Model01Beta {
static WS2812 LED;
int right_initted = 0;
int left_initted = 0;
uint8_t matrixState[ROWS][COLS] = {{0}};
uint8_t left_colpins[LEFT_COLS]= {7,6,5,4,3,2,1,0};
uint8_t left_rowpins[LEFT_ROWS]= {8,9,10,11};

@ -1,6 +1,8 @@
#include "key_events.h"
void handle_synthetic_key_event(byte switchState, Key mappedKey) {
const Key keymaps[KEYMAPS][ROWS][COLS] = { KEYMAP_LIST };
void handle_synthetic_key_event(uint8_t switchState, Key mappedKey) {
if (mappedKey.flags & IS_MOUSE_KEY && !( mappedKey.rawKey & KEY_MOUSE_WARP) ) {
handle_mouse_key_event(switchState, mappedKey);
} else if (! (mappedKey.flags & IS_INTERNAL)
@ -44,19 +46,18 @@ void handle_synthetic_key_event(byte switchState, Key mappedKey) {
}
}
void handle_key_event(byte row, byte col) {
void handle_key_event(byte row, byte col, uint8_t *switchState) {
//for every newly pressed button, figure out what logical key it is and send a key down event
// for every newly released button, figure out what logical key it is and send a key up event
byte switchState = matrixState[row][col];
Key mappedKey = keymaps[temporary_keymap][row][col];
if (keymaps[primary_keymap][row][col].flags & SWITCH_TO_KEYMAP) {
handle_keymap_key_event(switchState, keymaps[primary_keymap][row][col]);
handle_keymap_key_event(*switchState, keymaps[primary_keymap][row][col]);
}
if (mappedKey.flags & SYNTHETIC_KEY) {
handle_synthetic_key_event(switchState, mappedKey);
} else if (key_is_pressed(switchState)) {
handle_synthetic_key_event(*switchState, mappedKey);
} else if (key_is_pressed(*switchState)) {
press_key(mappedKey);
}
}
@ -78,7 +79,7 @@ void press_key(Key mappedKey) {
}
void handle_keymap_key_event(byte switchState, Key keymapEntry) {
void handle_keymap_key_event(uint8_t switchState, Key keymapEntry) {
if (keymapEntry.flags & MOMENTARY ) {
if (key_toggled_on(switchState)) {
if ( keymapEntry.rawKey == KEYMAP_NEXT) {
@ -100,7 +101,7 @@ void handle_keymap_key_event(byte switchState, Key keymapEntry) {
}
}
void handle_mouse_key_event(byte switchState, Key mappedKey) {
void handle_mouse_key_event(uint8_t switchState, Key mappedKey) {
if (key_is_pressed(switchState)) {
if (mappedKey.rawKey & KEY_MOUSE_UP) {
MouseWrapper.move(0,-1);

@ -6,16 +6,17 @@
#include "MouseWrapper.h"
#include "LEDControl.h"
#include "Storage.h"
#include "keymaps.h"
#include "generated/keymaps.h"
extern uint8_t matrixState[ROWS][COLS];
extern const Key keymaps[KEYMAPS][ROWS][COLS];
extern uint8_t primary_keymap;
extern uint8_t temporary_keymap;
// sending events to the computer
void handle_synthetic_key_event(byte switchState, Key mappedKey);
void handle_key_event(byte row, byte col);
void handle_synthetic_key_event(uint8_t switchState, Key mappedKey);
void handle_key_event(byte row, byte col, uint8_t *switch_state);
void press_key(Key mappedKey);
void handle_keymap_key_event(byte switchState, Key keymapEntry);
void handle_mouse_key_event(byte switchState, Key mappedKey);
void handle_keymap_key_event(uint8_t switchState, Key keymapEntry);
void handle_mouse_key_event(uint8_t switchState, Key mappedKey);

Loading…
Cancel
Save