diff --git a/src/modules/illume-keyboard/e_kbd_int.c b/src/modules/illume-keyboard/e_kbd_int.c index 60154a3b4..59f9f18bf 100644 --- a/src/modules/illume-keyboard/e_kbd_int.c +++ b/src/modules/illume-keyboard/e_kbd_int.c @@ -174,6 +174,7 @@ _e_kbd_int_layout_state_update(E_Kbd_Int *ki) if ((ki->layout.state & CTRL) && (ky->is_ctrl)) selected = 1; if ((ki->layout.state & ALT) && (ky->is_alt)) selected = 1; if ((ki->layout.state & CAPSLOCK) && (ky->is_capslock)) selected = 1; + if ((ki->layout.state & (SHIFT | CAPSLOCK)) && (ky->is_multi_shift)) selected = 1; if (selected) { if (!ky->selected) @@ -351,6 +352,24 @@ _e_kbd_int_key_press_handle(E_Kbd_Int *ki, E_Kbd_Int_Key *ky) _e_kbd_int_layout_state_update(ki); return; } + if (ky->is_multi_shift) + { + if (ki->layout.state & SHIFT) + { + ki->layout.state &= (~(SHIFT)); + ki->layout.state |= CAPSLOCK; + } + else if (ki->layout.state & CAPSLOCK) + { + ki->layout.state &= (~(CAPSLOCK)); + } + else + { + ki->layout.state |= SHIFT; + } + _e_kbd_int_layout_state_update(ki); + return; + } if (ky->is_ctrl) { if (ki->layout.state & CTRL) ki->layout.state &= (~(CTRL)); @@ -426,7 +445,7 @@ _e_kbd_int_key_press_handle(E_Kbd_Int *ki, E_Kbd_Int_Key *ky) } if (ki->layout.state & (SHIFT | CTRL | ALT)) { - ki->layout.state &= (~(SHIFT | CTRL | ALT)); + if( !(ky->is_multi_shift) ) ki->layout.state &= (~(SHIFT | CTRL | ALT)); _e_kbd_int_layout_state_update(ki); } } @@ -574,6 +593,7 @@ _e_kbd_int_zoomkey_up(E_Kbd_Int *ki) if ((ki->layout.state & CTRL) && (ky->is_ctrl)) selected = 1; if ((ki->layout.state & ALT) && (ky->is_alt)) selected = 1; if ((ki->layout.state & CAPSLOCK) && (ky->is_capslock)) selected = 1; + if ((ki->layout.state & (SHIFT|CAPSLOCK)) && (ky->is_multi_shift)) selected = 1; if (selected) edje_object_signal_emit(o, "e,state,selected", "e"); if (!selected) @@ -997,6 +1017,7 @@ _e_kbd_int_layout_parse(E_Kbd_Int *ki, const char *layout) st->out = eina_stringshare_add(str); } if (!strcmp(str, "is_shift")) ky->is_shift = 1; + if (!strcmp(str, "is_multi_shift")) ky->is_multi_shift = 1; if (!strcmp(str, "is_ctrl")) ky->is_ctrl = 1; if (!strcmp(str, "is_alt")) ky->is_alt = 1; if (!strcmp(str, "is_capslock")) ky->is_capslock = 1; diff --git a/src/modules/illume-keyboard/e_kbd_int.h b/src/modules/illume-keyboard/e_kbd_int.h index b48ffcb9f..23feaa91a 100644 --- a/src/modules/illume-keyboard/e_kbd_int.h +++ b/src/modules/illume-keyboard/e_kbd_int.h @@ -96,6 +96,7 @@ struct _E_Kbd_Int_Key unsigned char selected : 1; unsigned char is_shift : 1; + unsigned char is_multi_shift : 1; unsigned char is_ctrl : 1; unsigned char is_alt : 1; unsigned char is_capslock : 1; diff --git a/src/modules/illume-keyboard/keyboards/Default.kbd b/src/modules/illume-keyboard/keyboards/Default.kbd index cf37fa88e..ba57e4a99 100644 --- a/src/modules/illume-keyboard/keyboards/Default.kbd +++ b/src/modules/illume-keyboard/keyboards/Default.kbd @@ -14,86 +14,115 @@ icon alpha.png key 5 5 10 10 normal q "q" shift Q "Q" + capslock Q "Q" key 15 5 10 10 normal w "w" shift W "W" + capslock W "W" key 25 5 10 10 normal e "e" shift E "E" + capslock E "E" key 35 5 10 10 normal r "r" shift R "R" + capslock R "R" key 45 5 10 10 normal t "t" shift T "T" + capslock T "T" key 55 5 10 10 normal y "y" shift Y "Y" + capslock Y "Y" key 65 5 10 10 normal u "u" shift U "U" + capslock U "U" key 75 5 10 10 normal i "i" shift I "I" + capslock I "I" key 85 5 10 10 normal o "o" shift O "O" + capslock O "O" key 95 5 10 10 normal p "p" shift P "P" + capslock P "P" key 10 15 10 10 normal a "a" shift A "A" + capslock A "A" key 20 15 10 10 normal s "s" shift S "S" + capslock S "S" key 30 15 10 10 normal d "d" shift D "D" + capslock D "D" key 40 15 10 10 normal f "f" shift F "F" + capslock F "F" key 50 15 10 10 normal g "g" shift G "G" + capslock G "G" key 60 15 10 10 normal h "h" shift H "H" + capslock H "H" key 70 15 10 10 normal j "j" shift J "J" + capslock J "J" key 80 15 10 10 normal k "k" shift K "K" + capslock K "K" key 90 15 10 10 normal l "l" shift L "L" + capslock L "L" key 15 25 10 10 normal z "z" shift Z "Z" + capslock Z "Z" key 25 25 10 10 normal x "x" shift X "X" + capslock X "X" key 35 25 10 10 normal c "c" shift C "C" + capslock C "C" key 45 25 10 10 normal v "v" shift V "V" + capslock V "V" key 55 25 10 10 normal b "b" shift B "B" + capslock B "B" key 65 25 10 10 normal n "n" shift N "N" + capslock N "N" key 75 25 10 10 normal m "m" shift M "M" + capslock M "M" key 105 25 10 10 - normal shift.png - is_shift +# normal shift.png + normal ↑ + shift ⇈ + capslock ⇊ + is_multi_shift key 115 5 10 10 normal . period