Em 11-03-2011 10:24, Rui Miguel Silva Seabra escreveu:
Em 11-03-2011 09:47, Rui Miguel Silva Seabra escreveu:
Em 11-03-2011 04:02, Christopher Michael escreveu:
On 03/10/2011 06:49 PM, Rui Miguel Silva Seabra wrote:
Hi,
I'm completely unsure of this patch and haven't had the change of
testing it.
The desired behavior is to have a shit key that will alternate between
shift, capslock and then normal state.
This would allow a caps lock in the Default.kbd without adding another
virtual key.
I'm thinking of adding other special kinds of keys which will do things
like "change layout to keyboard type fubar" (rather than just
sliding up
on the keyboard).
Specially to dh, am I going in the right direction with this patch?
Rui
1) Thanks for the patch :)
2) I'm currently away from home with very limited 'net access (if any @
all sometimes) and don't have my comp with me, so I can't apply this and
test it (yet).
I should be back 'online' (hopefully) Saturday night/Sunday (monday @
the latest). I'll have a look @ this patch then.
Thanks,
Please look at this patch instead, as it has a bit operation bug (in my
changes) fixed.
Rui
My lil'bernie gave a few minutes to test at least compilation, THIS
attached version at least compiles.
Rui
Ok, the attached patch definitely works.
I alter Default.kbd because it's an optimal case where you want a multi
shift.
For it, you need capslock key definitions.
In the is_multi_shift key, I used some UTF-8 arrows to indicate what the
next state will be, if pressed.
How it works:
Only want one character in uppercase? Press once, type it, and go back
to normal.
Want to use uppercase? Press twice, go on writing.
Wnat to go back to lowercase? Press it again and there you go.
For now it only supports the standard states, but it should be possible
to extend into something like CaMeLcAsE or whatever, but I don't think
that's really an effort worth my time right now :)
May I commit or does anyone see any significant issue?
Rui
Index: e_kbd_int.c
===================================================================
--- e_kbd_int.c (revision 57681)
+++ e_kbd_int.c (working copy)
@@ -174,6 +174,7 @@
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_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 @@
}
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 @@
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 @@
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;
Index: e_kbd_int.h
===================================================================
--- e_kbd_int.h (revision 57681)
+++ e_kbd_int.h (working copy)
@@ -96,6 +96,7 @@
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;
Index: keyboards/Default.kbd
===================================================================
--- keyboards/Default.kbd (revision 57681)
+++ keyboards/Default.kbd (working copy)
@@ -14,86 +14,115 @@
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
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel