forked from enlightenment/efl
parent
a1046bb11e
commit
ca8b5a99d2
|
@ -985,6 +985,20 @@ typedef enum _Ecore_X_Window_Configure_Mask {
|
|||
ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE = (1 << 6)
|
||||
} Ecore_X_Window_Configure_Mask;
|
||||
|
||||
typedef enum _Ecore_X_Virtual_Keyboard_State {
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_UNKNOWN,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_OFF,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_ON,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_ALPHA,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_NUMERIC,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_PIN,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_PHONE_NUMBER,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_HEX,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_TERMINAL,
|
||||
ECORE_X_VIRTUAL_KEYOBARD_STATE_PASSWORD
|
||||
} Ecore_X_Virtual_Keyboard_State;
|
||||
|
||||
|
||||
/* Window layer constants */
|
||||
#define ECORE_X_WINDOW_LAYER_BELOW 2
|
||||
#define ECORE_X_WINDOW_LAYER_NORMAL 4
|
||||
|
@ -1493,7 +1507,12 @@ EAPI void ecore_x_netwm_desktop_request_send(Ecore_X_Window win,
|
|||
|
||||
EAPI void ecore_x_e_init(void);
|
||||
EAPI void ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
|
||||
|
||||
EAPI void ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, int is_keyboard);
|
||||
EAPI int ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
|
||||
EAPI void ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
|
||||
EAPI Ecore_X_Virtual_Keyboard_State ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
|
||||
EAPI void ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
|
||||
|
||||
|
||||
EAPI void ecore_x_xinerama_query_screens_prefetch(void);
|
||||
EAPI void ecore_x_xinerama_query_screens_fetch(void);
|
||||
|
|
|
@ -180,4 +180,19 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_PRIMARY;
|
|||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_SECONDARY;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD;
|
||||
|
||||
/* currenly E specific virtual keyboard extension, aim to submit to netwm spec
|
||||
* later */
|
||||
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
|
||||
|
||||
#endif /* _ECORE_X_ATOMS_H */
|
||||
|
|
|
@ -202,3 +202,18 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_SELECTION_CLIPBOARD = 0;
|
|||
EAPI Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_PRIMARY = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_SECONDARY = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD = 0;
|
||||
|
||||
/* currenly E specific virtual keyboard extension, aim to submit to netwm spec
|
||||
* later */
|
||||
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER= 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD = 0;
|
||||
|
|
|
@ -176,7 +176,19 @@ _ecore_x_atoms_init(void)
|
|||
{ "SECONDARY", &ECORE_X_ATOM_SELECTION_CLIPBOARD },
|
||||
{ "_ECORE_SELECTION_PRIMARY", &ECORE_X_ATOM_SELECTION_PROP_PRIMARY },
|
||||
{ "_ECORE_SELECTION_SECONDARY", &ECORE_X_ATOM_SELECTION_PROP_SECONDARY },
|
||||
{ "_ECORE_SELECTION_CLIPBOARD", &ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD }
|
||||
{ "_ECORE_SELECTION_CLIPBOARD", &ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD },
|
||||
|
||||
{ "_E_VIRTUAL_KEYBOARD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD },
|
||||
{ "_E_VIRTUAL_KEYBOARD_STATE", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE },
|
||||
{ "_E_VIRTUAL_KEYBOARD_ON", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON },
|
||||
{ "_E_VIRTUAL_KEYBOARD_OFF", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF },
|
||||
{ "_E_VIRTUAL_KEYBOARD_ALPHA", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA },
|
||||
{ "_E_VIRTUAL_KEYBOARD_NUMERIC", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC },
|
||||
{ "_E_VIRTUAL_KEYBOARD_PIN", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN },
|
||||
{ "_E_VIRTUAL_KEYBOARD_PHONE_NUMBER", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER },
|
||||
{ "_E_VIRTUAL_KEYBOARD_HEX", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX },
|
||||
{ "_E_VIRTUAL_KEYBOARD_TERMINAL", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL },
|
||||
{ "_E_VIRTUAL_KEYBOARD_PASSWORD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD }
|
||||
};
|
||||
Atom *atoms;
|
||||
char **names;
|
||||
|
|
|
@ -26,3 +26,85 @@ ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb)
|
|||
frames[3] = fb;
|
||||
ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, int is_keyboard)
|
||||
{
|
||||
ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
|
||||
&is_keyboard, 1);
|
||||
}
|
||||
|
||||
EAPI int
|
||||
ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD, &val, 1))
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
static Ecore_X_Virtual_Keyboard_State
|
||||
_ecore_x_e_vkbd_state_get(Ecore_X_Atom atom)
|
||||
{
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON) return ECORE_X_VIRTUAL_KEYOBARD_STATE_ON;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF) return ECORE_X_VIRTUAL_KEYOBARD_STATE_OFF;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA) return ECORE_X_VIRTUAL_KEYOBARD_STATE_ALPHA;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC) return ECORE_X_VIRTUAL_KEYOBARD_STATE_NUMERIC;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN) return ECORE_X_VIRTUAL_KEYOBARD_STATE_PIN;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER) return ECORE_X_VIRTUAL_KEYOBARD_STATE_PHONE_NUMBER;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX) return ECORE_X_VIRTUAL_KEYOBARD_STATE_HEX;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL) return ECORE_X_VIRTUAL_KEYOBARD_STATE_TERMINAL;
|
||||
if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD) return ECORE_X_VIRTUAL_KEYOBARD_STATE_PASSWORD;
|
||||
return ECORE_X_VIRTUAL_KEYOBARD_STATE_UNKNOWN;
|
||||
}
|
||||
|
||||
static Ecore_X_Atom
|
||||
_ecore_x_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_OFF: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_ON: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_ALPHA: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_NUMERIC: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_PIN: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_PHONE_NUMBER: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_HEX: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_TERMINAL: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
|
||||
case ECORE_X_VIRTUAL_KEYOBARD_STATE_PASSWORD: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
|
||||
default: return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
|
||||
{
|
||||
Ecore_X_Atom atom = 0;
|
||||
|
||||
atom = _ecore_x_e_vkbd_atom_get(state);
|
||||
ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
|
||||
&atom, 1);
|
||||
}
|
||||
|
||||
EAPI Ecore_X_Virtual_Keyboard_State
|
||||
ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
|
||||
{
|
||||
Ecore_X_Atom atom;
|
||||
int num;
|
||||
|
||||
if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
|
||||
&atom, 1))
|
||||
return ECORE_X_VIRTUAL_KEYOBARD_STATE_UNKNOWN;
|
||||
return _ecore_x_e_vkbd_state_get(atom);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
|
||||
{
|
||||
ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
|
||||
ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
|
||||
_ecore_x_e_vkbd_atom_get(state),
|
||||
0, 0, 0, 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue