summaryrefslogtreecommitdiffstats
path: root/recipes/e17/e-wm/illume-flow.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/e17/e-wm/illume-flow.patch')
-rw-r--r--recipes/e17/e-wm/illume-flow.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/recipes/e17/e-wm/illume-flow.patch b/recipes/e17/e-wm/illume-flow.patch
new file mode 100644
index 0000000000..df719cc8ea
--- /dev/null
+++ b/recipes/e17/e-wm/illume-flow.patch
@@ -0,0 +1,76 @@
+Index: e/src/modules/illume/e_kbd_int.c
+===================================================================
+--- e/src/modules/illume/e_kbd_int.c (revision 1)
++++ e/src/modules/illume/e_kbd_int.c (working copy)
+@@ -440,6 +440,16 @@
+ static void
+ _e_kbd_int_stroke_handle(E_Kbd_Int *ki, int dir)
+ {
++ /* If the keyboard direction is RTL switch dir 3 and 1
++ * i.e, make forward backwards and the other way around */
++ if (ki->layout.direction == E_KBD_INT_DIRECTION_RTL)
++ {
++ if (dir == 3)
++ dir = 1;
++ else if (dir == 1)
++ dir = 3;
++ }
++
+ if (dir == 4) // up
+ {
+ _e_kbd_int_layout_next(ki);
+@@ -897,6 +907,10 @@
+ if (!f) return;
+ ki->layout.directory = ecore_file_dir_get(layout);
+ ki->layout.file = eina_stringshare_add(layout);
++
++ /* Make the default direction LTR */
++ ki->layout.direction = E_KBD_INT_DIRECTION_LTR;
++
+ while (fgets(buf, sizeof(buf), f))
+ {
+ int len;
+@@ -924,6 +938,17 @@
+ sscanf(buf, "%*s %i\n", &(ki->layout.fuzz));
+ continue;
+ }
++ if (!strcmp(str, "direction"))
++ {
++ char direction[4];
++ sscanf(buf, "%*s %3s\n", direction);
++ /* If rtl mark as rtl, otherwise make it ltr */
++ if (!strcmp(direction, "rtl"))
++ ki->layout.direction = E_KBD_INT_DIRECTION_RTL;
++ else
++ ki->layout.direction = E_KBD_INT_DIRECTION_LTR;
++ continue;
++ }
+ if (!strcmp(str, "key"))
+ {
+ ky = calloc(1, sizeof(E_Kbd_Int_Key));
+Index: e/src/modules/illume/e_kbd_int.h
+===================================================================
+--- e/src/modules/illume/e_kbd_int.h (revision 1)
++++ e/src/modules/illume/e_kbd_int.h (working copy)
+@@ -15,6 +15,13 @@
+ E_KBD_INT_TYPE_PASSWORD = (1 << 6)
+ } E_Kbd_Int_Type;
+
++/* The natural text direction of the keyboard */
++typedef enum _E_kbd_Int_Direction
++{
++ E_KBD_INT_DIRECTION_LTR = (1 << 0),
++ E_KBD_INT_DIRECTION_RTL = (1 << 1)
++} E_Kbd_Int_Direction;
++
+ typedef struct _E_Kbd_Int E_Kbd_Int;
+ typedef struct _E_Kbd_Int_Key E_Kbd_Int_Key;
+ typedef struct _E_Kbd_Int_Key_State E_Kbd_Int_Key_State;
+@@ -34,6 +41,7 @@
+ const char *file;
+ int w, h;
+ int fuzz;
++ int direction;
+ E_Kbd_Int_Type type;
+ Eina_List *keys;
+ E_Kbd_Int_Key *pressed;