From ccda62616d422ae6df810b6fd68fc8e61002e278 Mon Sep 17 00:00:00 2001
From: kakunpc <15257475+kakunpc@users.noreply.github.com>
Date: Thu, 12 Dec 2019 03:40:00 +0900
Subject: [Keyboard] update angel64 (#7545)
* add angel64 rev1
* update angel64
* fix keymap.c
---
keyboards/angel64/rev1/keymaps/kakunpc/config.h | 19 +++
keyboards/angel64/rev1/keymaps/kakunpc/keymap.c | 195 +++++++++++++++++++++++
keyboards/angel64/rev1/keymaps/kakunpc/readme.md | 1 +
3 files changed, 215 insertions(+)
create mode 100644 keyboards/angel64/rev1/keymaps/kakunpc/config.h
create mode 100644 keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
create mode 100644 keyboards/angel64/rev1/keymaps/kakunpc/readme.md
(limited to 'keyboards/angel64/rev1/keymaps/kakunpc')
diff --git a/keyboards/angel64/rev1/keymaps/kakunpc/config.h b/keyboards/angel64/rev1/keymaps/kakunpc/config.h
new file mode 100644
index 000000000..bf1149ebc
--- /dev/null
+++ b/keyboards/angel64/rev1/keymaps/kakunpc/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
new file mode 100644
index 000000000..6f70dd72c
--- /dev/null
+++ b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
@@ -0,0 +1,195 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+#define USE_LED_RIPPLE_EFFECT
+// #define RANDOM_RIPPLE_EFFECT
+
+#include QMK_KEYBOARD_H
+#include "lufa.h"
+
+#ifdef USE_LED_RIPPLE_EFFECT
+struct keybuf {
+ char col, row;
+ char frame;
+};
+struct keybuf keybufs[256];
+unsigned char keybuf_begin, keybuf_end;
+
+unsigned char r = 0;
+unsigned char g = 112;
+unsigned char b = 255;
+int col, row;
+#endif
+
+
+enum layers{
+ BASE = 0,
+ COMMAND
+};
+
+#define KC_COMMAND_NUM LT(COMMAND,KC_F13)
+#define KC_COMMAND_KANA LT(COMMAND,KC_F14)
+#define KC_COMMAND LT(COMMAND,KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_all(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_COMMAND_NUM, KC_SPC, KC_SPC, KC_SPC, KC_COMMAND_KANA, KC_RALT, MO(COMMAND),KC_RCTL),
+ [COMMAND] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
+ KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_NO, KC_NO, _______, KC_NO, RGB_MOD, KC_NO, _______, KC_NO, _______, KC_NO),
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef USE_LED_RIPPLE_EFFECT
+ col = record->event.key.col;
+ row = record->event.key.row;
+ if (record->event.pressed) {
+ int end = keybuf_end;
+ keybufs[end].col = col;
+ keybufs[end].row = row;
+ keybufs[end].frame = 0;
+ keybuf_end ++;
+ }
+#endif
+ return true;
+}
+
+void keyboard_post_init_user(void) {
+#ifdef USE_LED_RIPPLE_EFFECT
+ rgblight_enable_noeeprom();
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+}
+
+#ifdef USE_LED_RIPPLE_EFFECT
+int scan_count = -10;
+int keys[] = { 14, 14, 13, 12, 11 };
+int keys_sum[] = { 0, 14, 28, 41, 53 };
+unsigned char rgb[14][5][3];
+int row_max = 12;
+int ToIndex(char _col, char _row) {
+ return (_col * row_max) + _row;
+}
+
+void led_ripple_effect(void){
+ if (scan_count == -1) {
+ rgblight_enable_noeeprom();
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ } else if (scan_count >= 0 && scan_count < 5) {
+ for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
+ int i = c;
+ // FIXME:
+
+ int index = ToIndex(keybufs[i].col,keybufs[i].row);
+ int coll = 0;
+ for(int s = 4; s >= 0; --s){
+ if( index >= keys_sum[s]){
+ coll = s;
+ break;
+ }
+ }
+ int roww = MAX(0,index - keys_sum[coll]);
+
+ int y = scan_count;
+ int dist_y = abs(y - coll);
+ for (int x=0; x= 6 && scan_count <= 10) {
+ int y = scan_count - 6;
+ for (int x=0; x= 12) { scan_count = 0; }
+}
+
+#endif
+
+void matrix_scan_user(void) {
+#ifdef USE_LED_RIPPLE_EFFECT
+#ifdef RANDOM_RIPPLE_EFFECT
+ static int timer = 0;
+ static int timeout = 300;
+ timer++;
+ if(timer > timeout){
+ int end = keybuf_end;
+ col = rand() % 6;
+ row = rand() % 12;
+ keybufs[end].col = col;
+ keybufs[end].row = row;
+ keybufs[end].frame = 0;
+ keybuf_end ++;
+ timer = rand() % timeout;
+ }
+#endif
+ led_ripple_effect();
+#endif
+}
+
+#ifdef OLED_DRIVER_ENABLE
+void oled_task_user(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (biton32(layer_state)) {
+ case BASE:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case COMMAND:
+ oled_write_P(PSTR("COMMAND\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding 'n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+#endif
diff --git a/keyboards/angel64/rev1/keymaps/kakunpc/readme.md b/keyboards/angel64/rev1/keymaps/kakunpc/readme.md
new file mode 100644
index 000000000..ca7d7961f
--- /dev/null
+++ b/keyboards/angel64/rev1/keymaps/kakunpc/readme.md
@@ -0,0 +1 @@
+# The kakunpc keymap for angel64
--
cgit v1.2.3