format code
This commit is contained in:
parent
d4e2e0a093
commit
3b1cc551e4
@ -21,6 +21,10 @@
|
|||||||
#include <config_ac.h>
|
#include <config_ac.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef XRDP_IBUS
|
||||||
|
#include "input.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "arch.h"
|
#include "arch.h"
|
||||||
#include "os_calls.h"
|
#include "os_calls.h"
|
||||||
#include "string_calls.h"
|
#include "string_calls.h"
|
||||||
@ -40,7 +44,6 @@
|
|||||||
#include "chansrv_config.h"
|
#include "chansrv_config.h"
|
||||||
#include "xrdp_sockets.h"
|
#include "xrdp_sockets.h"
|
||||||
#include "audin.h"
|
#include "audin.h"
|
||||||
#include "input.h"
|
|
||||||
|
|
||||||
#include "ms-rdpbcgr.h"
|
#include "ms-rdpbcgr.h"
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
static IBusBus *bus;
|
static IBusBus *bus;
|
||||||
static IBusEngine *g_engine;
|
static IBusEngine *g_engine;
|
||||||
// This is the engine name enabled before unicode engine enabled
|
/* This is the engine name enabled before unicode engine enabled */
|
||||||
static const gchar *ori_name;
|
static const gchar *ori_name;
|
||||||
static int id = 0;
|
static int id = 0;
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ xrdp_input_enable()
|
|||||||
|
|
||||||
if (ori_name)
|
if (ori_name)
|
||||||
{
|
{
|
||||||
// already enabled
|
/* already enabled */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ xrdp_input_enable()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remember user's input method, will switch back when disconnect
|
/* remember user's input method, will switch back when disconnect */
|
||||||
ori_name = name;
|
ori_name = name;
|
||||||
|
|
||||||
if (!ibus_bus_set_global_engine(bus, "XrdpIme"))
|
if (!ibus_bus_set_global_engine(bus, "XrdpIme"))
|
||||||
@ -115,7 +115,7 @@ gboolean engine_process_key_event_cb(IBusEngine *engine,
|
|||||||
guint keycode,
|
guint keycode,
|
||||||
guint state)
|
guint state)
|
||||||
{
|
{
|
||||||
// Pass the keyboard event to system
|
/* Pass the keyboard event to system */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,14 +160,14 @@ xrdp_input_main_loop()
|
|||||||
|
|
||||||
ibus_factory_add_engine(factory, "XrdpIme", IBUS_TYPE_ENGINE);
|
ibus_factory_add_engine(factory, "XrdpIme", IBUS_TYPE_ENGINE);
|
||||||
|
|
||||||
component = ibus_component_new("org.freedesktop.IBus.XrdpIme", // name
|
component = ibus_component_new("org.freedesktop.IBus.XrdpIme", /* name */
|
||||||
"Xrdp input method", // description
|
"Xrdp input method", /* description */
|
||||||
"1.1", // version
|
"1.1", /* version */
|
||||||
"MIT", // license
|
"MIT", /* license */
|
||||||
"seflerZ", // author
|
"seflerZ", /* author */
|
||||||
"fake_page", // homepage
|
"default", /* homepage */
|
||||||
"/exec/fake_path", // cmd
|
"default", /* cmd */
|
||||||
"xrdpime"); // text domain
|
"xrdpime"); /* text domain */
|
||||||
|
|
||||||
desc = ibus_engine_desc_new("XrdpIme",
|
desc = ibus_engine_desc_new("XrdpIme",
|
||||||
"unicode input method for xrdp",
|
"unicode input method for xrdp",
|
||||||
@ -175,8 +175,8 @@ xrdp_input_main_loop()
|
|||||||
"unicode",
|
"unicode",
|
||||||
"MIT",
|
"MIT",
|
||||||
"seflerZ",
|
"seflerZ",
|
||||||
"fake_icon.png",
|
"default", /* icon */
|
||||||
"default"); // layout
|
"default"); /* layout */
|
||||||
|
|
||||||
ibus_component_add_engine(component, desc);
|
ibus_component_add_engine(component, desc);
|
||||||
ibus_bus_register_component(bus, component);
|
ibus_bus_register_component(bus, component);
|
||||||
@ -213,16 +213,15 @@ xrdp_input_unicode_destory()
|
|||||||
int
|
int
|
||||||
xrdp_input_unicode_init()
|
xrdp_input_unicode_init()
|
||||||
{
|
{
|
||||||
int retry = 10;
|
|
||||||
|
|
||||||
if (bus)
|
if (bus)
|
||||||
{
|
{
|
||||||
// Already initialized, just re-enable it
|
/* Already initialized, just re-enable it */
|
||||||
xrdp_input_enable();
|
xrdp_input_enable();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sleep(5);
|
/* Wait becasue ibus daemon may not be ready in first login. Do we have a flag to avoid busy waiting? */
|
||||||
|
sleep(3);
|
||||||
|
|
||||||
LOG(LOG_LEVEL_INFO, "xrdp_ibus_init: Initializing the iBus engine");
|
LOG(LOG_LEVEL_INFO, "xrdp_ibus_init: Initializing the iBus engine");
|
||||||
ibus_init();
|
ibus_init();
|
||||||
@ -239,20 +238,9 @@ xrdp_input_unicode_init()
|
|||||||
|
|
||||||
tc_thread_create(xrdp_input_main_loop, NULL);
|
tc_thread_create(xrdp_input_main_loop, NULL);
|
||||||
|
|
||||||
// session may not be ready, repeat until input method enabled
|
if (!ibus_bus_get_global_engine(bus))
|
||||||
while (retry--)
|
|
||||||
{
|
{
|
||||||
if (ibus_bus_get_global_engine(bus))
|
LOG(LOG_LEVEL_ERROR, "xrdp_ibus_init: failed to get origin global engine");
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (retry == 0)
|
|
||||||
{
|
|
||||||
LOG(LOG_LEVEL_ERROR, "xrdp_ibus_init: failed to connect to ibus");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,8 +42,11 @@ static int
|
|||||||
xrdp_mm_chansrv_connect(struct xrdp_mm *self, const char *port);
|
xrdp_mm_chansrv_connect(struct xrdp_mm *self, const char *port);
|
||||||
static void
|
static void
|
||||||
xrdp_mm_connect_sm(struct xrdp_mm *self);
|
xrdp_mm_connect_sm(struct xrdp_mm *self);
|
||||||
|
|
||||||
|
#ifdef XRDP_IBUS
|
||||||
static int
|
static int
|
||||||
xrdp_mm_send_unicode_shutdown(struct xrdp_mm *self, struct trans *trans);
|
xrdp_mm_send_unicode_shutdown(struct xrdp_mm *self, struct trans *trans);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
struct xrdp_mm *
|
struct xrdp_mm *
|
||||||
@ -148,8 +151,10 @@ xrdp_mm_delete(struct xrdp_mm *self)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XRDP_IBUS
|
||||||
/* shutdown input method */
|
/* shutdown input method */
|
||||||
xrdp_mm_send_unicode_shutdown(self, self->chan_trans);
|
xrdp_mm_send_unicode_shutdown(self, self->chan_trans);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* free any module stuff */
|
/* free any module stuff */
|
||||||
xrdp_mm_module_cleanup(self);
|
xrdp_mm_module_cleanup(self);
|
||||||
@ -662,7 +667,7 @@ xrdp_mm_trans_process_channel_data(struct xrdp_mm *self, struct stream *s)
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XRDP_IBUS
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
static int
|
static int
|
||||||
xrdp_mm_send_unicode_shutdown(struct xrdp_mm *self, struct trans *trans)
|
xrdp_mm_send_unicode_shutdown(struct xrdp_mm *self, struct trans *trans)
|
||||||
@ -701,6 +706,27 @@ xrdp_mm_send_unicode_setup(struct xrdp_mm *self, struct trans *trans)
|
|||||||
return trans_write_copy(self->chan_trans);
|
return trans_write_copy(self->chan_trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
int xrdp_mm_send_unicode_to_chansrv(struct xrdp_mm *self,
|
||||||
|
int key_down,
|
||||||
|
char32_t unicode)
|
||||||
|
{
|
||||||
|
struct stream *s = trans_get_out_s(self->chan_trans, 8192);
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
out_uint32_le(s, 0); /* version */
|
||||||
|
out_uint32_le(s, 24); /* size */
|
||||||
|
out_uint32_le(s, 23); /* msg id */
|
||||||
|
out_uint32_le(s, 16); /* size */
|
||||||
|
out_uint32_le(s, key_down);
|
||||||
|
out_uint32_le(s, unicode);
|
||||||
|
s_mark_end(s);
|
||||||
|
return trans_write_copy(self->chan_trans);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* returns error
|
/* returns error
|
||||||
process rail create window order */
|
process rail create window order */
|
||||||
@ -2147,26 +2173,6 @@ xrdp_mm_up_and_running(struct xrdp_mm *self)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
int xrdp_mm_send_unicode_to_chansrv(struct xrdp_mm *self,
|
|
||||||
int key_down,
|
|
||||||
char32_t unicode)
|
|
||||||
{
|
|
||||||
struct stream *s = trans_get_out_s(self->chan_trans, 8192);
|
|
||||||
if (s == NULL)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
out_uint32_le(s, 0); /* version */
|
|
||||||
out_uint32_le(s, 24); /* size */
|
|
||||||
out_uint32_le(s, 23); /* msg id */
|
|
||||||
out_uint32_le(s, 16); /* size */
|
|
||||||
out_uint32_le(s, key_down);
|
|
||||||
out_uint32_le(s, unicode);
|
|
||||||
s_mark_end(s);
|
|
||||||
return trans_write_copy(self->chan_trans);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* open response from client going to channel server */
|
/* open response from client going to channel server */
|
||||||
static int
|
static int
|
||||||
@ -3034,6 +3040,7 @@ xrdp_mm_chansrv_connect(struct xrdp_mm *self, const char *port)
|
|||||||
"connect successful");
|
"connect successful");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XRDP_IBUS
|
||||||
/* if client supports unicode input, initialize the input method */
|
/* if client supports unicode input, initialize the input method */
|
||||||
if (1)
|
if (1)
|
||||||
{
|
{
|
||||||
@ -3049,6 +3056,7 @@ xrdp_mm_chansrv_connect(struct xrdp_mm *self, const char *port)
|
|||||||
// self->wm->client_info->unicode_input = 0;
|
// self->wm->client_info->unicode_input = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user