1998e45ac6d6f69b93a76b8eb33aae7c9e046712
[framework/uifw/e17.git] / src / modules / illume-keyboard / e_kbd_int.h
1 #ifndef E_KBD_INT_H
2 #define E_KBD_INT_H
3
4 #include "e_kbd_buf.h"
5
6 typedef enum _E_Kbd_Int_Type
7 {
8    E_KBD_INT_TYPE_UNKNOWN = 0,
9    E_KBD_INT_TYPE_ALPHA = (1 << 0),
10    E_KBD_INT_TYPE_NUMERIC = (1 << 1),
11    E_KBD_INT_TYPE_PIN = (1 << 2),
12    E_KBD_INT_TYPE_PHONE_NUMBER = (1 << 3),
13    E_KBD_INT_TYPE_HEX = (1 << 4),
14    E_KBD_INT_TYPE_TERMINAL = (1 << 5),
15    E_KBD_INT_TYPE_PASSWORD = (1 << 6),
16    E_KBD_INT_TYPE_IP = (1 << 7),
17    E_KBD_INT_TYPE_HOST = (1 << 8),
18    E_KBD_INT_TYPE_FILE = (1 << 9),
19    E_KBD_INT_TYPE_URL = (1 << 10),
20    E_KBD_INT_TYPE_KEYPAD = (1 << 11),
21    E_KBD_INT_TYPE_J2ME = (1 << 12)
22 } E_Kbd_Int_Type;
23
24 /* The natural text direction of the keyboard */
25 typedef enum _E_kbd_Int_Direction
26 {
27    E_KBD_INT_DIRECTION_LTR = (1 << 0),
28    E_KBD_INT_DIRECTION_RTL = (1 << 1)
29 } E_Kbd_Int_Direction;
30
31 typedef struct _E_Kbd_Int           E_Kbd_Int;
32 typedef struct _E_Kbd_Int_Key       E_Kbd_Int_Key;
33 typedef struct _E_Kbd_Int_Key_State E_Kbd_Int_Key_State;
34 typedef struct _E_Kbd_Int_Layout    E_Kbd_Int_Layout;
35 typedef struct _E_Kbd_Int_Match     E_Kbd_Int_Match;
36
37 struct _E_Kbd_Int
38 {
39    E_Win               *win;
40    const char          *themedir, *syskbds, *sysdicts;
41    Evas_Object         *base_obj, *layout_obj, *event_obj, *icon_obj, *box_obj;
42    Eina_List           *layouts;
43    Eina_List           *matches;
44    Ecore_Event_Handler *client_message_handler;
45    Ecore_Event_Handler *kbd_move_hdl;
46    struct {
47       char             *directory;
48       const char       *file;
49       int               w, h;
50       int               fuzz;
51       int               direction;
52       E_Kbd_Int_Type    type;
53       Eina_List        *keys;
54       E_Kbd_Int_Key    *pressed;
55       int               state;
56    } layout;
57    struct {
58       Evas_Coord        x, y, cx, cy;
59       int               lx, ly, clx, cly;
60       Ecore_Timer      *hold_timer;
61       unsigned char     down : 1;
62       unsigned char     stroke : 1;
63       unsigned char     zoom : 1;
64    } down;
65    struct {
66       E_Popup          *popup;
67       Evas_Object      *base_obj, *ilist_obj;
68    } layoutlist;
69    struct {
70       E_Popup          *popup;
71       Evas_Object      *base_obj, *ilist_obj;
72       Eina_List        *matches;
73    } matchlist;
74    struct {
75       E_Popup          *popup;
76       Evas_Object      *base_obj, *ilist_obj;
77       Eina_List        *matches;
78    } dictlist;
79    struct {
80       E_Popup          *popup;
81       Evas_Object      *base_obj, *layout_obj, *sublayout_obj;
82       E_Kbd_Int_Key    *pressed;
83    } zoomkey;
84                      
85    E_Kbd_Buf           *kbuf;
86 };
87
88 struct _E_Kbd_Int_Key
89 {
90    int x, y, w, h;
91    
92    Eina_List *states;
93    Evas_Object *obj, *zoom_obj, *icon_obj, *zoom_icon_obj;
94
95    unsigned char pressed : 1;
96    unsigned char selected : 1;
97    
98    unsigned char is_shift : 1;
99    unsigned char is_multi_shift : 1;
100    unsigned char is_ctrl : 1;
101    unsigned char is_alt : 1;
102    unsigned char is_altgr : 1;
103    unsigned char is_capslock : 1;
104 };
105
106 struct _E_Kbd_Int_Key_State
107 {
108    int state;
109    const char *label, *icon;
110    const char *out;
111 };
112
113 struct _E_Kbd_Int_Layout
114 {
115    const char *path;
116    const char *dir;
117    const char *icon;
118    const char *name;
119    int type;
120 };
121
122 struct _E_Kbd_Int_Match
123 {
124    E_Kbd_Int   *ki;
125    const char  *str;
126    Evas_Object *obj;
127 };
128
129 EAPI E_Kbd_Int *e_kbd_int_new(const char *themedir, const char *syskbds, const char *sysdicts);
130 EAPI void e_kbd_int_free(E_Kbd_Int *ki);
131
132 #endif