summaryrefslogtreecommitdiffstats
path: root/keyboards/comet46/lib
diff options
context:
space:
mode:
authorsatt99 <39004890+satt99@users.noreply.github.com>2018-12-30 17:34:06 +0100
committerDrashna Jaelre <drashna@live.com>2018-12-30 17:34:06 +0100
commit46b4b4407ff6e23d0799b0f902e61f1fe3645a9a (patch)
treede3fe1ee10e65c08549cc20230f9f822954a8fee /keyboards/comet46/lib
parentc2390bf32156884d6825686c7f13f9c621bab366 (diff)
downloadqmk_firmware-46b4b4407ff6e23d0799b0f902e61f1fe3645a9a.tar.gz
qmk_firmware-46b4b4407ff6e23d0799b0f902e61f1fe3645a9a.tar.xz
Comet46 add support for OLED (#4745)
* Add OLED support for Comet46 * fix length of char "name" of keylogger.c * update ssd1306 * fix rules.mk * update led-receiver keymap * Update OLED related code * add mod_state_reader & modify led_state_reader * Update OLED related files * Update kemaps * Update readme * change default-oled-display to default * Add OSM compatibility to mod_state_reader * Code formatting * Use PROGMEM to store code_to_name * Clean up satt keymap * Rename default-led keymap to defult-rgbled
Diffstat (limited to 'keyboards/comet46/lib')
-rw-r--r--keyboards/comet46/lib/glcdfont.c148
-rw-r--r--keyboards/comet46/lib/host_led_state_reader.c15
-rw-r--r--keyboards/comet46/lib/keylogger.c294
-rw-r--r--keyboards/comet46/lib/modifier_state_reader.c18
4 files changed, 475 insertions, 0 deletions
diff --git a/keyboards/comet46/lib/glcdfont.c b/keyboards/comet46/lib/glcdfont.c
new file mode 100644
index 000000000..e912d2233
--- /dev/null
+++ b/keyboards/comet46/lib/glcdfont.c
@@ -0,0 +1,148 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#ifndef FONT5X7_H
+#define FONT5X7_H
+
+#ifdef __AVR__
+ #include <avr/io.h>
+ #include <avr/pgmspace.h>
+#elif defined(ESP8266)
+ #include <pgmspace.h>
+#else
+ #define PROGMEM
+#endif
+
+// Standard ASCII 5x7 font
+
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00
+};
+#endif // FONT5X7_H
diff --git a/keyboards/comet46/lib/host_led_state_reader.c b/keyboards/comet46/lib/host_led_state_reader.c
new file mode 100644
index 000000000..864b1e244
--- /dev/null
+++ b/keyboards/comet46/lib/host_led_state_reader.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "comet46.h"
+
+char host_led_state_str[22];
+
+const char *read_host_led_state(void) {
+ uint8_t leds = host_keyboard_leds();
+
+ snprintf(host_led_state_str, sizeof(host_led_state_str), "Lock: %s%s%s",
+ (leds & (1 << USB_LED_CAPS_LOCK)) ? "CAPL " : "",
+ (leds & (1 << USB_LED_SCROLL_LOCK)) ? "SCRL " : "",
+ (leds & (1 << USB_LED_NUM_LOCK)) ? "NUML" : "");
+
+ return host_led_state_str;
+}
diff --git a/keyboards/comet46/lib/keylogger.c b/keyboards/comet46/lib/keylogger.c
new file mode 100644
index 000000000..184f60109
--- /dev/null
+++ b/keyboards/comet46/lib/keylogger.c
@@ -0,0 +1,294 @@
+#include <stdio.h>
+
+#ifdef __AVR__
+ #include <avr/io.h>
+ #include <avr/pgmspace.h>
+#else
+ #define PROGMEM
+#endif
+
+#define NUM_USB_HID_KEYCODES 255
+#define LEN_KEYCODE_STR 4
+
+char keylog[22] = {"KC: ID: "};
+
+// Quick and dirty way to display USB HID keycodes used in QMK
+// USB HID keycodes from 0x0000 to 0x00FF are stored in a 4x256+1 length char
+const char code_to_name[] PROGMEM = {
+ "NO " //0x00
+ "TRNS"
+ "? "
+ "? "
+ "A "
+ "B "
+ "C "
+ "D "
+ "E "
+ "F "
+ "G "
+ "H "
+ "I "
+ "J "
+ "K "
+ "L "
+ "M " //0x10
+ "N "
+ "O "
+ "P "
+ "Q "
+ "R "
+ "S "
+ "T "
+ "U "
+ "V "
+ "W "
+ "X "
+ "Y "
+ "Z "
+ "1 "
+ "2 "
+ "3 " //0x20
+ "4 "
+ "5 "
+ "6 "
+ "7 "
+ "8 "
+ "9 "
+ "0 "
+ "ENT "
+ "ESC "
+ "BSPC"
+ "TAB "
+ "SPC "
+ "MINS"
+ "EQL "
+ "LBRC"
+ "RBRC" //0x30
+ "BSLS"
+ "NUHS"
+ "SCLN"
+ "QUOT"
+ "GRV "
+ "COMM"
+ "DOT "
+ "SLSH"
+ "CAPS"
+ "F1 "
+ "F2 "
+ "F3 "
+ "F4 "
+ "F5 "
+ "F6 "
+ "F7 " //0x40
+ "F8 "
+ "F9 "
+ "F10 "
+ "F11 "
+ "F12 "
+ "PSCR"
+ "SLCK"
+ "PAUS"
+ "INS "
+ "HOME"
+ "PGUP"
+ "DEL "
+ "END "
+ "PGDN"
+ "RGHT"
+ "LEFT" //0x50
+ "DOWN"
+ "UP "
+ "NLCK"
+ "PSLS"
+ "PAST"
+ "PMNS"
+ "PPLS"
+ "PENT"
+ "P1 "
+ "P2 "
+ "P3 "
+ "P4 "
+ "P5 "
+ "P6 "
+ "P7 "
+ "P8 " //0x60
+ "P9 "
+ "P0 "
+ "PDOT"
+ "NUBS"
+ "APP "
+ "POW "
+ "PEQL"
+ "F13 "
+ "F14 "
+ "F15 "
+ "F16 "
+ "F17 "
+ "F18 "
+ "F19 "
+ "F20 "
+ "F21 " //0x70
+ "F22 "
+ "F23 "
+ "F24 "
+ "EXEC"
+ "HELP"
+ "MENU"
+ "SLCT"
+ "STOP"
+ "AGIN"
+ "UNDO"
+ "CUT "
+ "COPY"
+ "PSTE"
+ "FIND"
+ "_MUT"
+ "_VUP" //0x80
+ "_VDN"
+ "LCAP"
+ "LNUM"
+ "LSCR"
+ "PCMM"
+ "PEQA"
+ "INT1"
+ "INT2"
+ "INT3"
+ "INT4"
+ "INT5"
+ "INT6"
+ "INT7"
+ "INT8"
+ "INT9"
+ "LAN1" //0x90
+ "LAN2"
+ "LAN3"
+ "LAN4"
+ "LAN5"
+ "LAN6"
+ "LAN7"
+ "LAN8"
+ "LAN9"
+ "ERAS"
+ "SYSR"
+ "CNCL"
+ "CLR "
+ "PRIR"
+ "RTRN"
+ "SEP "
+ "OUT " //0xA0
+ "OPER"
+ "CLRA"
+ "CSEL"
+ "ESEL"
+ "PWR " //0xA5
+ "SLEP"
+ "WAKE"
+ "MUTE"
+ "VOLU"
+ "VOLD"
+ "MNXT"
+ "MPRV"
+ "MSTP"
+ "MPLY"
+ "MSEL"
+ "EJCT" //0xB0
+ "MAIL"
+ "CALC"
+ "MYCM"
+ "WSCH"
+ "WHOM"
+ "WBAK"
+ "WFWD"
+ "WSTP"
+ "WREF"
+ "WFAV"
+ "MFFD"
+ "MRWD"
+ "BRIU"
+ "BRID"
+ "? "
+ "FN0 " //0xC0
+ "FN1 "
+ "FN2 "
+ "FN3 "
+ "FN4 "
+ "FN5 "
+ "FN6 "
+ "FN7 "
+ "FN8 "
+ "FN9 "
+ "FN10"
+ "FN11"
+ "FN12"
+ "FN13"
+ "FN14"
+ "FN15"
+ "FN16" //0xD0
+ "FN17"
+ "FN18"
+ "FN19"
+ "FN20"
+ "FN21"
+ "FN22"
+ "FN23"
+ "FN24"
+ "FN25"
+ "FN26"
+ "FN27"
+ "FN28"
+ "FN29"
+ "FN30"
+ "FN31"
+ "LCTL" //0xE0
+ "LSFT"
+ "LALT"
+ "LGUI"
+ "RCTL"
+ "RSFT"
+ "RALT"
+ "RGUI"
+ "? "
+ "? "
+ "? "
+ "? "
+ "? "
+ "? "
+ "? "
+ "? "
+ "MS_U" //0xF0
+ "MS_D"
+ "MS_L"
+ "MS_R"
+ "BTN1"
+ "BTN2"
+ "BTN3"
+ "BTN4"
+ "BTN5"
+ "WH_U"
+ "WH_D"
+ "WH_L"
+ "WH_R"
+ "ACL0"
+ "ACL1"
+ "ACL2"
+};
+
+void set_keylog(uint16_t keycode)
+{
+ char name[LEN_KEYCODE_STR+1] = "? ";
+
+ if (keycode <= NUM_USB_HID_KEYCODES) {
+ for (uint8_t k = 0; k < LEN_KEYCODE_STR; k++) {
+ name[k] = pgm_read_byte_near(code_to_name + keycode * LEN_KEYCODE_STR + k);
+ }
+ } else if (keycode > NUM_USB_HID_KEYCODES) {
+ snprintf(name, sizeof(name), "QMK ");
+ }
+
+ // update keylog
+ snprintf(keylog, sizeof(keylog), "KC: %s ID: %d", name, keycode);
+}
+
+const char *read_keylog(void) {
+ return keylog;
+}
diff --git a/keyboards/comet46/lib/modifier_state_reader.c b/keyboards/comet46/lib/modifier_state_reader.c
new file mode 100644
index 000000000..518eef92a
--- /dev/null
+++ b/keyboards/comet46/lib/modifier_state_reader.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include "comet46.h"
+
+char modifier_state_str[22];
+
+const char *read_modifier_state(void) {
+ uint8_t modifiers = get_mods();
+ uint8_t one_shot = get_oneshot_mods();
+
+ snprintf(modifier_state_str, sizeof(modifier_state_str), "Mod: %s%s%s%s",
+ (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) ? "CTL " : "",
+ (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) ? "GUI " : "",
+ (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) ? "ALT " : "",
+ (modifiers & MODS_SHIFT_MASK || one_shot & MODS_SHIFT_MASK) ? "SFT" : ""
+ );
+
+ return modifier_state_str;
+}