|
Packit Service |
1d8f1c |
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
|
|
Packit Service |
1d8f1c |
/* vim:set et sts=4: */
|
|
Packit Service |
1d8f1c |
/* GDK - The GIMP Drawing Kit
|
|
Packit Service |
1d8f1c |
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
Packit Service |
1d8f1c |
*
|
|
Packit Service |
1d8f1c |
* This library is free software; you can redistribute it and/or
|
|
Packit Service |
1d8f1c |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
1d8f1c |
* License as published by the Free Software Foundation; either
|
|
Packit Service |
1d8f1c |
* version 2 of the License, or (at your option) any later version.
|
|
Packit Service |
1d8f1c |
*
|
|
Packit Service |
1d8f1c |
* This library is distributed in the hope that it will be useful,
|
|
Packit Service |
1d8f1c |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
1d8f1c |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
1d8f1c |
* Lesser General Public License for more details.
|
|
Packit Service |
1d8f1c |
*
|
|
Packit Service |
1d8f1c |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
1d8f1c |
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit Service |
1d8f1c |
*/
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
/*
|
|
Packit Service |
1d8f1c |
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
Packit Service |
1d8f1c |
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
Packit Service |
1d8f1c |
* files for a list of changes. These files are distributed with
|
|
Packit Service |
1d8f1c |
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
Packit Service |
1d8f1c |
*/
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
/* Key handling not part of the keymap */
|
|
Packit Service |
1d8f1c |
#include <glib.h>
|
|
Packit Service |
1d8f1c |
#include <glib/gprintf.h>
|
|
Packit Service |
1d8f1c |
#include <stdlib.h>
|
|
Packit Service |
1d8f1c |
#include <string.h>
|
|
Packit Service |
1d8f1c |
#include "ibuskeysyms.h"
|
|
Packit Service |
1d8f1c |
#include "keyname-table.h"
|
|
Packit Service |
1d8f1c |
#include "ibuskeys.h"
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
#define IBUS_NUM_KEYS G_N_ELEMENTS (gdk_keys_by_keyval)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
static int
|
|
Packit Service |
1d8f1c |
gdk_keys_keyval_compare (const void *pkey, const void *pbase)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
return (*(int *) pkey) - ((gdk_key *) pbase)->keyval;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
const gchar*
|
|
Packit Service |
1d8f1c |
ibus_keyval_name (guint keyval)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
static gchar buf[100];
|
|
Packit Service |
1d8f1c |
gdk_key *found;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
/* Check for directly encoded 24-bit UCS characters: */
|
|
Packit Service |
1d8f1c |
if ((keyval & 0xff000000) == 0x01000000)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
g_sprintf (buf, "U+%.04X", (keyval & 0x00ffffff));
|
|
Packit Service |
1d8f1c |
return buf;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
found = bsearch (&keyval, gdk_keys_by_keyval,
|
|
Packit Service |
1d8f1c |
IBUS_NUM_KEYS, sizeof (gdk_key),
|
|
Packit Service |
1d8f1c |
gdk_keys_keyval_compare);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if (found != NULL)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
while ((found > gdk_keys_by_keyval) &&
|
|
Packit Service |
1d8f1c |
((found - 1)->keyval == keyval))
|
|
Packit Service |
1d8f1c |
found--;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return (gchar *) (keynames + found->offset);
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
else if (keyval != 0)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
g_sprintf (buf, "%#x", keyval);
|
|
Packit Service |
1d8f1c |
return buf;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return NULL;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
static int
|
|
Packit Service |
1d8f1c |
gdk_keys_name_compare (const void *pkey, const void *pbase)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
return strcmp ((const char *) pkey,
|
|
Packit Service |
1d8f1c |
(const char *) (keynames + ((const gdk_key *) pbase)->offset));
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
guint
|
|
Packit Service |
1d8f1c |
ibus_keyval_from_name (const gchar *keyval_name)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
gdk_key *found;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (keyval_name != NULL, 0);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
found = bsearch (keyval_name, gdk_keys_by_name,
|
|
Packit Service |
1d8f1c |
IBUS_NUM_KEYS, sizeof (gdk_key),
|
|
Packit Service |
1d8f1c |
gdk_keys_name_compare);
|
|
Packit Service |
1d8f1c |
if (found != NULL)
|
|
Packit Service |
1d8f1c |
return found->keyval;
|
|
Packit Service |
1d8f1c |
else
|
|
Packit Service |
1d8f1c |
return IBUS_KEY_VoidSymbol;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
static const gchar *
|
|
Packit Service |
1d8f1c |
modifier_name[] = {
|
|
Packit Service |
1d8f1c |
"Shift", // 0
|
|
Packit Service |
1d8f1c |
"Lock", // 1
|
|
Packit Service |
1d8f1c |
"Control", // 2
|
|
Packit Service |
1d8f1c |
"Alt", // 3
|
|
Packit Service |
1d8f1c |
"Mod2", // 4
|
|
Packit Service |
1d8f1c |
"Mod3", // 5
|
|
Packit Service |
1d8f1c |
"Mod4", // 6
|
|
Packit Service |
1d8f1c |
"Mod5", // 7
|
|
Packit Service |
1d8f1c |
"Button1", // 8
|
|
Packit Service |
1d8f1c |
"Button2", // 9
|
|
Packit Service |
1d8f1c |
"Button3", // 10
|
|
Packit Service |
1d8f1c |
"Button4", // 11
|
|
Packit Service |
1d8f1c |
"Button5", // 12
|
|
Packit Service |
1d8f1c |
NULL, NULL, NULL, NULL, NULL, // 13 - 17
|
|
Packit Service |
1d8f1c |
NULL, NULL, NULL, NULL, NULL, // 18 - 22
|
|
Packit Service |
1d8f1c |
NULL, NULL, NULL, // 23 - 25
|
|
Packit Service |
1d8f1c |
"Super", // 26
|
|
Packit Service |
1d8f1c |
"Hyper", // 27
|
|
Packit Service |
1d8f1c |
"Meta", // 28
|
|
Packit Service |
1d8f1c |
NULL, // 29
|
|
Packit Service |
1d8f1c |
"Release", // 30
|
|
Packit Service |
1d8f1c |
NULL, // 31
|
|
Packit Service |
1d8f1c |
};
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
gchar *
|
|
Packit Service |
1d8f1c |
ibus_key_event_to_string (guint keyval,
|
|
Packit Service |
1d8f1c |
guint modifiers)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
guint i;
|
|
Packit Service |
1d8f1c |
GString *str;
|
|
Packit Service |
1d8f1c |
const gchar *keyval_name;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (keyval != IBUS_KEY_VoidSymbol, NULL);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
keyval_name = ibus_keyval_name (keyval);
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (keyval_name != NULL, NULL);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
str = g_string_new ("");
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
for (i = 0; i < 32; i++) {
|
|
Packit Service |
1d8f1c |
guint mask = 1 << i;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if ((modifiers & mask) == 0)
|
|
Packit Service |
1d8f1c |
continue;
|
|
Packit Service |
1d8f1c |
if (modifier_name[i] == NULL)
|
|
Packit Service |
1d8f1c |
continue;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
g_string_append (str, modifier_name[i]);
|
|
Packit Service |
1d8f1c |
g_string_append_c (str, '+');
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
g_string_append (str, keyval_name);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return g_string_free (str, FALSE);
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
gboolean
|
|
Packit Service |
1d8f1c |
ibus_key_event_from_string (const gchar *string,
|
|
Packit Service |
1d8f1c |
guint *keyval,
|
|
Packit Service |
1d8f1c |
guint *modifiers)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (string != NULL, FALSE);
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (keyval != NULL, FALSE);
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (modifiers != NULL, FALSE);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
gchar **tokens = NULL;
|
|
Packit Service |
1d8f1c |
gchar **p;
|
|
Packit Service |
1d8f1c |
gboolean retval = FALSE;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
tokens = g_strsplit (string, "+", 0);
|
|
Packit Service |
1d8f1c |
g_return_val_if_fail (tokens != NULL, FALSE);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
*keyval = 0;
|
|
Packit Service |
1d8f1c |
*modifiers = 0;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
for (p = tokens; *(p + 1) != NULL; p++) {
|
|
Packit Service |
1d8f1c |
gint i;
|
|
Packit Service |
1d8f1c |
for (i = 0; i < 32; i++) {
|
|
Packit Service |
1d8f1c |
if (g_strcmp0 (modifier_name[i], *p) != 0)
|
|
Packit Service |
1d8f1c |
continue;
|
|
Packit Service |
1d8f1c |
*modifiers |= (1 << i);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
if (i == 32) {
|
|
Packit Service |
1d8f1c |
goto _out;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
*keyval = ibus_keyval_from_name (*p);
|
|
Packit Service |
1d8f1c |
if (*keyval != IBUS_KEY_VoidSymbol)
|
|
Packit Service |
1d8f1c |
retval = TRUE;
|
|
Packit Service |
1d8f1c |
_out:
|
|
Packit Service |
1d8f1c |
g_strfreev (tokens);
|
|
Packit Service |
1d8f1c |
return retval;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
guint
|
|
Packit Service |
1d8f1c |
ibus_keyval_to_upper (guint keyval)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
guint result;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
ibus_keyval_convert_case (keyval, NULL, &result);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return result;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
guint
|
|
Packit Service |
1d8f1c |
ibus_keyval_to_lower (guint keyval)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
guint result;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
ibus_keyval_convert_case (keyval, &result, NULL);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return result;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
void
|
|
Packit Service |
1d8f1c |
ibus_keyval_convert_case (guint symbol,
|
|
Packit Service |
1d8f1c |
guint *lower,
|
|
Packit Service |
1d8f1c |
guint *upper)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
guint xlower, xupper;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
xlower = symbol;
|
|
Packit Service |
1d8f1c |
xupper = symbol;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
/* Check for directly encoded 24-bit UCS characters: */
|
|
Packit Service |
1d8f1c |
if ((symbol & 0xff000000) == 0x01000000)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
if (lower)
|
|
Packit Service |
1d8f1c |
*lower = ibus_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff));
|
|
Packit Service |
1d8f1c |
if (upper)
|
|
Packit Service |
1d8f1c |
*upper = ibus_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff));
|
|
Packit Service |
1d8f1c |
return;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
switch (symbol >> 8)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
case 0: /* Latin 1 */
|
|
Packit Service |
1d8f1c |
if ((symbol >= IBUS_KEY_A) && (symbol <= IBUS_KEY_Z))
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_a - IBUS_KEY_A);
|
|
Packit Service |
1d8f1c |
else if ((symbol >= IBUS_KEY_a) && (symbol <= IBUS_KEY_z))
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_a - IBUS_KEY_A);
|
|
Packit Service |
1d8f1c |
else if ((symbol >= IBUS_KEY_Agrave) && (symbol <= IBUS_KEY_Odiaeresis))
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_agrave - IBUS_KEY_Agrave);
|
|
Packit Service |
1d8f1c |
else if ((symbol >= IBUS_KEY_agrave) && (symbol <= IBUS_KEY_odiaeresis))
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_agrave - IBUS_KEY_Agrave);
|
|
Packit Service |
1d8f1c |
else if ((symbol >= IBUS_KEY_Ooblique) && (symbol <= IBUS_KEY_Thorn))
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_oslash - IBUS_KEY_Ooblique);
|
|
Packit Service |
1d8f1c |
else if ((symbol >= IBUS_KEY_oslash) && (symbol <= IBUS_KEY_thorn))
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_oslash - IBUS_KEY_Ooblique);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
case 1: /* Latin 2 */
|
|
Packit Service |
1d8f1c |
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
|
Packit Service |
1d8f1c |
if (symbol == IBUS_KEY_Aogonek)
|
|
Packit Service |
1d8f1c |
xlower = IBUS_KEY_aogonek;
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Lstroke && symbol <= IBUS_KEY_Sacute)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_lstroke - IBUS_KEY_Lstroke);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Scaron && symbol <= IBUS_KEY_Zacute)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_scaron - IBUS_KEY_Scaron);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Zcaron && symbol <= IBUS_KEY_Zabovedot)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_zcaron - IBUS_KEY_Zcaron);
|
|
Packit Service |
1d8f1c |
else if (symbol == IBUS_KEY_aogonek)
|
|
Packit Service |
1d8f1c |
xupper = IBUS_KEY_Aogonek;
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_lstroke && symbol <= IBUS_KEY_sacute)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_lstroke - IBUS_KEY_Lstroke);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_scaron && symbol <= IBUS_KEY_zacute)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_scaron - IBUS_KEY_Scaron);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_zcaron && symbol <= IBUS_KEY_zabovedot)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_zcaron - IBUS_KEY_Zcaron);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Racute && symbol <= IBUS_KEY_Tcedilla)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_racute - IBUS_KEY_Racute);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_racute && symbol <= IBUS_KEY_tcedilla)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_racute - IBUS_KEY_Racute);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
case 2: /* Latin 3 */
|
|
Packit Service |
1d8f1c |
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
|
Packit Service |
1d8f1c |
if (symbol >= IBUS_KEY_Hstroke && symbol <= IBUS_KEY_Hcircumflex)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_hstroke - IBUS_KEY_Hstroke);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Gbreve && symbol <= IBUS_KEY_Jcircumflex)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_gbreve - IBUS_KEY_Gbreve);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_hstroke && symbol <= IBUS_KEY_hcircumflex)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_hstroke - IBUS_KEY_Hstroke);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_gbreve && symbol <= IBUS_KEY_jcircumflex)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_gbreve - IBUS_KEY_Gbreve);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Cabovedot && symbol <= IBUS_KEY_Scircumflex)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_cabovedot && symbol <= IBUS_KEY_scircumflex)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
case 3: /* Latin 4 */
|
|
Packit Service |
1d8f1c |
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
|
Packit Service |
1d8f1c |
if (symbol >= IBUS_KEY_Rcedilla && symbol <= IBUS_KEY_Tslash)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_rcedilla && symbol <= IBUS_KEY_tslash)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla);
|
|
Packit Service |
1d8f1c |
else if (symbol == IBUS_KEY_ENG)
|
|
Packit Service |
1d8f1c |
xlower = IBUS_KEY_eng;
|
|
Packit Service |
1d8f1c |
else if (symbol == IBUS_KEY_eng)
|
|
Packit Service |
1d8f1c |
xupper = IBUS_KEY_ENG;
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Amacron && symbol <= IBUS_KEY_Umacron)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_amacron - IBUS_KEY_Amacron);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_amacron && symbol <= IBUS_KEY_umacron)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_amacron - IBUS_KEY_Amacron);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
case 6: /* Cyrillic */
|
|
Packit Service |
1d8f1c |
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
|
Packit Service |
1d8f1c |
if (symbol >= IBUS_KEY_Serbian_DJE && symbol <= IBUS_KEY_Serbian_DZE)
|
|
Packit Service |
1d8f1c |
xlower -= (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Serbian_dje && symbol <= IBUS_KEY_Serbian_dze)
|
|
Packit Service |
1d8f1c |
xupper += (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Cyrillic_YU && symbol <= IBUS_KEY_Cyrillic_HARDSIGN)
|
|
Packit Service |
1d8f1c |
xlower -= (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Cyrillic_yu && symbol <= IBUS_KEY_Cyrillic_hardsign)
|
|
Packit Service |
1d8f1c |
xupper += (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
case 7: /* Greek */
|
|
Packit Service |
1d8f1c |
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
|
Packit Service |
1d8f1c |
if (symbol >= IBUS_KEY_Greek_ALPHAaccent && symbol <= IBUS_KEY_Greek_OMEGAaccent)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Greek_alphaaccent && symbol <= IBUS_KEY_Greek_omegaaccent &&
|
|
Packit Service |
1d8f1c |
symbol != IBUS_KEY_Greek_iotaaccentdieresis &&
|
|
Packit Service |
1d8f1c |
symbol != IBUS_KEY_Greek_upsilonaccentdieresis)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Greek_ALPHA && symbol <= IBUS_KEY_Greek_OMEGA)
|
|
Packit Service |
1d8f1c |
xlower += (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA);
|
|
Packit Service |
1d8f1c |
else if (symbol >= IBUS_KEY_Greek_alpha && symbol <= IBUS_KEY_Greek_omega &&
|
|
Packit Service |
1d8f1c |
symbol != IBUS_KEY_Greek_finalsmallsigma)
|
|
Packit Service |
1d8f1c |
xupper -= (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA);
|
|
Packit Service |
1d8f1c |
break;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if (lower)
|
|
Packit Service |
1d8f1c |
*lower = xlower;
|
|
Packit Service |
1d8f1c |
if (upper)
|
|
Packit Service |
1d8f1c |
*upper = xupper;
|
|
Packit Service |
1d8f1c |
}
|