[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
This commit is contained in:
parent
b2405fccce
commit
f42dd61b8d
15 changed files with 563 additions and 0 deletions
1
users/d4mation/config.h
Normal file
1
users/d4mation/config.h
Normal file
|
@ -0,0 +1 @@
|
|||
#define FORCE_NKRO
|
37
users/d4mation/d4mation.c
Normal file
37
users/d4mation/d4mation.c
Normal file
|
@ -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();
|
||||
|
||||
}
|
17
users/d4mation/d4mation.h
Normal file
17
users/d4mation/d4mation.h
Normal file
|
@ -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 );
|
160
users/d4mation/macros.c
Normal file
160
users/d4mation/macros.c
Normal file
|
@ -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;
|
||||
|
||||
};
|
23
users/d4mation/macros.h
Normal file
23
users/d4mation/macros.h
Normal file
|
@ -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
|
||||
};
|
15
users/d4mation/rules.mk
Normal file
15
users/d4mation/rules.mk
Normal file
|
@ -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
|
6
users/d4mation/tap-dance.c
Normal file
6
users/d4mation/tap-dance.c
Normal file
|
@ -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 )
|
||||
};
|
7
users/d4mation/tap-dance.h
Normal file
7
users/d4mation/tap-dance.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
enum tap_dance {
|
||||
SHIFT_CAPS = 0
|
||||
};
|
28
users/d4mation/tap-hold.c
Normal file
28
users/d4mation/tap-hold.c
Normal file
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
5
users/d4mation/tap-hold.h
Normal file
5
users/d4mation/tap-hold.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold );
|
21
users/d4mation/zalgo.c
Normal file
21
users/d4mation/zalgo.c
Normal file
|
@ -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();
|
||||
|
||||
}
|
5
users/d4mation/zalgo.h
Normal file
5
users/d4mation/zalgo.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void zalgo_text( uint16_t keycode );
|
Loading…
Add table
Add a link
Reference in a new issue