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,
dh

>
> tern_shift.patch
>
>
> 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

Reply via email to