Skip to content

Commit

Permalink
add Google Japanese IME mapping (#153)
Browse files Browse the repository at this point in the history
Co-authored-by: Hideyuki Nagase <hideyukn@ntdev.microsoft.com>
  • Loading branch information
hideyukn88 and Hideyuki Nagase committed Sep 21, 2023
1 parent ad95f13 commit 1c19fc5
Showing 1 changed file with 46 additions and 7 deletions.
53 changes: 46 additions & 7 deletions libweston/backend-rdp/rdprail.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,17 +851,40 @@ rail_client_LangbarInfo(RailServerContext *context,
}

/* GUID_CHTIME_BOPOMOFO is not defined in FreeRDP */
#ifndef GUID_CHTIME_BOPOMOFO
#define GUID_CHTIME_BOPOMOFO \
{ \
0xB115690A, 0xEA02, 0x48D5, 0xA2, 0x31, 0xE3, 0x57, 0x8D, 0x2F, 0xDF, 0x80 \
}
#endif

/* Define GUID for Google IME */
#define GUID_GOOGLEIME_JPN \
{ \
0xd5a86fd5, 0x5308, 0x47ea, 0xad, 0x16, 0x9c, 0x4e, 0xb1, 0x60, 0xec, 0x3c \
}

#define GUID_PROFILE_GOOGLEIME_JPN \
{ \
0x773eb24e, 0xca1d, 0x4b1b, 0xb4, 0x20, 0xfa, 0x98, 0x5b, 0xb0, 0xb8, 0x0d \
}

static void
rdp_debug_raw_guid_string(struct rdp_backend *b, const GUID *guid)
{
rdp_debug_continue(b, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
guid->Data1, guid->Data2, guid->Data3,
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
}

static char *
languageGuid_to_string(const GUID *guid)
{
static_assert(sizeof(struct lang_GUID) == sizeof(GUID));
static const struct lang_GUID c_GUID_NULL = GUID_NULL;
static const struct lang_GUID c_GUID_JPNIME = GUID_MSIME_JPN;
static const struct lang_GUID c_GUID_MS_JPNIME = GUID_MSIME_JPN;
static const struct lang_GUID c_GUID_GOOGLE_JPNIME = GUID_GOOGLEIME_JPN;
static const struct lang_GUID c_GUID_KORIME = GUID_MSIME_KOR;
static const struct lang_GUID c_GUID_CHSIME = GUID_CHSIME;
static const struct lang_GUID c_GUID_CHTIME = GUID_CHTIME;
Expand All @@ -873,13 +896,16 @@ languageGuid_to_string(const GUID *guid)
static const struct lang_GUID c_GUID_PROFILE_PINYIN = GUID_PROFILE_PINYIN;
static const struct lang_GUID c_GUID_PROFILE_SIMPLEFAST = GUID_PROFILE_SIMPLEFAST;
static const struct lang_GUID c_GUID_PROFILE_MSIME_JPN = GUID_GUID_PROFILE_MSIME_JPN;
static const struct lang_GUID c_GUID_PROFILE_GOOGLEIME_JPN = GUID_PROFILE_GOOGLEIME_JPN;
static const struct lang_GUID c_GUID_PROFILE_MSIME_KOR = GUID_PROFILE_MSIME_KOR;

RPC_STATUS rpc_status;
if (UuidEqual(guid, (GUID *)&c_GUID_NULL, &rpc_status))
return "GUID_NULL";
else if (UuidEqual(guid, (GUID *)&c_GUID_JPNIME, &rpc_status))
return "GUID_JPNIME";
else if (UuidEqual(guid, (GUID *)&c_GUID_MS_JPNIME, &rpc_status))
return "GUID_MS_JPNIME";
else if (UuidEqual(guid, (GUID *)&c_GUID_GOOGLE_JPNIME, &rpc_status))
return "GUID_GOOGLE_JPNIME";
else if (UuidEqual(guid, (GUID *)&c_GUID_KORIME, &rpc_status))
return "GUID_KORIME";
else if (UuidEqual(guid, (GUID *)&c_GUID_CHSIME, &rpc_status))
Expand All @@ -902,6 +928,8 @@ languageGuid_to_string(const GUID *guid)
return "GUID_PROFILE_SIMPLEFAST";
else if (UuidEqual(guid, (GUID *)&c_GUID_PROFILE_MSIME_JPN, &rpc_status))
return "GUID_PROFILE_MSIME_JPN";
else if (UuidEqual(guid, (GUID *)&c_GUID_PROFILE_GOOGLEIME_JPN, &rpc_status))
return "GUID_PROFILE_GOOGLEIME_JPN";
else if (UuidEqual(guid, (GUID *)&c_GUID_PROFILE_MSIME_KOR, &rpc_status))
return "GUID_PROFILE_MSIME_KOR";
else
Expand Down Expand Up @@ -940,10 +968,17 @@ rail_client_LanguageImeInfo_callback(bool freeOnly, void *arg)
languageImeInfo->ProfileType, s);
rdp_debug(b, "Client: LanguageImeInfo: LanguageID: 0x%x\n",
languageImeInfo->LanguageID);
rdp_debug(b, "Client: LanguageImeInfo: LanguageProfileCLSID: %s\n",

rdp_debug(b, "Client: LanguageImeInfo: LanguageProfileCLSID: %s : ",
languageGuid_to_string(&languageImeInfo->LanguageProfileCLSID));
rdp_debug(b, "Client: LanguageImeInfo: ProfileGUID: %s\n",
rdp_debug_raw_guid_string(b, &languageImeInfo->LanguageProfileCLSID);
rdp_debug_continue(b, "\n");

rdp_debug(b, "Client: LanguageImeInfo: ProfileGUID: %s : ",
languageGuid_to_string(&languageImeInfo->ProfileGUID));
rdp_debug_raw_guid_string(b, &languageImeInfo->ProfileGUID);
rdp_debug_continue(b, "\n");

rdp_debug(b, "Client: LanguageImeInfo: KeyboardLayout: 0x%x\n",
languageImeInfo->KeyboardLayout);

Expand All @@ -953,15 +988,19 @@ rail_client_LanguageImeInfo_callback(bool freeOnly, void *arg)
} else if (languageImeInfo->ProfileType == TF_PROFILETYPE_INPUTPROCESSOR) {
static_assert(sizeof(struct lang_GUID) == sizeof(GUID));

static const struct lang_GUID c_GUID_JPNIME = GUID_MSIME_JPN;
static const struct lang_GUID c_GUID_MS_JPNIME = GUID_MSIME_JPN;
static const struct lang_GUID c_GUID_GOOGLE_JPNIME = GUID_GOOGLEIME_JPN;
static const struct lang_GUID c_GUID_KORIME = GUID_MSIME_KOR;
static const struct lang_GUID c_GUID_CHSIME = GUID_CHSIME;
static const struct lang_GUID c_GUID_CHTIME = GUID_CHTIME;
static const struct lang_GUID c_GUID_CHTIME_BOPOMOFO = GUID_CHTIME_BOPOMOFO;

RPC_STATUS rpc_status;
if (UuidEqual(&languageImeInfo->LanguageProfileCLSID,
(GUID *)&c_GUID_JPNIME, &rpc_status))
(GUID *)&c_GUID_MS_JPNIME, &rpc_status))
new_keyboard_layout = KBD_JAPANESE;
else if (UuidEqual(&languageImeInfo->LanguageProfileCLSID,
(GUID *)&c_GUID_GOOGLE_JPNIME, &rpc_status))
new_keyboard_layout = KBD_JAPANESE;
else if (UuidEqual(&languageImeInfo->LanguageProfileCLSID,
(GUID *)&c_GUID_KORIME, &rpc_status))
Expand Down

0 comments on commit 1c19fc5

Please sign in to comment.