Added volume media keys, fixed workman-p layout, added two todo's

f13
Jacob McIntosh 2014-03-27 07:15:02 -05:00
parent 84a6d90a7b
commit b1c85b73fe
5 changed files with 74 additions and 18 deletions

View File

@ -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(

View File

@ -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 */
};
// ----------------------------------------------------------------------------

View File

@ -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);

View File

@ -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

View File

@ -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
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------