mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-24 09:27:36 +06:00
8f5ac39fb9
* Updating to my local changes. * Added auto-complete for joins. * Added lights to imply current state better
139 lines
2.5 KiB
C
139 lines
2.5 KiB
C
#include QMK_KEYBOARD_H
|
|
#include "customLogic.h"
|
|
#include "keymap.h"
|
|
#include "keyDefinitions.h"
|
|
#include "relativity.h"
|
|
#include "timer.h"
|
|
|
|
static int16_t fnTimer = 0;
|
|
|
|
|
|
|
|
uint32_t layer_state_set_user(uint32_t state)
|
|
{
|
|
switch (biton32(state))
|
|
{
|
|
case QWERTY:
|
|
rgblight_mode(9);
|
|
break;
|
|
case NAV_CLUSTER:
|
|
rgblight_mode(29);
|
|
break;
|
|
case GAMING:
|
|
rgblight_mode(26);
|
|
break;
|
|
case SQLMACROS:
|
|
rgblight_mode(1);
|
|
break;
|
|
case FN_LAYER:
|
|
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL+5);
|
|
break;
|
|
}
|
|
return state;
|
|
}
|
|
|
|
|
|
|
|
bool printSqlVerbs(uint16_t keycode, keyrecord_t *record)
|
|
{
|
|
if (record->event.pressed)
|
|
{
|
|
switch (keycode)
|
|
{
|
|
case S_LFTJN:
|
|
SEND_STRING("LEFT JOIN");
|
|
activateRelativity();
|
|
return false;
|
|
case S_INRJN:
|
|
SEND_STRING("INNER JOIN ");
|
|
activateRelativity();
|
|
return false;
|
|
case S_SLCT:
|
|
SEND_STRING("SELECT "); return
|
|
false;
|
|
case S_FROM:
|
|
SEND_STRING("FROM "); return
|
|
false;
|
|
case S_DSNCT:
|
|
SEND_STRING("DISTINCT "); return
|
|
false;
|
|
case S_ORDER:
|
|
SEND_STRING("ORDER BY "); return
|
|
false;
|
|
case S_WHERE:
|
|
SEND_STRING("WHERE "); return
|
|
false;
|
|
case S_ALTER:
|
|
SEND_STRING("ALTER SESSION SET CURRENT_SCHEMA = SUPPLY;"); return false;
|
|
case S_ASTRK:
|
|
SEND_STRING("* "); return false;
|
|
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
bool isFn = false;
|
|
bool didFn = false;
|
|
|
|
|
|
bool updateLayerState(uint16_t keycode, keyrecord_t *record)
|
|
{
|
|
|
|
if (record->event.pressed)
|
|
{
|
|
switch (keycode)
|
|
{
|
|
case FN_QT:
|
|
fnTimer = timer_read();
|
|
layer_on(FN_LAYER);
|
|
isFn = true;
|
|
return false;
|
|
}
|
|
if (isFn)
|
|
{
|
|
didFn = true;
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch(keycode)
|
|
{
|
|
case FN_QT:
|
|
layer_off(FN_LAYER);
|
|
if (!didFn)
|
|
{
|
|
#if fnTimeout
|
|
if (TIMER_DIFF_16(timer_read(), fnTimer) <= fnTimeout)
|
|
{
|
|
activateRelativity();
|
|
}
|
|
else
|
|
{
|
|
deactivateRelativity();
|
|
}
|
|
#else
|
|
activateRelativity();
|
|
#endif
|
|
}
|
|
didFn = false;
|
|
isFn = false;
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record)
|
|
{
|
|
return
|
|
storeShiftState(keycode, record) &&
|
|
printSqlVerbs(keycode, record) &&
|
|
updateLayerState(keycode, record) &&
|
|
handleSmartMacros(keycode, record);
|
|
}
|