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
Index: e_kbd_int.c
===================================================================
--- e_kbd_int.c (revision 57681)
+++ e_kbd_int.c (working copy)
@@ -174,6 +174,8 @@
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) && (ky->tern_shift)) selected = 1;
+ if ((ki->layout.state & CAPSLOCK) && (ky->tern_capslock)) selected = 1;
if (selected)
{
if (!ky->selected)
@@ -351,6 +353,20 @@
_e_kbd_int_layout_state_update(ki);
return;
}
+ if (ky->tern_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));
@@ -574,6 +590,8 @@
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) && (ky->tern_shift)) selected = 1;
+ if ((ki->layout.state & CAPSLOCK) && (ky->tern_capslock)) selected = 1;
if (selected)
edje_object_signal_emit(o, "e,state,selected", "e");
if (!selected)
@@ -997,6 +1015,7 @@
st->out = eina_stringshare_add(str);
}
if (!strcmp(str, "is_shift")) ky->is_shift = 1;
+ if (!strcmp(str, "tern_shift")) ky->tern_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 tern_shift : 1;
unsigned char is_ctrl : 1;
unsigned char is_alt : 1;
unsigned char is_capslock : 1;
------------------------------------------------------------------------------
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