Added volume media keys, fixed workman-p layout, added two todo's
parent
84a6d90a7b
commit
b1c85b73fe
|
@ -62,6 +62,7 @@ void kbfun_layer_pop_all(void) {
|
|||
|
||||
// special
|
||||
#define sshprre &kbfun_shift_press_release
|
||||
#define ishprre &kbfun_invert_shift_press_release
|
||||
#define s2kcap &kbfun_2_keys_capslock_press_release
|
||||
#define slpunum &kbfun_layer_push_numpad
|
||||
#define slponum &kbfun_layer_pop_numpad
|
||||
|
@ -111,11 +112,11 @@ KB_MATRIX_LAYER(
|
|||
MEDIAKEY_STOP, 0, 0,
|
||||
|
||||
// right hand
|
||||
KEY_F12, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_ScrollLock,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
/*no key*/ 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
/*no key*/ /*no key*/ KEY_VolumeUp, KEY_VolumeDown, 0, 0, 3,
|
||||
KEY_F12, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_ScrollLock,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
/*no key*/ 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
/*no key*/ /*no key*/ MEDIAKEY_AUDIO_VOL_UP, MEDIAKEY_AUDIO_VOL_DOWN, MEDIAKEY_AUDIO_MUTE, 0, 3,
|
||||
// right thumb
|
||||
0, 0, /*no key*/
|
||||
0, 0 /*no key*/, 0 /*no key*/,
|
||||
|
@ -339,7 +340,7 @@ KB_MATRIX_LAYER(
|
|||
// unused
|
||||
NULL /*no key*/,
|
||||
// left hand
|
||||
kprrel, sshprre, sshprre, sshprre, sshprre, sshprre, kprrel,
|
||||
kprrel, ishprre, ishprre, ishprre, ishprre, ishprre, kprrel,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush1,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, /*no key*/
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
|
@ -350,7 +351,7 @@ KB_MATRIX_LAYER(
|
|||
kprrel, kprrel, kprrel,
|
||||
|
||||
// right hand
|
||||
lpush2, sshprre, sshprre, sshprre, sshprre, sshprre, kprrel,
|
||||
lpush2, ishprre, ishprre, ishprre, ishprre, ishprre, kprrel,
|
||||
lpush1, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
/*no key*/ kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
|
@ -380,7 +381,7 @@ KB_MATRIX_LAYER(
|
|||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
/*no key*/ ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
/*no key*/ /*no key*/ kprrel, kprrel, ktrans, ktrans, lpush3,
|
||||
/*no key*/ /*no key*/ mprrel, mprrel, mprrel, ktrans, lpush3,
|
||||
// right thumb
|
||||
ktrans, ktrans, /*no key*/
|
||||
ktrans, NULL /*no key*/, NULL /*no key*/,
|
||||
|
@ -604,7 +605,7 @@ KB_MATRIX_LAYER(
|
|||
// unused
|
||||
NULL /*no key*/,
|
||||
// left hand
|
||||
kprrel, sshprre, sshprre, sshprre, sshprre, sshprre, kprrel,
|
||||
kprrel, ishprre, ishprre, ishprre, ishprre, ishprre, kprrel,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpop1,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, /*no key*/
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
|
@ -615,7 +616,7 @@ KB_MATRIX_LAYER(
|
|||
kprrel, kprrel, kprrel,
|
||||
|
||||
// right hand
|
||||
NULL, sshprre, sshprre, sshprre, sshprre, sshprre, kprrel,
|
||||
NULL, ishprre, ishprre, ishprre, ishprre, ishprre, kprrel,
|
||||
lpop1, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
/*no key*/ kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
|
@ -634,22 +635,22 @@ KB_MATRIX_LAYER(
|
|||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, /*no key*/
|
||||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
NULL, ktrans, ktrans, ktrans, ktrans, /*no key*/ /*no key*/
|
||||
NULL, ktrans, ktrans, mprrel, mprrel, /*no key*/ /*no key*/
|
||||
// left thumb
|
||||
/*no key*/ ktrans, ktrans,
|
||||
NULL /*no key*/, NULL /*no key*/, ktrans,
|
||||
ktrans, ktrans, ktrans,
|
||||
mprrel, ktrans, ktrans,
|
||||
|
||||
// right hand
|
||||
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
|
||||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
/*no key*/ ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
|
||||
/*no key*/ /*no key*/ kprrel, kprrel, ktrans, ktrans, NULL,
|
||||
/*no key*/ /*no key*/ mprrel, mprrel, mprrel, ktrans, NULL,
|
||||
// right thumb
|
||||
ktrans, ktrans, /*no key*/
|
||||
ktrans, NULL /*no key*/, NULL /*no key*/,
|
||||
ktrans, ktrans, ktrans
|
||||
ktrans, ktrans, mprrel
|
||||
),
|
||||
// LAYER 2
|
||||
KB_MATRIX_LAYER(
|
||||
|
|
|
@ -25,6 +25,9 @@ static const uint16_t _media_code_lookup_table[] = {
|
|||
TRANSPORT_STOP, /* MEDIAKEY_STOP */
|
||||
TRANSPORT_PREV_TRACK, /* MEDIAKEY_PREV_TRACK */
|
||||
TRANSPORT_NEXT_TRACK, /* MEDIAKEY_NEXT_TRACK */
|
||||
AUDIO_MUTE, /* MEDIAKEY_AUDIO_MUTE */
|
||||
AUDIO_VOL_UP, /* MEDIAKEY_AUDIO_VOL_UP */
|
||||
AUDIO_VOL_DOWN, /* MEDIAKEY_AUDIO_VOL_DOWN */
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
|
||||
// special
|
||||
void kbfun_shift_press_release (void);
|
||||
void kbfun_invert_shift_press_release (void);
|
||||
void kbfun_2_keys_capslock_press_release (void);
|
||||
void kbfun_layer_push_numpad (void);
|
||||
void kbfun_layer_pop_numpad (void);
|
||||
|
|
|
@ -43,6 +43,53 @@ void kbfun_shift_press_release(void) {
|
|||
kbfun_press_release();
|
||||
}
|
||||
|
||||
/*
|
||||
* [name]
|
||||
* invert Shift + press|release
|
||||
*
|
||||
* [description]
|
||||
* Generate a 'shift' press or release before the normal keypress or
|
||||
* key release if shift is not pressed. Generate a normal keypress or
|
||||
* key release if shift is pressed.
|
||||
*/
|
||||
// TODO: make pressed a non-inverted key restore the shift state immediately.
|
||||
// TODO: also, make media keys not repeat so much, maybe?
|
||||
void kbfun_invert_shift_press_release(void) {
|
||||
static uint8_t keys_pressed;
|
||||
static bool lshift_pressed;
|
||||
static bool rshift_pressed;
|
||||
|
||||
if (IS_PRESSED) {
|
||||
++keys_pressed;
|
||||
} else if (keys_pressed) {
|
||||
--keys_pressed;
|
||||
}
|
||||
|
||||
// if this is our first inverted keypress
|
||||
if (IS_PRESSED && keys_pressed == 1) {
|
||||
// save the state of left and right shift
|
||||
lshift_pressed = _kbfun_is_pressed(KEY_LeftShift);
|
||||
rshift_pressed = _kbfun_is_pressed(KEY_RightShift);
|
||||
// invert the state
|
||||
if (lshift_pressed || rshift_pressed) {
|
||||
// disable both
|
||||
_kbfun_press_release(false, KEY_LeftShift);
|
||||
_kbfun_press_release(false, KEY_RightShift);
|
||||
} else {
|
||||
// press left shift
|
||||
_kbfun_press_release(true, KEY_LeftShift);
|
||||
_kbfun_press_release(false, KEY_RightShift);
|
||||
}
|
||||
}
|
||||
kbfun_press_release();
|
||||
// if no inverted keys are still down
|
||||
if (!IS_PRESSED && !keys_pressed) {
|
||||
// restore the state of left and right shift
|
||||
_kbfun_press_release(lshift_pressed, KEY_LeftShift);
|
||||
_kbfun_press_release(rshift_pressed, KEY_RightShift);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* [name]
|
||||
* Two keys => capslock
|
||||
|
|
|
@ -270,10 +270,14 @@
|
|||
|
||||
// Media key codes are not real scan codes, they must be translated to a 16
|
||||
// bit number by the consumer key key function
|
||||
#define MEDIAKEY_PLAY_PAUSE 0x00
|
||||
#define MEDIAKEY_STOP 0x01
|
||||
#define MEDIAKEY_PREV_TRACK 0x02
|
||||
#define MEDIAKEY_NEXT_TRACK 0x03
|
||||
#define MEDIAKEY_PLAY_PAUSE 0x00
|
||||
#define MEDIAKEY_STOP 0x01
|
||||
#define MEDIAKEY_PREV_TRACK 0x02
|
||||
#define MEDIAKEY_NEXT_TRACK 0x03
|
||||
#define MEDIAKEY_AUDIO_MUTE 0x04
|
||||
#define MEDIAKEY_AUDIO_VOL_UP 0x05
|
||||
#define MEDIAKEY_AUDIO_VOL_DOWN 0x06
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue