summary refs log tree commit diff
path: root/users/d4mation
diff options
context:
space:
mode:
authorEric Defore <d4mation@users.noreply.github.com>2019-12-18 03:59:12 -0500
committerDrashna Jaelre <drashna@live.com>2019-12-18 00:59:12 -0800
commitf42dd61b8d29f71af2ce479064c64c96fef55ad4 (patch)
treef4bb23467099a228c46371cebe748139953245c9 /users/d4mation
parentb2405fccce1d9dd33e72d2b43a941e9b6bbd1f0d (diff)
[Keymap] Added userspace for d4mation. Included their keymap for the Atreus62 (#7483)
* Added userspace for d4mation. Included their keymap for the Atreus62

* Do not assign layer numbers manually

* Remove some unneeded things per @drashna's recommendation

* Fix some single line comments I missed

* Update unicode macros to use send_unicode_hex_string() instead of process_unicode()

* OBetter check for Unicode Enabled. Moved some checks into macros.c

* Use eeconfig_init_user() to set default unicode input mode
Diffstat (limited to 'users/d4mation')
-rw-r--r--users/d4mation/config.h1
-rw-r--r--users/d4mation/d4mation.c37
-rw-r--r--users/d4mation/d4mation.h17
-rw-r--r--users/d4mation/macros.c160
-rw-r--r--users/d4mation/macros.h23
-rw-r--r--users/d4mation/rules.mk15
-rw-r--r--users/d4mation/tap-dance.c6
-rw-r--r--users/d4mation/tap-dance.h7
-rw-r--r--users/d4mation/tap-hold.c28
-rw-r--r--users/d4mation/tap-hold.h5
-rw-r--r--users/d4mation/zalgo.c21
-rw-r--r--users/d4mation/zalgo.h5
12 files changed, 325 insertions, 0 deletions
diff --git a/users/d4mation/config.h b/users/d4mation/config.h
new file mode 100644
index 0000000000..3140a036f7
--- /dev/null
+++ b/users/d4mation/config.h
@@ -0,0 +1 @@
+#define FORCE_NKRO
\ No newline at end of file
diff --git a/users/d4mation/d4mation.c b/users/d4mation/d4mation.c
new file mode 100644
index 0000000000..5aa58a9f0d
--- /dev/null
+++ b/users/d4mation/d4mation.c
@@ -0,0 +1,37 @@
+#include "d4mation.h"
+
+__attribute__ ((weak))
+bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) {
+    /* If you want macros specific to your keymap, you need to define this function in your keymap */
+    return true;
+}
+
+__attribute__ ((weak))
+void matrix_init_keymap() {
+    /* If you want a matrix init specific to your keymap, you need to define this function in your keymap */
+}
+
+__attribute__ ((weak))
+void matrix_scan_keymap() {
+    /* If you want a matrix scan specific to your keymap, you need to define this function in your keymap */
+}
+
+__attribute__((weak))
+void eeconfig_init_keymap( void ) {}
+
+/* process_record_user() is called in macros.c */
+
+void matrix_init_user( void ) {
+    matrix_init_keymap();
+}
+
+void matrix_scan_user( void ) {
+    matrix_scan_keymap();
+}
+
+void eeconfig_init_user( void ) {
+
+    eeconfig_init_keymap();
+    keyboard_init();
+
+}
\ No newline at end of file
diff --git a/users/d4mation/d4mation.h b/users/d4mation/d4mation.h
new file mode 100644
index 0000000000..94c63526db
--- /dev/null
+++ b/users/d4mation/d4mation.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "quantum.h"
+
+#ifdef UNICODE_ENABLE
+#include "macros.h"
+#endif
+
+#ifdef TAP_DANCE_ENABLE
+#include "tap-dance.h"
+#endif
+
+bool process_record_keymap( uint16_t keycode, keyrecord_t *record );
+
+void matrix_init_keymap( void );
+
+void matrix_scan_keymap( void );
\ No newline at end of file
diff --git a/users/d4mation/macros.c b/users/d4mation/macros.c
new file mode 100644
index 0000000000..3c115d7ead
--- /dev/null
+++ b/users/d4mation/macros.c
@@ -0,0 +1,160 @@
+#include "d4mation.h"
+#include "tap-hold.h"
+#include "zalgo.h"
+#include "macros.h"
+
+bool zalgo_enabled = false;
+
+bool process_record_user( uint16_t keycode, keyrecord_t *record ) {
+
+  switch ( keycode ) {
+
+    case _GRAVE_ESC:
+
+      /* Send ` on Tap, Esc on Hold */
+      tap_or_hold( record, KC_GRAVE, KC_ESC );
+
+      return false;
+      break;
+
+    case PHPOPEN:
+
+      if ( record->event.pressed ) {
+
+        tap_code16( S( KC_COMMA ) );
+        tap_code16( S( KC_SLASH ) );
+
+        tap_code( KC_P );
+        tap_code( KC_H );
+        tap_code( KC_P );
+
+      }
+
+      return false;
+      break;
+
+    case PHPCLSE:
+
+      if ( record->event.pressed ) {
+        tap_code16( S( KC_SLASH ) );
+        tap_code16( S( KC_DOT ) );
+      }
+
+      return false;
+      break;
+
+    #ifdef UNICODE_ENABLE
+
+      case AMENO:  /* ༼ つ ◕_◕ ༽つ */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "0F3C 0020 3064 0020 25D5 005F 25D5 0020 0F3D 3064" );
+
+        }
+
+        return false;
+        break;
+
+      case MAGIC:  /* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "0028 2229 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029 2283 2501 2606 FF9F 002E 0020 002A" );
+
+        }
+
+        return false;
+        break;
+
+      case LENNY:  /* ( ͡° ͜ʖ ͡°) */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "0028 0020 0361 00B0 0020 035C 0296 0020 0361 00b0 0029" );
+
+        }
+
+        return false;
+        break;
+
+      case DISFACE:  /* ಠ_ಠ */
+
+        if ( record->event.pressed ) {
+          send_unicode_hex_string( "0CA0 005F 0CA0" );
+        }
+
+        return false;
+        break;
+
+      case TFLIP:  /* (╯°□°)╯ ︵ ┻━┻ */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "0028 256F 00b0 25A1 00B0 0029 256F FE35 253B 2501 253B" );
+
+        }
+
+        return false;
+        break;
+
+      case TPUT:  /* ┬──┬ ノ( ゜-゜ノ) */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "252C 2500 2500 252C 0020 30CE 0028 0020 309C 002D 309C 30CE 0029" );
+
+        }
+
+        return false;
+        break;
+
+      case SHRUG:  /* ¯\_(ツ)_/¯ */
+
+        if ( record->event.pressed ) {
+
+          send_unicode_hex_string( "00AF 005C 005F 0028 30C4 0029 005F 002F 00AF" );
+
+        }
+
+        return false;
+        break;
+
+      case ZALGO:  /* Toggles Zalgo Text mode */
+
+        if ( record->event.pressed ) {
+          zalgo_enabled = ! zalgo_enabled;
+        }
+
+        return false;
+        break;
+
+    #endif
+
+    default:
+
+      #ifdef UNICODE_ENABLE
+
+        if ( zalgo_enabled ) {
+
+          if ( keycode < KC_A || ( keycode > KC_0 && keycode < KC_MINUS ) || keycode > KC_SLASH ) {
+            process_record_keymap( keycode, record );
+            return true;
+          }
+
+          if ( record->event.pressed ) {
+            zalgo_text( keycode );
+          }
+
+          return false;
+        }
+
+      #endif
+
+      break;
+  }
+
+  process_record_keymap( keycode, record );
+  return true;
+
+};
\ No newline at end of file
diff --git a/users/d4mation/macros.h b/users/d4mation/macros.h
new file mode 100644
index 0000000000..e69d30dec2
--- /dev/null
+++ b/users/d4mation/macros.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "quantum.h"
+#include "tap-hold.h"
+#include "zalgo.h"
+
+#define SCRGB LCTL( LSFT( LGUI( KC_4 ) ) ) /* Mac Screen Area Grab shortcut (Puts into Clipboard) */
+#define SLEEP LALT( LGUI( KC_SYSTEM_POWER ) ) /* Instant sleep on Mac, rather than having to hold down the button */
+
+enum custom_keycodes {
+  _GRAVE_ESC = SAFE_RANGE, /* Prefixed with underscore to prevent conflicts */
+  PHPOPEN, /* <?php */
+  PHPCLSE, /* ?> */
+  AMENO, 
+  MAGIC,
+  LENNY,
+  DISFACE,
+  TFLIP,
+  TPUT,
+  SHRUG,
+  ZALGO,
+  NEW_SAFE_RANGE
+};
\ No newline at end of file
diff --git a/users/d4mation/rules.mk b/users/d4mation/rules.mk
new file mode 100644
index 0000000000..3d65a2242b
--- /dev/null
+++ b/users/d4mation/rules.mk
@@ -0,0 +1,15 @@
+SRC += d4mation.c \
+  tap-hold.c \
+  macros.c
+
+BOOTMAGIC_ENABLE = no
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no
+
+ifeq ($(strip $(UNICODE_ENABLE)), yes)
+  SRC += zalgo.c
+endif
+
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+  SRC += tap-dance.c
+endif
\ No newline at end of file
diff --git a/users/d4mation/tap-dance.c b/users/d4mation/tap-dance.c
new file mode 100644
index 0000000000..46f2274f5f
--- /dev/null
+++ b/users/d4mation/tap-dance.c
@@ -0,0 +1,6 @@
+#include "tap-dance.h"
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  /* Tap once/hold for Shift, tap twice for Caps Lock */
+  [SHIFT_CAPS] = ACTION_TAP_DANCE_DOUBLE( KC_LSHIFT, KC_CAPS )
+};
\ No newline at end of file
diff --git a/users/d4mation/tap-dance.h b/users/d4mation/tap-dance.h
new file mode 100644
index 0000000000..0087c4a6e7
--- /dev/null
+++ b/users/d4mation/tap-dance.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "quantum.h"
+
+enum tap_dance {
+  SHIFT_CAPS = 0
+};
\ No newline at end of file
diff --git a/users/d4mation/tap-hold.c b/users/d4mation/tap-hold.c
new file mode 100644
index 0000000000..0c5119f995
--- /dev/null
+++ b/users/d4mation/tap-hold.c
@@ -0,0 +1,28 @@
+#include "tap-hold.h"
+
+#ifndef TAP_HOLD_TIME
+#define TAP_HOLD_TIME 200
+#endif
+
+uint16_t tap_hold_timer;
+
+void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold ) {
+
+  if ( record->event.pressed ) {
+    tap_hold_timer = timer_read();
+  } else {
+
+    if ( tap_hold_timer &&
+      timer_elapsed( tap_hold_timer ) > TAP_HOLD_TIME ) {
+      /* Held down then released */
+      tap_code( hold );
+    } else {
+      /* Quickly Tapped */
+      tap_code( tap );
+    }
+
+    tap_hold_timer = 0;
+
+  }
+
+}
\ No newline at end of file
diff --git a/users/d4mation/tap-hold.h b/users/d4mation/tap-hold.h
new file mode 100644
index 0000000000..52dc0830f8
--- /dev/null
+++ b/users/d4mation/tap-hold.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "quantum.h"
+
+void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold );
\ No newline at end of file
diff --git a/users/d4mation/zalgo.c b/users/d4mation/zalgo.c
new file mode 100644
index 0000000000..3a1688e053
--- /dev/null
+++ b/users/d4mation/zalgo.c
@@ -0,0 +1,21 @@
+#include "zalgo.h"
+
+void zalgo_text( uint16_t keycode ) {
+
+  tap_code( keycode );
+
+  int number = ( rand() % ( 8 + 1 - 2 ) ) + 2;
+  unsigned int index;
+
+  unicode_input_start();
+
+  for ( index = 0; index < number; index++ ) {
+
+    uint16_t hex = ( rand() % ( 0x036F + 1 - 0x0300 ) ) + 0x0300;
+    register_hex( hex );
+
+  }
+
+  unicode_input_finish();
+
+}
\ No newline at end of file
diff --git a/users/d4mation/zalgo.h b/users/d4mation/zalgo.h
new file mode 100644
index 0000000000..f59fc035b9
--- /dev/null
+++ b/users/d4mation/zalgo.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "quantum.h"
+
+void zalgo_text( uint16_t keycode );
\ No newline at end of file