Compare commits

...

1 Commits

Author SHA1 Message Date
Matthias Clasen
1ed919933d Drop non-backend immodules
These are not well integrated, and have not seen any
maintenance in many years.
2017-11-10 20:45:14 -05:00
19 changed files with 1 additions and 3896 deletions

View File

@@ -1,43 +0,0 @@
*** Introduction
This is a GTK+ input method which allows text entry via the multi-press method,
as on a mobile phone. When this has been installed, you can choose the "Multipress"
menu item from the "Input Methods" submenu when right-clicking in a GTK+ text entry
area.
For instance:
- press a to get a, then wait 1 second for the character to be accepted.
or
- press dd to get e, then wait 1 second for the character to be accepted.
or
- press ad to get ad, then wait 1 second for the d character to be accepted.
*** Configuration
Edit the im-multipress.conf to define the keypresses needed to input particular characters.
This file is in GKeyFile-format, and contains explanatory comments.
*** Per-widget deactivation
When the input method is active (either by choosing it from the context menu, or
by defining the default language as "*" in immultipress.c), the multipress
behaviour can be turned off for individual widgets, like so:
g_object_set_data(G_OBJECT(yourwidget), "multipress-passthrough-flag", GINT_TO_POINTER(1));
For a C++ gtkmm project, you could make a convenience function to do this. For instance:
void multipress_deactivate(Gtk::Widget& widget)
{
static const Glib::Quark quark ("multipress-passthrough-flag");
widget.set_data(quark, GINT_TO_POINTER(1));
}
*** Contact
Please contact Openismus for assistance with this input method. You can email murrayc@openismus.com
Copyright 2006-2007, Openismus GmbH

View File

@@ -1,446 +0,0 @@
/*
* Copyright (c) 2006-2009 Openismus GmbH
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gtkimcontextmultipress.h"
#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtkimmodule.h>
#define AUTOMATIC_COMPOSE_TIMEOUT 1 /* seconds */
#define CONFIGURATION_FILENAME MULTIPRESS_CONFDIR G_DIR_SEPARATOR_S "im-multipress.conf"
/* This contains rows of characters that can be entered by pressing
* a particular key repeatedly. Each row has one key (such as GDK_a),
* and an array of character strings, such as "a".
*/
typedef struct
{
gchar **characters; /* array of strings */
gsize n_characters; /* number of strings in the array */
}
KeySequence;
static GObjectClass *im_context_multipress_parent_class = NULL;
static GType im_context_multipress_type = 0;
static void im_context_multipress_class_init (GtkImContextMultipressClass *klass);
static void im_context_multipress_init (GtkImContextMultipress *self);
static void im_context_multipress_finalize (GObject *obj);
static void load_config (GtkImContextMultipress *self);
static gboolean vfunc_filter_keypress (GtkIMContext *context,
GdkEventKey *event);
static void vfunc_reset (GtkIMContext *context);
static void vfunc_get_preedit_string (GtkIMContext *context,
gchar **str,
PangoAttrList **attrs,
gint *cursor_pos);
/* Notice that we have a *_register_type(GTypeModule*) function instead of a
* *_get_type() function, because we must use g_type_module_register_type(),
* providing the GTypeModule* that was provided to im_context_init(). That
* is also why we are not using G_DEFINE_TYPE().
*/
void
gtk_im_context_multipress_register_type (GTypeModule* type_module)
{
const GTypeInfo im_context_multipress_info =
{
sizeof (GtkImContextMultipressClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) &im_context_multipress_class_init,
NULL,
NULL,
sizeof (GtkImContextMultipress),
0,
(GInstanceInitFunc) &im_context_multipress_init,
0,
};
im_context_multipress_type =
g_type_module_register_type (type_module,
GTK_TYPE_IM_CONTEXT,
"GtkImContextMultipress",
&im_context_multipress_info, 0);
}
GType
gtk_im_context_multipress_get_type (void)
{
g_assert (im_context_multipress_type != 0);
return im_context_multipress_type;
}
static void
key_sequence_free (gpointer value)
{
KeySequence *seq = value;
if (seq != NULL)
{
g_strfreev (seq->characters);
g_slice_free (KeySequence, seq);
}
}
static void
im_context_multipress_class_init (GtkImContextMultipressClass *klass)
{
GtkIMContextClass *im_context_class;
/* Set this so we can use it later: */
im_context_multipress_parent_class = g_type_class_peek_parent (klass);
/* Specify our vfunc implementations: */
im_context_class = GTK_IM_CONTEXT_CLASS (klass);
im_context_class->filter_keypress = &vfunc_filter_keypress;
im_context_class->reset = &vfunc_reset;
im_context_class->get_preedit_string = &vfunc_get_preedit_string;
G_OBJECT_CLASS (klass)->finalize = &im_context_multipress_finalize;
}
static void
im_context_multipress_init (GtkImContextMultipress *self)
{
self->key_sequences = g_hash_table_new_full (&g_direct_hash, &g_direct_equal,
NULL, &key_sequence_free);
load_config (self);
}
static void
im_context_multipress_finalize (GObject *obj)
{
GtkImContextMultipress *self;
self = GTK_IM_CONTEXT_MULTIPRESS (obj);
/* Release the configuration data: */
if (self->key_sequences != NULL)
{
g_hash_table_destroy (self->key_sequences);
self->key_sequences = NULL;
}
(*im_context_multipress_parent_class->finalize) (obj);
}
GtkIMContext *
gtk_im_context_multipress_new (void)
{
return (GtkIMContext *)g_object_new (GTK_TYPE_IM_CONTEXT_MULTIPRESS, NULL);
}
static void
cancel_automatic_timeout_commit (GtkImContextMultipress *multipress_context)
{
if (multipress_context->timeout_id)
g_source_remove (multipress_context->timeout_id);
multipress_context->timeout_id = 0;
}
/* Clear the compose buffer, so we are ready to compose the next character.
*/
static void
clear_compose_buffer (GtkImContextMultipress *multipress_context)
{
multipress_context->key_last_entered = 0;
multipress_context->compose_count = 0;
cancel_automatic_timeout_commit (multipress_context);
if (multipress_context->tentative_match)
{
multipress_context->tentative_match = NULL;
g_signal_emit_by_name (multipress_context, "preedit-changed");
g_signal_emit_by_name (multipress_context, "preedit-end");
}
}
/* Finish composing, provide the character, and clear our compose buffer.
*/
static void
accept_character (GtkImContextMultipress *multipress_context, const gchar *characters)
{
/* Clear the compose buffer, so we are ready to compose the next character.
* Note that if we emit "preedit-changed" after "commit", there's a segfault/
* invalid-write with GtkTextView in gtk_text_layout_free_line_display(), when
* destroying a PangoLayout (this can also be avoided by not using any Pango
* attributes in get_preedit_string(). */
clear_compose_buffer (multipress_context);
/* Provide the character to GTK+ */
g_signal_emit_by_name (multipress_context, "commit", characters);
}
static gboolean
on_timeout (gpointer data)
{
GtkImContextMultipress *multipress_context;
gdk_threads_enter ();
multipress_context = GTK_IM_CONTEXT_MULTIPRESS (data);
/* A certain amount of time has passed, so we will assume that the user
* really wants the currently chosen character */
accept_character (multipress_context, multipress_context->tentative_match);
multipress_context->timeout_id = 0;
gdk_threads_leave ();
return G_SOURCE_REMOVE; /* don't call me again */
}
static gboolean
vfunc_filter_keypress (GtkIMContext *context, GdkEventKey *event)
{
GtkIMContextClass *parent;
GtkImContextMultipress *multipress_context;
multipress_context = GTK_IM_CONTEXT_MULTIPRESS (context);
if (gdk_event_get_event_type ((GdkEvent *) event) == GDK_KEY_PRESS)
{
KeySequence *possible;
guint keyval;
gdk_event_get_keyval ((GdkEvent *) event, &keyval);
/* Check whether the current key is the same as previously entered, because
* if it is not then we should accept the previous one, and start a new
* character. */
if (multipress_context->compose_count > 0
&& multipress_context->key_last_entered != keyval
&& multipress_context->tentative_match != NULL)
{
/* Accept the previously chosen character. This wipes
* the compose_count and key_last_entered. */
accept_character (multipress_context,
multipress_context->tentative_match);
}
/* Decide what character this key press would choose: */
possible = g_hash_table_lookup (multipress_context->key_sequences,
GUINT_TO_POINTER (keyval));
if (possible != NULL)
{
if (multipress_context->compose_count == 0)
g_signal_emit_by_name (multipress_context, "preedit-start");
/* Check whether we are at the end of a compose sequence, with no more
* possible characters. Cycle back to the start if necessary. */
if (multipress_context->compose_count >= possible->n_characters)
multipress_context->compose_count = 0;
/* Store the last key pressed in the compose sequence. */
multipress_context->key_last_entered = keyval;
/* Get the possible match for this number of presses of the key.
* compose_count starts at 1, so that 0 can mean not composing. */
multipress_context->tentative_match =
possible->characters[multipress_context->compose_count++];
/* Indicate the current possible character. This will cause our
* vfunc_get_preedit_string() vfunc to be called, which will provide
* the current possible character for the user to see. */
g_signal_emit_by_name (multipress_context, "preedit-changed");
/* Cancel any outstanding timeout, so we can start the timer again: */
cancel_automatic_timeout_commit (multipress_context);
/* Create a timeout that will cause the currently chosen character to
* be committed, if nothing happens for a certain amount of time: */
multipress_context->timeout_id =
g_timeout_add_seconds (AUTOMATIC_COMPOSE_TIMEOUT,
&on_timeout, multipress_context);
g_source_set_name_by_id (multipress_context->timeout_id, "[gtk+] on_timeout");
return TRUE; /* key handled */
}
else
{
guint32 keyval_uchar;
/* Just accept all other keypresses directly, but commit the
* current preedit content first. */
if (multipress_context->compose_count > 0
&& multipress_context->tentative_match != NULL)
{
accept_character (multipress_context,
multipress_context->tentative_match);
}
keyval_uchar = gdk_keyval_to_unicode (keyval);
/* Convert to a string for accept_character(). */
if (keyval_uchar != 0)
{
/* max length of UTF-8 sequence = 6 + 1 for NUL termination */
gchar keyval_utf8[7];
gint length;
length = g_unichar_to_utf8 (keyval_uchar, keyval_utf8);
keyval_utf8[length] = '\0';
accept_character (multipress_context, keyval_utf8);
return TRUE; /* key handled */
}
}
}
parent = (GtkIMContextClass *)im_context_multipress_parent_class;
/* The default implementation just returns FALSE, but it is generally
* a good idea to call the base class implementation: */
if (parent->filter_keypress)
return (*parent->filter_keypress) (context, event);
return FALSE;
}
static void
vfunc_reset (GtkIMContext *context)
{
clear_compose_buffer (GTK_IM_CONTEXT_MULTIPRESS (context));
}
static void
vfunc_get_preedit_string (GtkIMContext *context,
gchar **str,
PangoAttrList **attrs,
gint *cursor_pos)
{
gsize len_bytes = 0;
gsize len_utf8_chars = 0;
/* Show the user what character he will get if he accepts: */
if (str != NULL)
{
const gchar *match;
match = GTK_IM_CONTEXT_MULTIPRESS (context)->tentative_match;
if (match == NULL)
match = ""; /* *str must not be NUL */
len_bytes = strlen (match); /* byte count */
len_utf8_chars = g_utf8_strlen (match, len_bytes); /* character count */
*str = g_strndup (match, len_bytes);
}
/* Underline it, to show the user that he is in compose mode: */
if (attrs != NULL)
{
*attrs = pango_attr_list_new ();
if (len_bytes > 0)
{
PangoAttribute *attr;
attr = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
attr->start_index = 0;
attr->end_index = len_bytes;
pango_attr_list_insert (*attrs, attr);
}
}
if (cursor_pos)
*cursor_pos = len_utf8_chars;
}
/* Open the configuration file and fill in the key_sequences hash table
* with key/character-list pairs taken from the [keys] group of the file.
*/
static void
load_config (GtkImContextMultipress *self)
{
GKeyFile *key_file;
GError *error = NULL;
gchar **keys;
gsize n_keys = 0;
gsize i;
key_file = g_key_file_new ();
if (!g_key_file_load_from_file (key_file, CONFIGURATION_FILENAME,
G_KEY_FILE_NONE, &error))
{
g_warning ("Error while trying to open the %s configuration file: %s",
CONFIGURATION_FILENAME, error->message);
g_error_free (error);
g_key_file_free (key_file);
return;
}
keys = g_key_file_get_keys (key_file, "keys", &n_keys, &error);
if (error != NULL)
{
g_warning ("Error while trying to read the %s configuration file: %s",
CONFIGURATION_FILENAME, error->message);
g_error_free (error);
g_key_file_free (key_file);
return;
}
for (i = 0; i < n_keys; ++i)
{
KeySequence *seq;
guint keyval;
keyval = gdk_keyval_from_name (keys[i]);
if (keyval == GDK_KEY_VoidSymbol)
{
g_warning ("Error while trying to read the %s configuration file: "
"invalid key name \"%s\"",
CONFIGURATION_FILENAME, keys[i]);
continue;
}
seq = g_slice_new (KeySequence);
seq->characters = g_key_file_get_string_list (key_file, "keys", keys[i],
&seq->n_characters, &error);
if (error != NULL)
{
g_warning ("Error while trying to read the %s configuration file: %s",
CONFIGURATION_FILENAME, error->message);
g_error_free (error);
error = NULL;
g_slice_free (KeySequence, seq);
continue;
}
/* Ownership of the KeySequence is taken over by the hash table */
g_hash_table_insert (self->key_sequences, GUINT_TO_POINTER (keyval), seq);
}
g_strfreev (keys);
g_key_file_free (key_file);
}

View File

@@ -1,80 +0,0 @@
/* Copyright (C) 2006 Openismus GmbH
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GTK_IM_CONTEXT_MULTIPRESS_H__
#define __GTK_IM_CONTEXT_MULTIPRESS_H__
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GTK_TYPE_IM_CONTEXT_MULTIPRESS (gtk_im_context_multipress_get_type ())
#define GTK_IM_CONTEXT_MULTIPRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_IM_CONTEXT_MULTIPRESS, GtkImContextMultipress))
#define GTK_IM_CONTEXT_MULTIPRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_IM_CONTEXT_MULTIPRESS, GtkImContextMultipressClass))
#define GTK_IS_IM_CONTEXT_MULTIPRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_IM_CONTEXT_MULTIPRESS))
#define GTK_IS_IM_CONTEXT_MULTIPRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IM_CONTEXT_MULTIPRESS))
#define GTK_IM_CONTEXT_MULTIPRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_IM_CONTEXT_MULTIPRESS, GtkImContextMultipressClass))
typedef struct _GtkImContextMultipress GtkImContextMultipress;
/* This input method allows multi-press character input, like that found on
* mobile phones.
*
* This is based on GtkImContextSimple, which allows "compose" based on
* sequences of characters. But instead the character sequences are defined
* by lists of characters for a key, so that repeated pressing of the same key
* can cycle through the possible output characters, with automatic choosing
* of the character after a time delay.
*/
struct _GtkImContextMultipress
{
/*< private >*/
GtkIMContext parent;
/* Sequence information, loaded from the configuration file: */
GHashTable* key_sequences;
gsize dummy; /* ABI-preserving placeholder */
/* The last character entered so far during a compose.
* If this is NULL then we are not composing yet.
*/
guint key_last_entered;
/* The position of the compose in the possible sequence.
* For instance, this is 2 if aa has been pressed to show b (from abc0).
*/
guint compose_count;
guint timeout_id;
/* The character(s) that will be used if it the current character(s) is accepted: */
const gchar *tentative_match;
};
typedef struct _GtkImContextMultipressClass GtkImContextMultipressClass;
struct _GtkImContextMultipressClass
{
GtkIMContextClass parent_class;
};
void gtk_im_context_multipress_register_type (GTypeModule* type_module);
GType gtk_im_context_multipress_get_type (void);
GtkIMContext *gtk_im_context_multipress_new (void);
G_END_DECLS
#endif /* __GTK_IM_CONTEXT_MULTIPRESS_H__ */

View File

@@ -1,347 +0,0 @@
/* GTK - The GIMP Toolkit
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
*
*/
#include <string.h>
#include <gdk/gdkkeysyms.h>
#include "gtkimcontextthai.h"
#include "thai-charprop.h"
static void gtk_im_context_thai_class_init (GtkIMContextThaiClass *class);
static void gtk_im_context_thai_init (GtkIMContextThai *im_context_thai);
static gboolean gtk_im_context_thai_filter_keypress (GtkIMContext *context,
GdkEventKey *key);
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
static void forget_previous_chars (GtkIMContextThai *context_thai);
static void remember_previous_char (GtkIMContextThai *context_thai,
gunichar new_char);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
static GObjectClass *parent_class;
GType gtk_type_im_context_thai = 0;
void
gtk_im_context_thai_register_type (GTypeModule *type_module)
{
const GTypeInfo im_context_thai_info =
{
sizeof (GtkIMContextThaiClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gtk_im_context_thai_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextThai),
0,
(GInstanceInitFunc) gtk_im_context_thai_init,
};
gtk_type_im_context_thai =
g_type_module_register_type (type_module,
GTK_TYPE_IM_CONTEXT,
"GtkIMContextThai",
&im_context_thai_info, 0);
}
static void
gtk_im_context_thai_class_init (GtkIMContextThaiClass *class)
{
GtkIMContextClass *im_context_class = GTK_IM_CONTEXT_CLASS (class);
parent_class = g_type_class_peek_parent (class);
im_context_class->filter_keypress = gtk_im_context_thai_filter_keypress;
}
static void
gtk_im_context_thai_init (GtkIMContextThai *context_thai)
{
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
forget_previous_chars (context_thai);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
context_thai->isc_mode = ISC_BASICCHECK;
}
GtkIMContext *
gtk_im_context_thai_new (void)
{
GtkIMContextThai *result;
result = GTK_IM_CONTEXT_THAI (g_object_new (GTK_TYPE_IM_CONTEXT_THAI, NULL));
return GTK_IM_CONTEXT (result);
}
GtkIMContextThaiISCMode
gtk_im_context_thai_get_isc_mode (GtkIMContextThai *context_thai)
{
return context_thai->isc_mode;
}
GtkIMContextThaiISCMode
gtk_im_context_thai_set_isc_mode (GtkIMContextThai *context_thai,
GtkIMContextThaiISCMode mode)
{
GtkIMContextThaiISCMode prev_mode = context_thai->isc_mode;
context_thai->isc_mode = mode;
return prev_mode;
}
static gboolean
is_context_lost_key(guint keyval)
{
return ((keyval & 0xFF00) == 0xFF00) &&
(keyval == GDK_KEY_BackSpace ||
keyval == GDK_KEY_Tab ||
keyval == GDK_KEY_Linefeed ||
keyval == GDK_KEY_Clear ||
keyval == GDK_KEY_Return ||
keyval == GDK_KEY_Pause ||
keyval == GDK_KEY_Scroll_Lock ||
keyval == GDK_KEY_Sys_Req ||
keyval == GDK_KEY_Escape ||
keyval == GDK_KEY_Delete ||
(GDK_KEY_Home <= keyval && keyval <= GDK_KEY_Begin) || /* IsCursorkey */
(GDK_KEY_KP_Space <= keyval && keyval <= GDK_KEY_KP_Delete) || /* IsKeypadKey, non-chars only */
(GDK_KEY_Select <= keyval && keyval <= GDK_KEY_Break) || /* IsMiscFunctionKey */
(GDK_KEY_F1 <= keyval && keyval <= GDK_KEY_F35)); /* IsFunctionKey */
}
static gboolean
is_context_intact_key(guint keyval)
{
return (((keyval & 0xFF00) == 0xFF00) &&
((GDK_KEY_Shift_L <= keyval && keyval <= GDK_KEY_Hyper_R) || /* IsModifierKey */
(keyval == GDK_KEY_Mode_switch) ||
(keyval == GDK_KEY_Num_Lock))) ||
(((keyval & 0xFE00) == 0xFE00) &&
(GDK_KEY_ISO_Lock <= keyval && keyval <= GDK_KEY_ISO_Last_Group_Lock));
}
static gboolean
thai_is_accept (gunichar new_char, gunichar prev_char, gint isc_mode)
{
switch (isc_mode)
{
case ISC_PASSTHROUGH:
return TRUE;
case ISC_BASICCHECK:
return TAC_compose_input (prev_char, new_char) != 'R';
case ISC_STRICT:
{
int op = TAC_compose_input (prev_char, new_char);
return op != 'R' && op != 'S';
}
default:
return FALSE;
}
}
#define thai_is_composible(n,p) (TAC_compose_input ((p), (n)) == 'C')
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
static void
forget_previous_chars (GtkIMContextThai *context_thai)
{
memset (context_thai->char_buff, 0, sizeof (context_thai->char_buff));
}
static void
remember_previous_char (GtkIMContextThai *context_thai, gunichar new_char)
{
memmove (context_thai->char_buff + 1, context_thai->char_buff,
(GTK_IM_CONTEXT_THAI_BUFF_SIZE - 1) * sizeof (context_thai->char_buff[0]));
context_thai->char_buff[0] = new_char;
}
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
static gunichar
get_previous_char (GtkIMContextThai *context_thai, gint offset)
{
gchar *surrounding;
gint cursor_index;
if (gtk_im_context_get_surrounding ((GtkIMContext *)context_thai,
&surrounding, &cursor_index))
{
gunichar prev_char;
gchar *p, *q;
prev_char = 0;
p = surrounding + cursor_index;
for (q = p; offset < 0 && q > surrounding; ++offset)
q = g_utf8_prev_char (q);
if (offset == 0)
{
prev_char = g_utf8_get_char_validated (q, p - q);
if (prev_char == (gunichar)-1 || prev_char == (gunichar)-2)
prev_char = 0;
}
g_free (surrounding);
return prev_char;
}
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
else
{
offset = -offset - 1;
if (0 <= offset && offset < GTK_IM_CONTEXT_THAI_BUFF_SIZE)
return context_thai->char_buff[offset];
}
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
return 0;
}
static gboolean
gtk_im_context_thai_commit_chars (GtkIMContextThai *context_thai,
gunichar *s, gsize len)
{
gchar *utf8;
utf8 = g_ucs4_to_utf8 (s, len, NULL, NULL, NULL);
if (!utf8)
return FALSE;
g_signal_emit_by_name (context_thai, "commit", utf8);
g_free (utf8);
return TRUE;
}
static gboolean
accept_input (GtkIMContextThai *context_thai, gunichar new_char)
{
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
remember_previous_char (context_thai, new_char);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
return gtk_im_context_thai_commit_chars (context_thai, &new_char, 1);
}
static gboolean
reorder_input (GtkIMContextThai *context_thai,
gunichar prev_char, gunichar new_char)
{
gunichar buf[2];
if (!gtk_im_context_delete_surrounding (GTK_IM_CONTEXT (context_thai), -1, 1))
return FALSE;
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
forget_previous_chars (context_thai);
remember_previous_char (context_thai, new_char);
remember_previous_char (context_thai, prev_char);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
buf[0] = new_char;
buf[1] = prev_char;
return gtk_im_context_thai_commit_chars (context_thai, buf, 2);
}
static gboolean
replace_input (GtkIMContextThai *context_thai, gunichar new_char)
{
if (!gtk_im_context_delete_surrounding (GTK_IM_CONTEXT (context_thai), -1, 1))
return FALSE;
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
forget_previous_chars (context_thai);
remember_previous_char (context_thai, new_char);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
return gtk_im_context_thai_commit_chars (context_thai, &new_char, 1);
}
static gboolean
gtk_im_context_thai_filter_keypress (GtkIMContext *context,
GdkEventKey *event)
{
GtkIMContextThai *context_thai = GTK_IM_CONTEXT_THAI (context);
gunichar prev_char, new_char;
gboolean is_reject;
GtkIMContextThaiISCMode isc_mode;
GdkModifierType state;
guint keyval;
if (gdk_event_get_event_type ((GdkEvent *) event) != GDK_KEY_PRESS ||
!gdk_event_get_state ((GdkEvent *) event, &state) ||
!gdk_event_get_keyval ((GdkEvent *) event, &keyval))
return FALSE;
if (state & (GDK_MODIFIER_MASK
& ~(GDK_SHIFT_MASK | GDK_LOCK_MASK | GDK_MOD2_MASK)) ||
is_context_lost_key (keyval))
{
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
forget_previous_chars (context_thai);
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
return FALSE;
}
if (keyval == 0 || is_context_intact_key (keyval))
{
return FALSE;
}
prev_char = get_previous_char (context_thai, -1);
if (!prev_char)
prev_char = ' ';
new_char = gdk_keyval_to_unicode (keyval);
is_reject = TRUE;
isc_mode = gtk_im_context_thai_get_isc_mode (context_thai);
if (thai_is_accept (new_char, prev_char, isc_mode))
{
accept_input (context_thai, new_char);
is_reject = FALSE;
}
else
{
gunichar context_char;
/* rejected, trying to correct */
context_char = get_previous_char (context_thai, -2);
if (context_char)
{
if (thai_is_composible (new_char, context_char))
{
if (thai_is_composible (prev_char, new_char))
is_reject = !reorder_input (context_thai, prev_char, new_char);
else if (thai_is_composible (prev_char, context_char))
is_reject = !replace_input (context_thai, new_char);
else if ((TAC_char_class (prev_char) == FV1
|| TAC_char_class (prev_char) == AM)
&& TAC_char_class (new_char) == TONE)
is_reject = !reorder_input (context_thai, prev_char, new_char);
}
else if (thai_is_accept (new_char, context_char, isc_mode))
is_reject = !replace_input (context_thai, new_char);
}
}
if (is_reject)
{
/* reject character */
gdk_beep ();
}
return TRUE;
}

View File

@@ -1,75 +0,0 @@
/* GTK - The GIMP Toolkit
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
*
*/
#ifndef __GTK_IM_CONTEXT_THAI_H__
#define __GTK_IM_CONTEXT_THAI_H__
#include <gtk/gtk.h>
G_BEGIN_DECLS
extern GType gtk_type_im_context_thai;
#define GTK_TYPE_IM_CONTEXT_THAI (gtk_type_im_context_thai)
#define GTK_IM_CONTEXT_THAI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_IM_CONTEXT_THAI, GtkIMContextThai))
#define GTK_IM_CONTEXT_THAI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_IM_CONTEXT_THAI, GtkIMContextThaiClass))
#define GTK_IS_IM_CONTEXT_THAI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_IM_CONTEXT_THAI))
#define GTK_IS_IM_CONTEXT_THAI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IM_CONTEXT_THAI))
#define GTK_IM_CONTEXT_THAI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_IM_CONTEXT_THAI, GtkIMContextThaiClass))
typedef struct _GtkIMContextThai GtkIMContextThai;
typedef struct _GtkIMContextThaiClass GtkIMContextThaiClass;
typedef enum
{
ISC_PASSTHROUGH,
ISC_BASICCHECK,
ISC_STRICT
} GtkIMContextThaiISCMode;
#define GTK_IM_CONTEXT_THAI_BUFF_SIZE 2
struct _GtkIMContextThai
{
GtkIMContext object;
#ifndef GTK_IM_CONTEXT_THAI_NO_FALLBACK
gunichar char_buff[GTK_IM_CONTEXT_THAI_BUFF_SIZE];
#endif /* !GTK_IM_CONTEXT_THAI_NO_FALLBACK */
GtkIMContextThaiISCMode isc_mode;
};
struct _GtkIMContextThaiClass
{
GtkIMContextClass parent_class;
};
void gtk_im_context_thai_register_type (GTypeModule *type_module);
GtkIMContext *gtk_im_context_thai_new (void);
GtkIMContextThaiISCMode
gtk_im_context_thai_get_isc_mode (GtkIMContextThai *context_thai);
GtkIMContextThaiISCMode
gtk_im_context_thai_set_isc_mode (GtkIMContextThai *context_thai,
GtkIMContextThaiISCMode mode);
G_END_DECLS
#endif /* __GTK_IM_CONTEXT_THAI_H__ */

View File

@@ -1,22 +0,0 @@
# Example configuration file for the GTK+ Multipress Input Method
# Authored by Openismus GmbH, 2009.
#
# This file follows the GKeyFile format. On the left of the equal sign goes
# the key that you press repeatedly to iterate through the text items listed
# on the right-hand side. The list items are separated by semicolons ";" and
# consist of one or more characters each. The backslash "\" is used to escape
# characters; for instance "\;" for a literal semicolon.
#
# The example configuration below imitates the behavior of a standard mobile
# phone by a major manufacturer, with German language setting.
[keys]
KP_1 = .;,;?;!;';";1;-;(;);@;/;:;_
KP_2 = a;b;c;2;ä;à;á;ã;â;å;æ;ç
KP_3 = d;e;f;3;è;é;ë;ê;ð
KP_4 = g;h;i;4;ì;í;î;ï
KP_5 = j;k;l;5;£
KP_6 = m;n;o;6;ö;ò;ó;ô;õ;ø;ñ
KP_7 = p;q;r;s;7;ß;$
KP_8 = t;u;v;8;ü;ù;ú;û
KP_9 = w;x;y;z;9;ý;þ
KP_0 = \s;0

View File

@@ -1,490 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
* Copyright (C) 2000 SuSE Linux Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original author: Owen Taylor <otaylor@redhat.com>
*
* Modified for Inuktitut - Robert Brady <robert@suse.co.uk>
*
* Modified for Amharic - Daniel Yacob <locales@geez.org>
*
*/
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_am_et_translit = 0;
static void am_et_class_init (GtkIMContextSimpleClass *class);
static void am_et_init (GtkIMContextSimple *im_context);
static void
am_et_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) am_et_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) am_et_init,
};
type_am_et_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextAmharicEthiopia",
&object_info, 0);
}
#define SYL(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1,
#define SYLW1(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+7, \
a, 'W', 'A', 0, 0, 0, b+7, \
a, 'W', 'a', 0, 0, 0, b+7,
#define SYLW2(a,b) \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+7, \
a, 'w', 'w', 'a', 0, 0, b+7,
#define SYLW(a,b) \
SYLW1(a,b)\
SYLW2(a,b)
#define SYLWW(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'O', 'O', 0, 0, 0, b+8, \
a, 'O', 'o', 0, 0, 0, b+8, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+11, \
a, 'W', '\'', 0, 0, 0, b+13, \
a, 'W', 'A', 0, 0, 0, b+11, \
a, 'W', 'E', 0, 0, 0, b+12, \
a, 'W', 'I', 0, 0, 0, b+10, \
a, 'W', 'U', 0, 0, 0, b+13, \
a, 'W', 'a', 0, 0, 0, b+11, \
a, 'W', 'e', 0, 0, 0, b+8, \
a, 'W', 'e', 'e', 0, 0, b+12, \
a, 'W', 'i', 0, 0, 0, b+10, \
a, 'W', 'u', 0, 0, 0, b+13, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'o', 'o', 0, 0, 0, b+8, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+11, \
a, 'w', 'w', '\'', 0, 0, b+13, \
a, 'w', 'w', 'E', 0, 0, b+12, \
a, 'w', 'w', 'a', 0, 0, b+11, \
a, 'w', 'w', 'e', 0, 0, b+8, \
a, 'w', 'w', 'e', 'e', 0, b+12, \
a, 'w', 'w', 'i', 0, 0, b+10, \
a, 'w', 'w', 'u', 0, 0, b+13,
static guint16 am_et_compose_seqs[] = {
/* do punctuation and numerals here */
'\'', 0, 0, 0, 0, 0, GDK_KEY_dead_grave, /* hopefully this has no side effects */
'\'', '\'', 0, 0, 0, 0, GDK_KEY_apostrophe,
'\'', '1', 0, 0, 0, 0, 0x1369,
'\'', '1', '0', 0, 0, 0, 0x1372,
'\'', '1', '0', '0', 0, 0, 0x137b,
'\'', '1', '0', 'k', 0, 0, 0x137c,
/* '\'', '1', '0', '0', '0', 0, 0x137b,
'\'', '1', '0', '0', '0', '0', 0, 0x137c, */
'\'', '2', 0, 0, 0, 0, 0x136a,
'\'', '2', '0', 0, 0, 0, 0x1373,
'\'', '3', 0, 0, 0, 0, 0x136b,
'\'', '3', '0', 0, 0, 0, 0x1374,
'\'', '4', 0, 0, 0, 0, 0x136c,
'\'', '4', '0', 0, 0, 0, 0x1375,
'\'', '5', 0, 0, 0, 0, 0x136d,
'\'', '5', '0', 0, 0, 0, 0x1376,
'\'', '6', 0, 0, 0, 0, 0x136e,
'\'', '6', '0', 0, 0, 0, 0x1377,
'\'', '7', 0, 0, 0, 0, 0x136f,
'\'', '7', '0', 0, 0, 0, 0x1378,
'\'', '8', 0, 0, 0, 0, 0x1370,
'\'', '8', '0', 0, 0, 0, 0x1379,
'\'', '9', 0, 0, 0, 0, 0x1371,
'\'', '9', '0', 0, 0, 0, 0x137a,
',', 0, 0, 0, 0, 0, 0x1363,
',', ',', 0, 0, 0, 0, ',',
'-', 0, 0, 0, 0, 0, '-',
'-', ':', 0, 0, 0, 0, 0x1365,
':', 0, 0, 0, 0, 0, 0x1361,
':', '-', 0, 0, 0, 0, 0x1366,
':', ':', 0, 0, 0, 0, 0x1362,
':', ':', ':', 0, 0, 0, ':',
':', '|', ':', 0, 0, 0, 0x1368,
';', 0, 0, 0, 0, 0, 0x1364,
';', ';', 0, 0, 0, 0, ';',
'<', 0, 0, 0, 0, 0, '<',
'<', '<', 0, 0, 0, 0, 0x00AB,
'>', 0, 0, 0, 0, 0, '>',
'>', '>', 0, 0, 0, 0, 0x00BB,
'?', 0, 0, 0, 0, 0, '?',
'?', '?', 0, 0, 0, 0, 0x1367,
'A', 0, 0, 0, 0, 0, 0x12A3,
'A','A', 0, 0, 0, 0, 0x12D3,
SYLW('B', 0x1260)
SYLW('C', 0x1328)
SYLW('D', 0x12f8)
'E', 0, 0, 0, 0, 0, 0x12A4,
'E','E', 0, 0, 0, 0, 0x12D4,
SYLW1('F', 0x1348)
'F', 'Y', 0, 0, 0, 0, 0x135A,
'F', 'Y', 'A', 0, 0, 0, 0x135A,
'F', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('F', 0x1348)
SYL('G', 0x1318)
SYLW('H', 0x1210)
'I', 0, 0, 0, 0, 0, 0x12A5,
'I','A', 0, 0, 0, 0, 0x12A3,
'I','E', 0, 0, 0, 0, 0x12A4,
'I','I', 0, 0, 0, 0, 0x12D5,
'I','I','E', 0, 0, 0, 0x12D4,
'I','I','a', 0, 0, 0, 0x12D3,
'I','I','e', 0, 0, 0, 0x12D0,
'I','I','i', 0, 0, 0, 0x12D2,
'I','I','o', 0, 0, 0, 0x12D6,
'I','I','u', 0, 0, 0, 0x12D1,
'I','O', 0, 0, 0, 0, 0x12A6,
'I','U', 0, 0, 0, 0, 0x12A1,
'I','W', 0, 0, 0, 0, 0x12A7,
'I','a', 0, 0, 0, 0, 0x12A3,
'I','e', 0, 0, 0, 0, 0x12A0,
'I','i', 0, 0, 0, 0, 0x12A2,
'I','o', 0, 0, 0, 0, 0x12A6,
'I','u', 0, 0, 0, 0, 0x12A1,
SYLWW('K', 0x12b8)
SYLW('L', 0x1208)
SYLW1('M', 0x1218)
'M', 'Y', 0, 0, 0, 0, 0x1359,
'M', 'Y', 'A', 0, 0, 0, 0x1359,
'M', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('M', 0x1218)
SYLW('N', 0x1298)
'O', 0, 0, 0, 0, 0, 0x12A6,
'O','O', 0, 0, 0, 0, 0x12D6,
SYLW('P', 0x1330)
SYLWW('Q', 0x1250)
SYLW1('R', 0x1228)
'R', 'Y', 0, 0, 0, 0, 0x1358,
'R', 'Y', 'A', 0, 0, 0, 0x1358,
'R', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('R', 0x1228)
'S', 0, 0, 0, 0, 0, 0x1338+5,
'S', 'A', 0, 0, 0, 0, 0x1338+3,
'S', 'E', 0, 0, 0, 0, 0x1338+4,
'S', 'I', 0, 0, 0, 0, 0x1338+2,
'S', 'O', 0, 0, 0, 0, 0x1338+6,
'S', 'S', 0, 0, 0, 0, 0x1340+5,
'S', 'S', 'A', 0, 0, 0, 0x1340+3,
'S', 'S', 'E', 0, 0, 0, 0x1340+4,
'S', 'S', 'I', 0, 0, 0, 0x1340+2,
'S', 'S', 'O', 0, 0, 0, 0x1340+6,
'S', 'S', 'U', 0, 0, 0, 0x1340+1,
'S', 'S', 'a', 0, 0, 0, 0x1340+3,
'S', 'S', 'e', 0, 0, 0, 0x1340,
'S', 'S', 'e', 'e', 0, 0, 0x1340+4,
'S', 'S', 'i', 0, 0, 0, 0x1340+2,
'S', 'S', 'o', 0, 0, 0, 0x1340+6,
'S', 'S', 'u', 0, 0, 0, 0x1340+1,
'S', 'U', 0, 0, 0, 0, 0x1338+1,
'S', 'W', 0, 0, 0, 0, 0x1338+7,
'S', 'W', 'A', 0, 0, 0, 0x1338+7,
'S', 'W', 'a', 0, 0, 0, 0x1338+7,
'S', 'a', 0, 0, 0, 0, 0x1338+3,
'S', 'e', 0, 0, 0, 0, 0x1338,
'S', 'e', 'e', 0, 0, 0, 0x1338+4,
'S', 'i', 0, 0, 0, 0, 0x1338+2,
'S', 'o', 0, 0, 0, 0, 0x1338+6,
'S', 'u', 0, 0, 0, 0, 0x1338+1,
'S', 'w', 'w', 0, 0, 0, 0x1338+7,
'S', 'w', 'w', 'a', 0, 0, 0x1338+7,
SYLW('T', 0x1320)
'U', 0, 0, 0, 0, 0, 0x12A1,
'U','U', 0, 0, 0, 0, 0x12D1,
SYLW('V', 0x1268)
SYL('W', 0x12c8)
SYLW('X', 0x1238)
SYL('Y', 0x12e8)
SYLW('Z', 0x12e0)
/* much, much work to be done for lone vowels */
'a', 0, 0, 0, 0, 0, 0x12A0,
'a','a', 0, 0, 0, 0, 0x12D3,
'a','a','a', 0, 0, 0, 0x12D0,
'a','a','a','a', 0, 0, 0x12A3,
'a','a','a','a','a', 0, 0x12A0,
SYLW('b', 0x1260)
SYLW('c', 0x1278)
SYLW('d', 0x12f0)
'e', 0, 0, 0, 0, 0, 0x12A5,
'e','A', 0, 0, 0, 0, 0x12A3,
'e','E', 0, 0, 0, 0, 0x12A4,
'e','I', 0, 0, 0, 0, 0x12A2,
'e','O', 0, 0, 0, 0, 0x12A6,
'e','U', 0, 0, 0, 0, 0x12A1,
'e','W', 0, 0, 0, 0, 0x12A7,
'e','a', 0, 0, 0, 0, 0x12D0,
'e','e', 0, 0, 0, 0, 0x12D5,
'e','e','E', 0, 0, 0, 0x12D4,
'e','e','a', 0, 0, 0, 0x12D3,
'e','e','e', 0, 0, 0, 0x12D0,
'e','e','i', 0, 0, 0, 0x12D2,
'e','e','o', 0, 0, 0, 0x12D6,
'e','e','u', 0, 0, 0, 0x12D1,
'e','i', 0, 0, 0, 0, 0x12A2,
'e','o', 0, 0, 0, 0, 0x12A6,
'e','u', 0, 0, 0, 0, 0x12A1,
SYLW1('f', 0x1348)
'f', 'Y', 0, 0, 0, 0, 0x135A,
'f', 'Y', 'A', 0, 0, 0, 0x135A,
'f', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('f', 0x1348)
SYLWW('g', 0x1308)
'h', 0, 0, 0, 0, 0, 0x1200+5,
'h', 'A', 0, 0, 0, 0, 0x1200+3,
'h', 'E', 0, 0, 0, 0, 0x1200+4,
'h', 'I', 0, 0, 0, 0, 0x1200+2,
'h', 'O', 0, 0, 0, 0, 0x1200+6,
'h', 'U', 0, 0, 0, 0, 0x1200+1,
'h', 'W', 0, 0, 0, 0, 0x1280+11,
'h', 'W', '\'', 0, 0, 0, 0x1280+13,
'h', 'W', 'A', 0, 0, 0, 0x1280+11,
'h', 'W', 'E', 0, 0, 0, 0x1280+12,
'h', 'W', 'I', 0, 0, 0, 0x1280+10,
'h', 'W', 'U', 0, 0, 0, 0x1280+13,
'h', 'W', 'a', 0, 0, 0, 0x1280+11,
'h', 'W', 'e', 0, 0, 0, 0x1280+8,
'h', 'W', 'e', 'e', 0, 0, 0x1280+12,
'h', 'W', 'i', 0, 0, 0, 0x1280+10,
'h', 'W', 'u', 0, 0, 0, 0x1280+13,
'h', 'a', 0, 0, 0, 0, 0x1200+3,
'h', 'e', 0, 0, 0, 0, 0x1200,
'h', 'e', 'e', 0, 0, 0, 0x1200+4,
'h', 'h', 0, 0, 0, 0, 0x1280+5,
'h', 'h', 'A', 0, 0, 0, 0x1280+3,
'h', 'h', 'E', 0, 0, 0, 0x1280+4,
'h', 'h', 'I', 0, 0, 0, 0x1280+2,
'h', 'h', 'O', 0, 0, 0, 0x1280+6,
'h', 'h', 'O', 'O', 0, 0, 0x1280+8,
'h', 'h', 'U', 0, 0, 0, 0x1280+1,
'h', 'h', 'W', 0, 0, 0, 0x1280+11,
'h', 'h', 'W', '\'', 0, 0, 0x1280+13,
'h', 'h', 'W', 'A', 0, 0, 0x1280+11,
'h', 'h', 'W', 'E', 0, 0, 0x1280+12,
'h', 'h', 'W', 'I', 0, 0, 0x1280+10,
'h', 'h', 'W', 'U', 0, 0, 0x1280+13,
'h', 'h', 'W', 'a', 0, 0, 0x1280+11,
'h', 'h', 'W', 'e', 0, 0, 0x1280+8,
'h', 'h', 'W', 'e', 'e', 0, 0x1280+12,
'h', 'h', 'W', 'i', 0, 0, 0x1280+10,
'h', 'h', 'W', 'u', 0, 0, 0x1280+13,
'h', 'h', 'a', 0, 0, 0, 0x1280+3,
'h', 'h', 'e', 0, 0, 0, 0x1280,
'h', 'h', 'e', 'e', 0, 0, 0x1280+4,
'h', 'h', 'i', 0, 0, 0, 0x1280+2,
'h', 'h', 'o', 0, 0, 0, 0x1280+6,
'h', 'h', 'o', 'o', 0, 0, 0x1280+8,
'h', 'h', 'u', 0, 0, 0, 0x1280+1,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', '\'', 0, 0x1280+13,
'h', 'h', 'w', 'w', 'E', 0, 0x1280+12,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 'e', 0, 0x1280+8,
/* 'h', 'h', 'w', 'w', 'e', 'e', 0, 0x1280+12, too long for now */
'h', 'h', 'w', 'w', 'i', 0, 0x1280+10,
'h', 'h', 'w', 'w', 'u', 0, 0x1280+13,
'h', 'i', 0, 0, 0, 0, 0x1200+2,
'h', 'o', 0, 0, 0, 0, 0x1200+6,
'h', 'u', 0, 0, 0, 0, 0x1200+1,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', '\'', 0, 0, 0x1280+13,
'h', 'w', 'w', 'E', 0, 0, 0x1280+12,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 'e', 0, 0, 0x1280+8,
'h', 'w', 'w', 'e', 'e', 0, 0x1280+12,
'h', 'w', 'w', 'i', 0, 0, 0x1280+10,
'h', 'w', 'w', 'u', 0, 0, 0x1280+13,
'i', 0, 0, 0, 0, 0, 0x12A2,
'i', 'i', 0, 0, 0, 0, 0x12D2,
SYLW('j', 0x1300)
SYLWW('k', 0x12a8)
SYLW('l', 0x1208)
SYLW1('m', 0x1218)
'm', 'Y', 0, 0, 0, 0, 0x1359,
'm', 'Y', 'A', 0, 0, 0, 0x1359,
'm', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('m', 0x1218)
SYLW('n', 0x1290)
'o', 0, 0, 0, 0, 0, 0x12A6,
'o','o', 0, 0, 0, 0, 0x12D6,
SYLW('p', 0x1350)
SYLWW('q', 0x1240)
SYLW1('r', 0x1228)
'r', 'Y', 0, 0, 0, 0, 0x1358,
'r', 'Y', 'A', 0, 0, 0, 0x1358,
'r', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('r', 0x1228)
's', 0, 0, 0, 0, 0, 0x1230+5,
's', 'A', 0, 0, 0, 0, 0x1230+3,
's', 'E', 0, 0, 0, 0, 0x1230+4,
's', 'I', 0, 0, 0, 0, 0x1230+2,
's', 'O', 0, 0, 0, 0, 0x1230+6,
's', 'U', 0, 0, 0, 0, 0x1230+1,
's', 'W', 0, 0, 0, 0, 0x1230+7,
's', 'W', 'A', 0, 0, 0, 0x1230+7,
's', 'W', 'a', 0, 0, 0, 0x1230+7,
's', 'a', 0, 0, 0, 0, 0x1230+3,
's', 'e', 0, 0, 0, 0, 0x1230,
's', 'e', 'e', 0, 0, 0, 0x1230+4,
's', 'i', 0, 0, 0, 0, 0x1230+2,
's', 'o', 0, 0, 0, 0, 0x1230+6,
's', 's', 0, 0, 0, 0, 0x1220+5,
's', 's', 'A', 0, 0, 0, 0x1220+3,
's', 's', 'E', 0, 0, 0, 0x1220+4,
's', 's', 'I', 0, 0, 0, 0x1220+2,
's', 's', 'O', 0, 0, 0, 0x1220+6,
's', 's', 'U', 0, 0, 0, 0x1220+1,
's', 's', 'W', 0, 0, 0, 0x1220+7,
's', 's', 'W', 'A', 0, 0, 0x1220+7,
's', 's', 'W', 'a', 0, 0, 0x1220+7,
's', 's', 'a', 0, 0, 0, 0x1220+3,
's', 's', 'e', 0, 0, 0, 0x1220,
's', 's', 'e', 'e', 0, 0, 0x1220+4,
's', 's', 'i', 0, 0, 0, 0x1220+2,
's', 's', 'o', 0, 0, 0, 0x1220+6,
's', 's', 'u', 0, 0, 0, 0x1220+1,
's', 's', 'w', 'w', 0, 0, 0x1220+7,
's', 's', 'w', 'w', 'a', 0, 0x1220+7,
's', 'u', 0, 0, 0, 0, 0x1230+1,
's', 'w', 'w', 0, 0, 0, 0x1230+7,
's', 'w', 'w', 'a', 0, 0, 0x1230+7,
SYLW('t', 0x1270)
'u', 0, 0, 0, 0, 0, 0x12A1,
'u','u', 0, 0, 0, 0, 0x12D1,
SYLW('v', 0x1268)
SYL('w', 0x12c8)
SYLW('x', 0x1238)
SYL('y', 0x12e8)
SYLW('z', 0x12d8)
GDK_KEY_Shift_L, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
GDK_KEY_Shift_R, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
};
static void
am_et_class_init (GtkIMContextSimpleClass *class)
{
}
static void
am_et_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
am_et_compose_seqs,
5,
G_N_ELEMENTS (am_et_compose_seqs) / (5 + 2));
}
static const GtkIMContextInfo am_et_info = {
"am_et", /* ID */
NC_("input method menu", "Amharic (EZ+)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"am" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&am_et_info
};
#ifndef INCLUDE_IM_am_et
#define MODULE_ENTRY(type,function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_am_et_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
am_et_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "am_et") == 0)
return g_object_new (type_am_et_translit, NULL);
else
return NULL;
}

View File

@@ -1,128 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Owen Taylor <otaylor@redhat.com>
*
*/
#include "config.h"
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_cedilla = 0;
static void cedilla_class_init (GtkIMContextSimpleClass *class);
static void cedilla_init (GtkIMContextSimple *im_context);
static void
cedilla_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) cedilla_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) cedilla_init,
};
type_cedilla =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextCedillaTranslit",
&object_info, 0);
}
/* The difference between this and the default input method is the handling
* of C+acute - this method produces C WITH CEDILLA rather than C WITH ACUTE.
* For languages that use CCedilla and not acute, this is the preferred mapping,
* and is particularly important for pt_BR, where the us-intl keyboard is
* used extensively.
*/
static guint16 cedilla_compose_seqs[] = {
GDK_KEY_dead_acute, GDK_KEY_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */
GDK_KEY_dead_acute, GDK_KEY_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */
GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */
GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */
GDK_KEY_Multi_key, GDK_KEY_C, GDK_KEY_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */
GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */
};
static void
cedilla_class_init (GtkIMContextSimpleClass *class)
{
}
static void
cedilla_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
cedilla_compose_seqs,
4,
G_N_ELEMENTS (cedilla_compose_seqs) / (4 + 2));
}
static const GtkIMContextInfo cedilla_info = {
"cedilla", /* ID */
NC_("input method menu", "Cedilla"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain */
"az:ca:co:fr:gv:oc:pt:sq:tr:wa" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&cedilla_info
};
#ifndef INCLUDE_IM_cedilla
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_cedilla_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
cedilla_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "cedilla") == 0)
return g_object_new (type_cedilla, NULL);
else
return NULL;
}

View File

@@ -1,253 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Owen Taylor <otaylor@redhat.com>
*
*/
#include "config.h"
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_cyrillic_translit = 0;
static void cyrillic_translit_class_init (GtkIMContextSimpleClass *class);
static void cyrillic_translit_init (GtkIMContextSimple *im_context);
static void
cyrillic_translit_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) cyrillic_translit_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) cyrillic_translit_init,
};
type_cyrillic_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextCyrillicTranslit",
&object_info, 0);
}
/* The sequences here match the sequences used in the emacs quail
* mode cryllic-translit; they allow entering all characters
* in iso-8859-5
*/
static guint16 cyrillic_compose_seqs[] = {
GDK_KEY_apostrophe, 0, 0, 0, 0, 0x44C, /* CYRILLIC SMALL LETTER SOFT SIGN */
GDK_KEY_apostrophe, GDK_KEY_apostrophe, 0, 0, 0, 0x42C, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
GDK_KEY_slash, GDK_KEY_C, GDK_KEY_H, 0, 0, 0x040B, /* CYRILLIC CAPITAL LETTER TSHE */
GDK_KEY_slash, GDK_KEY_C, GDK_KEY_h, 0, 0, 0x040B, /* CYRILLIC CAPITAL LETTER TSHE */
GDK_KEY_slash, GDK_KEY_D, 0, 0, 0, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */
GDK_KEY_slash, GDK_KEY_E, 0, 0, 0, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */
GDK_KEY_slash, GDK_KEY_G, 0, 0, 0, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */
GDK_KEY_slash, GDK_KEY_I, 0, 0, 0, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
GDK_KEY_slash, GDK_KEY_J, 0, 0, 0, 0x0408, /* CYRILLIC CAPITAL LETTER JE */
GDK_KEY_slash, GDK_KEY_K, 0, 0, 0, 0x040C, /* CYRILLIC CAPITAL LETTER KJE */
GDK_KEY_slash, GDK_KEY_L, 0, 0, 0, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */
GDK_KEY_slash, GDK_KEY_N, 0, 0, 0, 0x040A, /* CYRILLIC CAPITAL LETTER NJE */
GDK_KEY_slash, GDK_KEY_S, 0, 0, 0, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */
GDK_KEY_slash, GDK_KEY_S, GDK_KEY_H, GDK_KEY_T, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_S, GDK_KEY_H, GDK_KEY_t, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_S, GDK_KEY_h, GDK_KEY_t, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_T, 0, 0, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_Z, 0, 0, 0, 0x040F, /* CYRILLIC CAPITAL LETTER DZHE */
GDK_KEY_slash, GDK_KEY_c, GDK_KEY_h, 0, 0, 0x045B, /* CYRILLIC SMALL LETTER TSHE */
GDK_KEY_slash, GDK_KEY_d, 0, 0, 0, 0x0452, /* CYRILLIC SMALL LETTER DJE */
GDK_KEY_slash, GDK_KEY_e, 0, 0, 0, 0x0454, /* CYRILLIC SMALL LETTER UKRAINIAN IE */
GDK_KEY_slash, GDK_KEY_g, 0, 0, 0, 0x0453, /* CYRILLIC SMALL LETTER GJE */
GDK_KEY_slash, GDK_KEY_i, 0, 0, 0, 0x0456, /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
GDK_KEY_slash, GDK_KEY_j, 0, 0, 0, 0x0458, /* CYRILLIC SMALL LETTER JE */
GDK_KEY_slash, GDK_KEY_k, 0, 0, 0, 0x045C, /* CYRILLIC SMALL LETTER KJE */
GDK_KEY_slash, GDK_KEY_l, 0, 0, 0, 0x0459, /* CYRILLIC SMALL LETTER LJE */
GDK_KEY_slash, GDK_KEY_n, 0, 0, 0, 0x045A, /* CYRILLIC SMALL LETTER NJE */
GDK_KEY_slash, GDK_KEY_s, 0, 0, 0, 0x0455, /* CYRILLIC SMALL LETTER DZE */
GDK_KEY_slash, GDK_KEY_s, GDK_KEY_h, GDK_KEY_t, 0, 0x0449, /* CYRILLIC SMALL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_t, 0, 0, 0, 0x0449, /* CYRILLIC SMALL LETTER SHCH */
GDK_KEY_slash, GDK_KEY_z, 0, 0, 0, 0x045F, /* CYRILLIC SMALL LETTER DZHE */
GDK_KEY_A, 0, 0, 0, 0, 0x0410, /* CYRILLIC CAPITAL LETTER A */
GDK_KEY_B, 0, 0, 0, 0, 0x0411, /* CYRILLIC CAPITAL LETTER BE */
GDK_KEY_C, 0, 0, 0, 0, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */
GDK_KEY_C, GDK_KEY_H, 0, 0, 0, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
GDK_KEY_C, GDK_KEY_h, 0, 0, 0, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
GDK_KEY_D, 0, 0, 0, 0, 0x0414, /* CYRILLIC CAPITAL LETTER DE */
GDK_KEY_E, 0, 0, 0, 0, 0x0415, /* CYRILLIC CAPITAL LETTER IE */
GDK_KEY_E, GDK_KEY_apostrophe, 0, 0, 0, 0x042D, /* CYRILLIC CAPITAL LETTER E */
GDK_KEY_F, 0, 0, 0, 0, 0x0424, /* CYRILLIC CAPITAL LETTER EF */
GDK_KEY_G, 0, 0, 0, 0, 0x0413, /* CYRILLIC CAPITAL LETTER GE */
GDK_KEY_H, 0, 0, 0, 0, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
GDK_KEY_I, 0, 0, 0, 0, 0x0418, /* CYRILLIC CAPITAL LETTER I */
GDK_KEY_J, 0, 0, 0, 0, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
GDK_KEY_J, GDK_KEY_apostrophe, 0, 0, 0, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
GDK_KEY_J, GDK_KEY_A, 0, 0, 0, 0x042F, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_J, GDK_KEY_I, 0, 0, 0, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
GDK_KEY_J, GDK_KEY_O, 0, 0, 0, 0x0401, /* CYRILLIC CAPITAL LETTER YO */
GDK_KEY_J, GDK_KEY_U, 0, 0, 0, 0x042E, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_J, GDK_KEY_a, 0, 0, 0, 0x042F, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_J, GDK_KEY_i, 0, 0, 0, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
GDK_KEY_J, GDK_KEY_o, 0, 0, 0, 0x0401, /* CYRILLIC CAPITAL LETTER YO */
GDK_KEY_J, GDK_KEY_u, 0, 0, 0, 0x042E, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_K, 0, 0, 0, 0, 0x041A, /* CYRILLIC CAPITAL LETTER KA */
GDK_KEY_K, GDK_KEY_H, 0, 0, 0, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
GDK_KEY_L, 0, 0, 0, 0, 0x041B, /* CYRILLIC CAPITAL LETTER EL */
GDK_KEY_M, 0, 0, 0, 0, 0x041C, /* CYRILLIC CAPITAL LETTER EM */
GDK_KEY_N, 0, 0, 0, 0, 0x041D, /* CYRILLIC CAPITAL LETTER EN */
GDK_KEY_O, 0, 0, 0, 0, 0x041E, /* CYRILLIC CAPITAL LETTER O */
GDK_KEY_P, 0, 0, 0, 0, 0x041F, /* CYRILLIC CAPITAL LETTER PE */
GDK_KEY_Q, 0, 0, 0, 0, 0x042F, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_R, 0, 0, 0, 0, 0x0420, /* CYRILLIC CAPITAL LETTER ER */
GDK_KEY_S, 0, 0, 0, 0, 0x0421, /* CYRILLIC CAPITAL LETTER ES */
GDK_KEY_S, GDK_KEY_H, 0, 0, 0, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
GDK_KEY_S, GDK_KEY_H, GDK_KEY_C, GDK_KEY_H, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_S, GDK_KEY_H, GDK_KEY_C, GDK_KEY_h, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_S, GDK_KEY_H, GDK_KEY_c, GDK_KEY_h, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_S, GDK_KEY_H, GDK_KEY_c, GDK_KEY_h, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_S, GDK_KEY_J, 0, 0, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_S, GDK_KEY_h, 0, 0, 0, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
GDK_KEY_S, GDK_KEY_j, 0, 0, 0, 0x0429, /* CYRILLIC CAPITAL LETTER SHCA */
GDK_KEY_T, 0, 0, 0, 0, 0x0422, /* CYRILLIC CAPITAL LETTER TE */
GDK_KEY_U, 0, 0, 0, 0, 0x0423, /* CYRILLIC CAPITAL LETTER U */
GDK_KEY_U, GDK_KEY_apostrophe, 0, 0, 0, 0x040E, /* CYRILLIC CAPITAL LETTER SHORT */
GDK_KEY_V, 0, 0, 0, 0, 0x0412, /* CYRILLIC CAPITAL LETTER VE */
GDK_KEY_W, 0, 0, 0, 0, 0x0412, /* CYRILLIC CAPITAL LETTER VE */
GDK_KEY_X, 0, 0, 0, 0, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
GDK_KEY_Y, 0, 0, 0, 0, 0x042B, /* CYRILLIC CAPITAL LETTER YERU */
GDK_KEY_Y, GDK_KEY_A, 0, 0, 0, 0x042F, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_Y, GDK_KEY_I, 0, 0, 0, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
GDK_KEY_Y, GDK_KEY_O, 0, 0, 0, 0x0401, /* CYRILLIC CAPITAL LETTER YO */
GDK_KEY_Y, GDK_KEY_U, 0, 0, 0, 0x042E, /* CYRILLIC CAPITAL LETTER YU */
GDK_KEY_Y, GDK_KEY_a, 0, 0, 0, 0x042F, /* CYRILLIC CAPITAL LETTER YA */
GDK_KEY_Y, GDK_KEY_i, 0, 0, 0, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
GDK_KEY_Y, GDK_KEY_o, 0, 0, 0, 0x0401, /* CYRILLIC CAPITAL LETTER YO */
GDK_KEY_Y, GDK_KEY_u, 0, 0, 0, 0x042E, /* CYRILLIC CAPITAL LETTER YU */
GDK_KEY_Z, 0, 0, 0, 0, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */
GDK_KEY_Z, GDK_KEY_H, 0, 0, 0, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
GDK_KEY_Z, GDK_KEY_h, 0, 0, 0, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
GDK_KEY_a, 0, 0, 0, 0, 0x0430, /* CYRILLIC SMALL LETTER A */
GDK_KEY_b, 0, 0, 0, 0, 0x0431, /* CYRILLIC SMALL LETTER BE */
GDK_KEY_c, 0, 0, 0, 0, 0x0446, /* CYRILLIC SMALL LETTER TSE */
GDK_KEY_c, GDK_KEY_h, 0, 0, 0, 0x0447, /* CYRILLIC SMALL LETTER CHE */
GDK_KEY_d, 0, 0, 0, 0, 0x0434, /* CYRILLIC SMALL LETTER DE */
GDK_KEY_e, 0, 0, 0, 0, 0x0435, /* CYRILLIC SMALL LETTER IE */
GDK_KEY_e, GDK_KEY_apostrophe, 0, 0, 0, 0x044D, /* CYRILLIC SMALL LETTER E */
GDK_KEY_f, 0, 0, 0, 0, 0x0444, /* CYRILLIC SMALL LETTER EF */
GDK_KEY_g, 0, 0, 0, 0, 0x0433, /* CYRILLIC SMALL LETTER GE */
GDK_KEY_h, 0, 0, 0, 0, 0x0445, /* CYRILLIC SMALL LETTER HA */
GDK_KEY_i, 0, 0, 0, 0, 0x0438, /* CYRILLIC SMALL LETTER I */
GDK_KEY_j, 0, 0, 0, 0, 0x0439, /* CYRILLIC SMALL LETTER SHORT I */
GDK_KEY_j, GDK_KEY_apostrophe, 0, 0, 0, 0x0439, /* CYRILLIC SMALL LETTER SHORT I */
GDK_KEY_j, GDK_KEY_a, 0, 0, 0, 0x044F, /* CYRILLIC SMALL LETTER YU */
GDK_KEY_j, GDK_KEY_i, 0, 0, 0, 0x0457, /* CYRILLIC SMALL LETTER YI */
GDK_KEY_j, GDK_KEY_o, 0, 0, 0, 0x0451, /* CYRILLIC SMALL LETTER YO */
GDK_KEY_j, GDK_KEY_u, 0, 0, 0, 0x044E, /* CYRILLIC SMALL LETTER YA */
GDK_KEY_k, 0, 0, 0, 0, 0x043A, /* CYRILLIC SMALL LETTER KA */
GDK_KEY_k, GDK_KEY_h, 0, 0, 0, 0x0445, /* CYRILLIC SMALL LETTER HA */
GDK_KEY_l, 0, 0, 0, 0, 0x043B, /* CYRILLIC SMALL LETTER EL */
GDK_KEY_m, 0, 0, 0, 0, 0x043C, /* CYRILLIC SMALL LETTER EM */
GDK_KEY_n, 0, 0, 0, 0, 0x043D, /* CYRILLIC SMALL LETTER EN */
GDK_KEY_o, 0, 0, 0, 0, 0x043E, /* CYRILLIC SMALL LETTER O */
GDK_KEY_p, 0, 0, 0, 0, 0x043F, /* CYRILLIC SMALL LETTER PE */
GDK_KEY_q, 0, 0, 0, 0, 0x044F, /* CYRILLIC SMALL LETTER YA */
GDK_KEY_r, 0, 0, 0, 0, 0x0440, /* CYRILLIC SMALL LETTER ER */
GDK_KEY_s, 0, 0, 0, 0, 0x0441, /* CYRILLIC SMALL LETTER ES */
GDK_KEY_s, GDK_KEY_h, 0, 0, 0, 0x0448, /* CYRILLIC SMALL LETTER SHA */
GDK_KEY_s, GDK_KEY_h, GDK_KEY_c, GDK_KEY_h, 0, 0x0449, /* CYRILLIC SMALL LETTER SHCA */
GDK_KEY_s, GDK_KEY_j, 0, 0, 0, 0x0449, /* CYRILLIC SMALL LETTER SHCA */
GDK_KEY_t, 0, 0, 0, 0, 0x0442, /* CYRILLIC SMALL LETTER TE */
GDK_KEY_u, 0, 0, 0, 0, 0x0443, /* CYRILLIC SMALL LETTER U */
GDK_KEY_u, GDK_KEY_apostrophe, 0, 0, 0, 0x045E, /* CYRILLIC SMALL LETTER SHORT */
GDK_KEY_v, 0, 0, 0, 0, 0x0432, /* CYRILLIC SMALL LETTER VE */
GDK_KEY_w, 0, 0, 0, 0, 0x0432, /* CYRILLIC SMALL LETTER VE */
GDK_KEY_x, 0, 0, 0, 0, 0x0445, /* CYRILLIC SMALL LETTER HA */
GDK_KEY_y, 0, 0, 0, 0, 0x044B, /* CYRILLIC SMALL LETTER YERU */
GDK_KEY_y, GDK_KEY_a, 0, 0, 0, 0x044F, /* CYRILLIC SMALL LETTER YU */
GDK_KEY_y, GDK_KEY_i, 0, 0, 0, 0x0457, /* CYRILLIC SMALL LETTER YI */
GDK_KEY_y, GDK_KEY_o, 0, 0, 0, 0x0451, /* CYRILLIC SMALL LETTER YO */
GDK_KEY_y, GDK_KEY_u, 0, 0, 0, 0x044E, /* CYRILLIC SMALL LETTER YA */
GDK_KEY_z, 0, 0, 0, 0, 0x0437, /* CYRILLIC SMALL LETTER ZE */
GDK_KEY_z, GDK_KEY_h, 0, 0, 0, 0x0436, /* CYRILLIC SMALL LETTER ZHE */
GDK_KEY_asciitilde, 0, 0, 0, 0, 0x44A, /* CYRILLIC SMALL LETTER HARD SIGN */
GDK_KEY_asciitilde, GDK_KEY_asciitilde, 0, 0, 0, 0x42A, /* CYRILLIC CAPITAL LETTER HARD SIGN */
};
static void
cyrillic_translit_class_init (GtkIMContextSimpleClass *class)
{
}
static void
cyrillic_translit_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
cyrillic_compose_seqs,
4,
G_N_ELEMENTS (cyrillic_compose_seqs) / (4 + 2));
}
static const GtkIMContextInfo cyrillic_translit_info = {
"cyrillic_translit", /* ID */
NC_("input menthod menu", "Cyrillic (Transliterated)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&cyrillic_translit_info
};
#ifndef INCLUDE_IM_cyrillic_translit
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_cyrillic_translit_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
cyrillic_translit_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "cyrillic_translit") == 0)
return g_object_new (type_cyrillic_translit, NULL);
else
return NULL;
}

View File

@@ -1,163 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
* Copyright (C) 2000 SuSE Linux Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original author: Owen Taylor <otaylor@redhat.com>
*
* Modified for Inuktitut - Robert Brady <robert@suse.co.uk>
*
*/
#include "config.h"
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_inuktitut_translit = 0;
static void inuktitut_class_init (GtkIMContextSimpleClass *class);
static void inuktitut_init (GtkIMContextSimple *im_context);
static void
inuktitut_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) inuktitut_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) inuktitut_init,
};
type_inuktitut_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextInuktitut",
&object_info, 0);
}
#define SYL(a,b,c,d) \
a, 0, 0, 0, 0, c, \
a, 'a', 0, 0, 0, b+7-d, \
a, 'a','a',0, 0, b+8-d, \
a, 'i', 0, 0, 0, b, \
a, 'i','i',0, 0, b+1, \
a, 'o', 0, 0, 0, b+2, \
a, 'o','o',0, 0, b+3, \
a, 'u', 0, 0, 0, b+2, \
a, 'u','u',0, 0, b+3,
static guint16 inuktitut_compose_seqs[] = {
'a', 0, 0, 0 , 0, 0x140a,
'a', 'a', 0, 0, 0, 0x140b,
SYL('c', 0x148b, 0x14a1, 2) /* As g */
SYL('f', 0x1555, 0x155d, 2)
SYL('g', 0x148b, 0x14a1, 2)
SYL('h', 0x14ef, 0x1505, 2)
'i', 0, 0, 0 , 0, 0x1403,
'i', 'i', 0, 0, 0, 0x1404,
SYL('j', 0x1528, 0x153e, 2)
SYL('k', 0x146d, 0x1483, 2)
SYL('l', 0x14d5, 0x14ea, 2)
SYL('m', 0x14a5, 0x14bb, 2)
SYL('n', 0x14c2, 0x14d0, 2)
'o', 0, 0, 0 , 0, 0x1405, /* as u */
'o', 'o', 0, 0, 0, 0x1406,
SYL('p', 0x1431, 0x1449, 0)
SYL('q', 0x157f, 0x1585, 3)
SYL('r', 0x1546, 0x1550, 2)
SYL('s', 0x14ef, 0x1505, 2) /* As h */
SYL('t', 0x144e, 0x1466, 0)
'u', 0, 0, 0 , 0, 0x1405,
'u', 'u', 0, 0, 0, 0x1406,
SYL('v', 0x1555, 0x155d, 2) /* as f */
SYL('y', 0x1528, 0x153e, 2) /* As j */
SYL(GDK_KEY_lstroke, 0x15a0, 0x15a6, 3) /* l- */
SYL(GDK_KEY_eng, 0x158f, 0x1595, 3) /* ng */
};
static void
inuktitut_class_init (GtkIMContextSimpleClass *class)
{
}
static void
inuktitut_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
inuktitut_compose_seqs,
4,
G_N_ELEMENTS (inuktitut_compose_seqs) / (4 + 2));
}
static const GtkIMContextInfo inuktitut_info = {
"inuktitut", /* ID */
NC_("input method menu", "Inuktitut (Transliterated)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"iu" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&inuktitut_info
};
#ifndef INCLUDE_IM_inuktitut
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_inuktitut_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
inuktitut_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "inuktitut") == 0)
return g_object_new (type_inuktitut_translit, NULL);
else
return NULL;
}

View File

@@ -1,181 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Owen Taylor <otaylor@redhat.com>
*
*/
#include "config.h"
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_ipa = 0;
static void ipa_class_init (GtkIMContextSimpleClass *class);
static void ipa_init (GtkIMContextSimple *im_context);
static void
ipa_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) ipa_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) ipa_init,
};
type_ipa =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextIpa",
&object_info, 0);
}
/* The sequences here match the sequences used in the emacs quail
* mode cryllic-translit; they allow entering all characters
* in iso-8859-5
*/
static guint16 ipa_compose_seqs[] = {
GDK_KEY_ampersand, 0, 0, 0, 0, 0x263, /* LATIN SMALL LETTER GAMMA */
GDK_KEY_apostrophe, 0, 0, 0, 0, 0x2C8, /* MODIFIER LETTER VERTICAL LINE */
GDK_KEY_slash, GDK_KEY_apostrophe, 0, 0, 0, 0x2CA, /* MODIFIER LETTER ACUTE ACCENT */
GDK_KEY_slash, GDK_KEY_slash, 0, 0, 0, 0x02F, /* SOLIDUS */
GDK_KEY_slash, GDK_KEY_3, 0, 0, 0, 0x25B, /* LATIN SMALL LETTER OPEN E */
GDK_KEY_slash, GDK_KEY_A, 0, 0, 0, 0x252, /* LATIN LETTER TURNED ALPHA */
GDK_KEY_slash, GDK_KEY_R, 0, 0, 0, 0x281, /* LATIN LETTER SMALL CAPITAL INVERTED R */
GDK_KEY_slash, GDK_KEY_a, 0, 0, 0, 0x250, /* LATIN SMALL LETTER TURNED A */
GDK_KEY_slash, GDK_KEY_c, 0, 0, 0, 0x254, /* LATIN SMALL LETTER OPEN O */
GDK_KEY_slash, GDK_KEY_e, 0, 0, 0, 0x259, /* LATIN SMALL LETTER SCHWA */
GDK_KEY_slash, GDK_KEY_h, 0, 0, 0, 0x265, /* LATIN SMALL LETTER TURNED H */
GDK_KEY_slash, GDK_KEY_m, 0, 0, 0, 0x26F, /* LATIN SMALL LETTER TURNED M */
GDK_KEY_slash, GDK_KEY_r, 0, 0, 0, 0x279, /* LATIN SMALL LETTER TURNED R */
GDK_KEY_slash, GDK_KEY_v, 0, 0, 0, 0x28C, /* LATIN SMALL LETTER TURNED V */
GDK_KEY_slash, GDK_KEY_w, 0, 0, 0, 0x28D, /* LATIN SMALL LETTER TURNED W */
GDK_KEY_slash, GDK_KEY_y, 0, 0, 0, 0x28E, /* LATIN SMALL LETTER TRUEND Y*/
GDK_KEY_3, 0, 0, 0, 0, 0x292, /* LATIN SMALL LETTER EZH */
GDK_KEY_colon, 0, 0, 0, 0, 0x2D0, /* MODIFIER LETTER TRIANGULAR COLON */
GDK_KEY_A, 0, 0, 0, 0, 0x251, /* LATIN SMALL LETTER ALPHA */
GDK_KEY_E, 0, 0, 0, 0, 0x25B, /* LATIN SMALL LETTER OPEN E */
GDK_KEY_I, 0, 0, 0, 0, 0x26A, /* LATIN LETTER SMALL CAPITAL I */
GDK_KEY_L, 0, 0, 0, 0, 0x29F, /* LATIN LETTER SMALL CAPITAL L */
GDK_KEY_M, 0, 0, 0, 0, 0x28D, /* LATIN SMALL LETTER TURNED W */
GDK_KEY_O, 0, 0, 0, 0, 0x04F, /* LATIN LETTER SMALL CAPITAL OE */
GDK_KEY_O, GDK_KEY_E, 0, 0, 0, 0x276, /* LATIN LETTER SMALL CAPITAL OE */
GDK_KEY_R, 0, 0, 0, 0, 0x280, /* LATIN LETTER SMALL CAPITAL R */
GDK_KEY_U, 0, 0, 0, 0, 0x28A, /* LATIN SMALL LETTER UPSILON */
GDK_KEY_Y, 0, 0, 0, 0, 0x28F, /* LATIN LETTER SMALL CAPITAL Y */
GDK_KEY_grave, 0, 0, 0, 0, 0x2CC, /* MODIFIER LETTER LOW VERTICAL LINE */
GDK_KEY_a, 0, 0, 0, 0, 0x061, /* LATIN SMALL LETTER A */
GDK_KEY_a, GDK_KEY_e, 0, 0, 0, 0x0E6, /* LATIN SMALL LETTER AE */
GDK_KEY_c, 0, 0, 0, 0, 0x063, /* LATIN SMALL LETTER C */
GDK_KEY_c, GDK_KEY_comma, 0, 0, 0, 0x0E7, /* LATIN SMALL LETTER C WITH CEDILLA */
GDK_KEY_d, 0, 0, 0, 0, 0x064, /* LATIN SMALL LETTER E */
GDK_KEY_d, GDK_KEY_apostrophe, 0, 0, 0, 0x064, /* LATIN SMALL LETTER D */
GDK_KEY_d, GDK_KEY_h, 0, 0, 0, 0x0F0, /* LATIN SMALL LETTER ETH */
GDK_KEY_e, 0, 0, 0, 0, 0x065, /* LATIN SMALL LETTER E */
GDK_KEY_e, GDK_KEY_minus, 0, 0, 0, 0x25A, /* LATIN SMALL LETTER SCHWA WITH HOOK */
GDK_KEY_e, GDK_KEY_bar, 0, 0, 0, 0x25A, /* LATIN SMALL LETTER SCHWA WITH HOOK */
GDK_KEY_g, 0, 0, 0, 0, 0x067, /* LATIN SMALL LETTER G */
GDK_KEY_g, GDK_KEY_n, 0, 0, 0, 0x272, /* LATIN SMALL LETTER N WITH LEFT HOOK */
GDK_KEY_i, 0, 0, 0, 0, 0x069, /* LATIN SMALL LETTER I */
GDK_KEY_i, GDK_KEY_minus, 0, 0, 0, 0x268, /* LATIN SMALL LETTER I WITH STROKE */
GDK_KEY_n, 0, 0, 0, 0, 0x06e, /* LATIN SMALL LETTER N */
GDK_KEY_n, GDK_KEY_g, 0, 0, 0, 0x14B, /* LATIN SMALL LETTER ENG */
GDK_KEY_o, 0, 0, 0, 0, 0x06f, /* LATIN SMALL LETTER O */
GDK_KEY_o, GDK_KEY_minus, 0, 0, 0, 0x275, /* LATIN LETTER BARRED O */
GDK_KEY_o, GDK_KEY_slash, 0, 0, 0, 0x0F8, /* LATIN SMALL LETTER O WITH STROKE */
GDK_KEY_o, GDK_KEY_e, 0, 0, 0, 0x153, /* LATIN SMALL LIGATURE OE */
GDK_KEY_o, GDK_KEY_bar, 0, 0, 0, 0x251, /* LATIN SMALL LETTER ALPHA */
GDK_KEY_s, 0, 0, 0, 0, 0x073, /* LATIN SMALL LETTER_ESH */
GDK_KEY_s, GDK_KEY_h, 0, 0, 0, 0x283, /* LATIN SMALL LETTER_ESH */
GDK_KEY_t, 0, 0, 0, 0, 0x074, /* LATIN SMALL LETTER T */
GDK_KEY_t, GDK_KEY_h, 0, 0, 0, 0x3B8, /* GREEK SMALL LETTER THETA */
GDK_KEY_u, 0, 0, 0, 0, 0x075, /* LATIN SMALL LETTER U */
GDK_KEY_u, GDK_KEY_minus, 0, 0, 0, 0x289, /* LATIN LETTER U BAR */
GDK_KEY_z, 0, 0, 0, 0, 0x07A, /* LATIN SMALL LETTER Z */
GDK_KEY_z, GDK_KEY_h, 0, 0, 0, 0x292, /* LATIN SMALL LETTER EZH */
GDK_KEY_bar, GDK_KEY_o, 0, 0, 0, 0x252, /* LATIN LETTER TURNED ALPHA */
GDK_KEY_asciitilde, 0, 0, 0, 0, 0x303, /* COMBINING TILDE */
};
static void
ipa_class_init (GtkIMContextSimpleClass *class)
{
}
static void
ipa_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
ipa_compose_seqs,
4,
G_N_ELEMENTS (ipa_compose_seqs) / (4 + 2));
}
static const GtkIMContextInfo ipa_info = {
"ipa", /* ID */
NC_("input method menu", "IPA"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&ipa_info
};
#ifndef INCLUDE_IM_ipa
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_ipa_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
ipa_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "ipa") == 0)
return g_object_new (type_ipa, NULL);
else
return NULL;
}

View File

@@ -1,71 +0,0 @@
/* Copyright (C) 2006 Openismus GmbH
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gtkimcontextmultipress.h"
#include <gtk/gtkimmodule.h> /* For GtkIMContextInfo */
#include <glib/gi18n.h>
#include <string.h> /* For strcmp() */
#define CONTEXT_ID "multipress"
/** NOTE: Change the default language from "" to "*" to enable this input method by default for all locales.
*/
static const GtkIMContextInfo info = {
CONTEXT_ID, /* ID */
NC_("input method menu", "Multipress"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain. Defined in configure.ac */
MULTIPRESS_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+"). Defined in the Makefile.am */
"" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&info
};
#ifndef INCLUDE_IM_multipress
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_multipress_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
gtk_im_context_multipress_register_type(module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, CONTEXT_ID) == 0)
{
GtkIMContext* imcontext = GTK_IM_CONTEXT(g_object_new (GTK_TYPE_IM_CONTEXT_MULTIPRESS, NULL));
return imcontext;
}
else
return NULL;
}

View File

@@ -1,71 +0,0 @@
/* GTK - The GIMP Toolkit
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
*
*/
#include "config.h"
#include <string.h>
#include <gdk/gdkkeysyms.h>
#include "gtk/gtkintl.h"
#include "gtk/gtkimmodule.h"
#include "gtkimcontextthai.h"
GType type_thai = 0;
static const GtkIMContextInfo thai_info = {
"thai", /* ID */
NC_("input method menu", "Thai-Lao"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"lo:th" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&thai_info
};
#ifndef INCLUDE_IM_thai
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_thai_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
gtk_im_context_thai_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "thai") == 0)
return gtk_im_context_thai_new ();
else
return NULL;
}

View File

@@ -1,489 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
* Copyright (C) 2000 SuSE Linux Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original author: Owen Taylor <otaylor@redhat.com>
*
* Modified for Inuktitut - Robert Brady <robert@suse.co.uk>
*
* Modified for Tigrigna - Daniel Yacob <locales@geez.org>
*
*/
#include "config.h"
#include <stdio.h>
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_ti_er_translit = 0;
static void ti_er_class_init (GtkIMContextSimpleClass *class);
static void ti_er_init (GtkIMContextSimple *im_context);
static void
ti_er_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) ti_er_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) ti_er_init,
};
type_ti_er_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextTigrignaEritrea",
&object_info, 0);
}
#define SYL(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1,
#define SYLW1(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+7, \
a, 'W', 'A', 0, 0, 0, b+7, \
a, 'W', 'a', 0, 0, 0, b+7,
#define SYLW2(a,b) \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+7, \
a, 'w', 'w', 'a', 0, 0, b+7,
#define SYLW(a,b) \
SYLW1(a,b)\
SYLW2(a,b)
#define SYLWW(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'O', 'O', 0, 0, 0, b+8, \
a, 'O', 'o', 0, 0, 0, b+8, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+11, \
a, 'W', '\'', 0, 0, 0, b+13, \
a, 'W', 'A', 0, 0, 0, b+11, \
a, 'W', 'E', 0, 0, 0, b+12, \
a, 'W', 'I', 0, 0, 0, b+10, \
a, 'W', 'U', 0, 0, 0, b+13, \
a, 'W', 'a', 0, 0, 0, b+11, \
a, 'W', 'e', 0, 0, 0, b+8, \
a, 'W', 'e', 'e', 0, 0, b+12, \
a, 'W', 'i', 0, 0, 0, b+10, \
a, 'W', 'u', 0, 0, 0, b+13, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'o', 'o', 0, 0, 0, b+8, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+11, \
a, 'w', 'w', '\'', 0, 0, b+13, \
a, 'w', 'w', 'E', 0, 0, b+12, \
a, 'w', 'w', 'a', 0, 0, b+11, \
a, 'w', 'w', 'e', 0, 0, b+8, \
a, 'w', 'w', 'e', 'e', 0, b+12, \
a, 'w', 'w', 'i', 0, 0, b+10, \
a, 'w', 'w', 'u', 0, 0, b+13,
static guint16 ti_er_compose_seqs[] = {
/* do punctuation and numerals here */
'\'', 0, 0, 0, 0, 0, GDK_KEY_dead_grave, /* hopefully this has no side effects */
'\'', '\'', 0, 0, 0, 0, GDK_KEY_apostrophe,
'\'', '1', 0, 0, 0, 0, 0x1369,
'\'', '1', '0', 0, 0, 0, 0x1372,
'\'', '1', '0', '0', 0, 0, 0x137b,
'\'', '1', '0', 'k', 0, 0, 0x137c,
/* '\'', '1', '0', '0', '0', 0, 0x137b,
'\'', '1', '0', '0', '0', '0', 0, 0x137c, */
'\'', '2', 0, 0, 0, 0, 0x136a,
'\'', '2', '0', 0, 0, 0, 0x1373,
'\'', '3', 0, 0, 0, 0, 0x136b,
'\'', '3', '0', 0, 0, 0, 0x1374,
'\'', '4', 0, 0, 0, 0, 0x136c,
'\'', '4', '0', 0, 0, 0, 0x1375,
'\'', '5', 0, 0, 0, 0, 0x136d,
'\'', '5', '0', 0, 0, 0, 0x1376,
'\'', '6', 0, 0, 0, 0, 0x136e,
'\'', '6', '0', 0, 0, 0, 0x1377,
'\'', '7', 0, 0, 0, 0, 0x136f,
'\'', '7', '0', 0, 0, 0, 0x1378,
'\'', '8', 0, 0, 0, 0, 0x1370,
'\'', '8', '0', 0, 0, 0, 0x1379,
'\'', '9', 0, 0, 0, 0, 0x1371,
'\'', '9', '0', 0, 0, 0, 0x137a,
',', 0, 0, 0, 0, 0, 0x1363,
',', ',', 0, 0, 0, 0, ',',
'-', 0, 0, 0, 0, 0, '-',
'-', ':', 0, 0, 0, 0, 0x1365,
':', 0, 0, 0, 0, 0, 0x1361,
':', '-', 0, 0, 0, 0, 0x1366,
':', ':', 0, 0, 0, 0, 0x1362,
':', ':', ':', 0, 0, 0, ':',
':', '|', ':', 0, 0, 0, 0x1368,
';', 0, 0, 0, 0, 0, 0x1364,
';', ';', 0, 0, 0, 0, ';',
'<', 0, 0, 0, 0, 0, '<',
'<', '<', 0, 0, 0, 0, 0x00AB,
'>', 0, 0, 0, 0, 0, '>',
'>', '>', 0, 0, 0, 0, 0x00BB,
'?', 0, 0, 0, 0, 0, 0x1367,
'?', '?', 0, 0, 0, 0, '?',
'A', 0, 0, 0, 0, 0, 0x12A0,
'A','A', 0, 0, 0, 0, 0x12D0,
SYLW('B', 0x1260)
SYLW('C', 0x1328)
SYLW('D', 0x12f8)
'E', 0, 0, 0, 0, 0, 0x12A4,
'E','E', 0, 0, 0, 0, 0x12D4,
SYLW1('F', 0x1348)
'F', 'Y', 0, 0, 0, 0, 0x135A,
'F', 'Y', 'A', 0, 0, 0, 0x135A,
'F', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('F', 0x1348)
SYL('G', 0x1318)
SYLW('H', 0x1210)
'I', 0, 0, 0, 0, 0, 0x12A5,
'I','A', 0, 0, 0, 0, 0x12A3,
'I','E', 0, 0, 0, 0, 0x12A4,
'I','I', 0, 0, 0, 0, 0x12D5,
'I','I','E', 0, 0, 0, 0x12D4,
'I','I','a', 0, 0, 0, 0x12D3,
'I','I','e', 0, 0, 0, 0x12D0,
'I','I','i', 0, 0, 0, 0x12D2,
'I','I','o', 0, 0, 0, 0x12D6,
'I','I','u', 0, 0, 0, 0x12D1,
'I','O', 0, 0, 0, 0, 0x12A6,
'I','U', 0, 0, 0, 0, 0x12A1,
'I','W', 0, 0, 0, 0, 0x12A7,
'I','a', 0, 0, 0, 0, 0x12A3,
'I','e', 0, 0, 0, 0, 0x12A0,
'I','i', 0, 0, 0, 0, 0x12A2,
'I','o', 0, 0, 0, 0, 0x12A6,
'I','u', 0, 0, 0, 0, 0x12A1,
SYLWW('K', 0x12b8)
SYLW('L', 0x1208)
SYLW1('M', 0x1218)
'M', 'Y', 0, 0, 0, 0, 0x1359,
'M', 'Y', 'A', 0, 0, 0, 0x1359,
'M', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('M', 0x1218)
SYLW('N', 0x1298)
'O', 0, 0, 0, 0, 0, 0x12A6,
'O','O', 0, 0, 0, 0, 0x12D6,
SYLW('P', 0x1330)
SYLWW('Q', 0x1250)
SYLW1('R', 0x1228)
'R', 'Y', 0, 0, 0, 0, 0x1358,
'R', 'Y', 'A', 0, 0, 0, 0x1358,
'R', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('R', 0x1228)
'S', 0, 0, 0, 0, 0, 0x1338+5,
'S', 'A', 0, 0, 0, 0, 0x1338+3,
'S', 'E', 0, 0, 0, 0, 0x1338+4,
'S', 'I', 0, 0, 0, 0, 0x1338+2,
'S', 'O', 0, 0, 0, 0, 0x1338+6,
'S', 'S', 0, 0, 0, 0, 0x1340+5,
'S', 'S', 'A', 0, 0, 0, 0x1340+3,
'S', 'S', 'E', 0, 0, 0, 0x1340+4,
'S', 'S', 'I', 0, 0, 0, 0x1340+2,
'S', 'S', 'O', 0, 0, 0, 0x1340+6,
'S', 'S', 'U', 0, 0, 0, 0x1340+1,
'S', 'S', 'a', 0, 0, 0, 0x1340+3,
'S', 'S', 'e', 0, 0, 0, 0x1340,
'S', 'S', 'e', 'e', 0, 0, 0x1340+4,
'S', 'S', 'i', 0, 0, 0, 0x1340+2,
'S', 'S', 'o', 0, 0, 0, 0x1340+6,
'S', 'S', 'u', 0, 0, 0, 0x1340+1,
'S', 'U', 0, 0, 0, 0, 0x1338+1,
'S', 'W', 0, 0, 0, 0, 0x1338+7,
'S', 'W', 'A', 0, 0, 0, 0x1338+7,
'S', 'W', 'a', 0, 0, 0, 0x1338+7,
'S', 'a', 0, 0, 0, 0, 0x1338+3,
'S', 'e', 0, 0, 0, 0, 0x1338,
'S', 'e', 'e', 0, 0, 0, 0x1338+4,
'S', 'i', 0, 0, 0, 0, 0x1338+2,
'S', 'o', 0, 0, 0, 0, 0x1338+6,
'S', 'u', 0, 0, 0, 0, 0x1338+1,
'S', 'w', 'w', 0, 0, 0, 0x1338+7,
'S', 'w', 'w', 'a', 0, 0, 0x1338+7,
SYLW('T', 0x1320)
'U', 0, 0, 0, 0, 0, 0x12A1,
'U','U', 0, 0, 0, 0, 0x12D1,
SYLW('V', 0x1268)
SYL('W', 0x12c8)
SYLW('X', 0x1238)
SYL('Y', 0x12e8)
SYLW('Z', 0x12e0)
/* much, much work to be done for lone vowels */
'a', 0, 0, 0, 0, 0, 0x12A3,
'a','a', 0, 0, 0, 0, 0x12D3,
'a','a','a', 0, 0, 0, 0x12D0,
'a','a','a','a', 0, 0, 0x12A0,
SYLW('b', 0x1260)
SYLW('c', 0x1278)
SYLW('d', 0x12f0)
'e', 0, 0, 0, 0, 0, 0x12A5,
'e','A', 0, 0, 0, 0, 0x12A3,
'e','E', 0, 0, 0, 0, 0x12A4,
'e','I', 0, 0, 0, 0, 0x12A2,
'e','O', 0, 0, 0, 0, 0x12A6,
'e','U', 0, 0, 0, 0, 0x12A1,
'e','W', 0, 0, 0, 0, 0x12A7,
'e','a', 0, 0, 0, 0, 0x12D0,
'e','e', 0, 0, 0, 0, 0x12D5,
'e','e','E', 0, 0, 0, 0x12D4,
'e','e','a', 0, 0, 0, 0x12D3,
'e','e','e', 0, 0, 0, 0x12D0,
'e','e','i', 0, 0, 0, 0x12D2,
'e','e','o', 0, 0, 0, 0x12D6,
'e','e','u', 0, 0, 0, 0x12D1,
'e','i', 0, 0, 0, 0, 0x12A2,
'e','o', 0, 0, 0, 0, 0x12A6,
'e','u', 0, 0, 0, 0, 0x12A1,
SYLW1('f', 0x1348)
'f', 'Y', 0, 0, 0, 0, 0x135A,
'f', 'Y', 'A', 0, 0, 0, 0x135A,
'f', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('f', 0x1348)
SYLWW('g', 0x1308)
'h', 0, 0, 0, 0, 0, 0x1200+5,
'h', 'A', 0, 0, 0, 0, 0x1200+3,
'h', 'E', 0, 0, 0, 0, 0x1200+4,
'h', 'I', 0, 0, 0, 0, 0x1200+2,
'h', 'O', 0, 0, 0, 0, 0x1200+6,
'h', 'U', 0, 0, 0, 0, 0x1200+1,
'h', 'W', 0, 0, 0, 0, 0x1280+11,
'h', 'W', '\'', 0, 0, 0, 0x1280+13,
'h', 'W', 'A', 0, 0, 0, 0x1280+11,
'h', 'W', 'E', 0, 0, 0, 0x1280+12,
'h', 'W', 'I', 0, 0, 0, 0x1280+10,
'h', 'W', 'U', 0, 0, 0, 0x1280+13,
'h', 'W', 'a', 0, 0, 0, 0x1280+11,
'h', 'W', 'e', 0, 0, 0, 0x1280+8,
'h', 'W', 'e', 'e', 0, 0, 0x1280+12,
'h', 'W', 'i', 0, 0, 0, 0x1280+10,
'h', 'W', 'u', 0, 0, 0, 0x1280+13,
'h', 'a', 0, 0, 0, 0, 0x1200+3,
'h', 'e', 0, 0, 0, 0, 0x1200,
'h', 'e', 'e', 0, 0, 0, 0x1200+4,
'h', 'h', 0, 0, 0, 0, 0x1280+5,
'h', 'h', 'A', 0, 0, 0, 0x1280+3,
'h', 'h', 'E', 0, 0, 0, 0x1280+4,
'h', 'h', 'I', 0, 0, 0, 0x1280+2,
'h', 'h', 'O', 0, 0, 0, 0x1280+6,
'h', 'h', 'O', 'O', 0, 0, 0x1280+8,
'h', 'h', 'U', 0, 0, 0, 0x1280+1,
'h', 'h', 'W', 0, 0, 0, 0x1280+11,
'h', 'h', 'W', '\'', 0, 0, 0x1280+13,
'h', 'h', 'W', 'A', 0, 0, 0x1280+11,
'h', 'h', 'W', 'E', 0, 0, 0x1280+12,
'h', 'h', 'W', 'I', 0, 0, 0x1280+10,
'h', 'h', 'W', 'U', 0, 0, 0x1280+13,
'h', 'h', 'W', 'a', 0, 0, 0x1280+11,
'h', 'h', 'W', 'e', 0, 0, 0x1280+8,
'h', 'h', 'W', 'e', 'e', 0, 0x1280+12,
'h', 'h', 'W', 'i', 0, 0, 0x1280+10,
'h', 'h', 'W', 'u', 0, 0, 0x1280+13,
'h', 'h', 'a', 0, 0, 0, 0x1280+3,
'h', 'h', 'e', 0, 0, 0, 0x1280,
'h', 'h', 'e', 'e', 0, 0, 0x1280+4,
'h', 'h', 'i', 0, 0, 0, 0x1280+2,
'h', 'h', 'o', 0, 0, 0, 0x1280+6,
'h', 'h', 'o', 'o', 0, 0, 0x1280+8,
'h', 'h', 'u', 0, 0, 0, 0x1280+1,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', '\'', 0, 0x1280+13,
'h', 'h', 'w', 'w', 'E', 0, 0x1280+12,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 'e', 0, 0x1280+8,
/* 'h', 'h', 'w', 'w', 'e', 'e', 0, 0x1280+12, too long for now */
'h', 'h', 'w', 'w', 'i', 0, 0x1280+10,
'h', 'h', 'w', 'w', 'u', 0, 0x1280+13,
'h', 'i', 0, 0, 0, 0, 0x1200+2,
'h', 'o', 0, 0, 0, 0, 0x1200+6,
'h', 'u', 0, 0, 0, 0, 0x1200+1,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', '\'', 0, 0, 0x1280+13,
'h', 'w', 'w', 'E', 0, 0, 0x1280+12,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 'e', 0, 0, 0x1280+8,
'h', 'w', 'w', 'e', 'e', 0, 0x1280+12,
'h', 'w', 'w', 'i', 0, 0, 0x1280+10,
'h', 'w', 'w', 'u', 0, 0, 0x1280+13,
'i', 0, 0, 0, 0, 0, 0x12A2,
'i', 'i', 0, 0, 0, 0, 0x12D2,
SYLW('j', 0x1300)
SYLWW('k', 0x12a8)
SYLW('l', 0x1208)
SYLW1('m', 0x1218)
'm', 'Y', 0, 0, 0, 0, 0x1359,
'm', 'Y', 'A', 0, 0, 0, 0x1359,
'm', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('m', 0x1218)
SYLW('n', 0x1290)
'o', 0, 0, 0, 0, 0, 0x12A6,
'o','o', 0, 0, 0, 0, 0x12D6,
SYLW('p', 0x1350)
SYLWW('q', 0x1240)
SYLW1('r', 0x1228)
'r', 'Y', 0, 0, 0, 0, 0x1358,
'r', 'Y', 'A', 0, 0, 0, 0x1358,
'r', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('r', 0x1228)
's', 0, 0, 0, 0, 0, 0x1230+5,
's', 'A', 0, 0, 0, 0, 0x1230+3,
's', 'E', 0, 0, 0, 0, 0x1230+4,
's', 'I', 0, 0, 0, 0, 0x1230+2,
's', 'O', 0, 0, 0, 0, 0x1230+6,
's', 'U', 0, 0, 0, 0, 0x1230+1,
's', 'W', 0, 0, 0, 0, 0x1230+7,
's', 'W', 'A', 0, 0, 0, 0x1230+7,
's', 'W', 'a', 0, 0, 0, 0x1230+7,
's', 'a', 0, 0, 0, 0, 0x1230+3,
's', 'e', 0, 0, 0, 0, 0x1230,
's', 'e', 'e', 0, 0, 0, 0x1230+4,
's', 'i', 0, 0, 0, 0, 0x1230+2,
's', 'o', 0, 0, 0, 0, 0x1230+6,
's', 's', 0, 0, 0, 0, 0x1220+5,
's', 's', 'A', 0, 0, 0, 0x1220+3,
's', 's', 'E', 0, 0, 0, 0x1220+4,
's', 's', 'I', 0, 0, 0, 0x1220+2,
's', 's', 'O', 0, 0, 0, 0x1220+6,
's', 's', 'U', 0, 0, 0, 0x1220+1,
's', 's', 'W', 0, 0, 0, 0x1220+7,
's', 's', 'W', 'A', 0, 0, 0x1220+7,
's', 's', 'W', 'a', 0, 0, 0x1220+7,
's', 's', 'a', 0, 0, 0, 0x1220+3,
's', 's', 'e', 0, 0, 0, 0x1220,
's', 's', 'e', 'e', 0, 0, 0x1220+4,
's', 's', 'i', 0, 0, 0, 0x1220+2,
's', 's', 'o', 0, 0, 0, 0x1220+6,
's', 's', 'u', 0, 0, 0, 0x1220+1,
's', 's', 'w', 'w', 0, 0, 0x1220+7,
's', 's', 'w', 'w', 'a', 0, 0x1220+7,
's', 'u', 0, 0, 0, 0, 0x1230+1,
's', 'w', 'w', 0, 0, 0, 0x1230+7,
's', 'w', 'w', 'a', 0, 0, 0x1230+7,
SYLW('t', 0x1270)
'u', 0, 0, 0, 0, 0, 0x12A1,
'u','u', 0, 0, 0, 0, 0x12D1,
SYLW('v', 0x1268)
SYL('w', 0x12c8)
SYLW('x', 0x1238)
SYL('y', 0x12e8)
SYLW('z', 0x12d8)
GDK_KEY_Shift_L, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
GDK_KEY_Shift_R, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
};
static void
ti_er_class_init (GtkIMContextSimpleClass *class)
{
}
static void
ti_er_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
ti_er_compose_seqs,
5,
G_N_ELEMENTS (ti_er_compose_seqs) / (5 + 2));
}
static const GtkIMContextInfo ti_er_info = {
"ti_er", /* ID */
NC_("input method menu", "Tigrigna-Eritrean (EZ+)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"ti" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&ti_er_info
};
#ifndef INCLUDE_IM_ti_er
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_ti_er_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
ti_er_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "ti_er") == 0)
return g_object_new (type_ti_er_translit, NULL);
else
return NULL;
}

View File

@@ -1,489 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
* Copyright (C) 2000 SuSE Linux Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original author: Owen Taylor <otaylor@redhat.com>
*
* Modified for Inuktitut - Robert Brady <robert@suse.co.uk>
*
* Modified for Tigrigna - Daniel Yacob <locales@geez.org>
*
*/
#include "config.h"
#include <stdio.h>
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_ti_et_translit = 0;
static void ti_et_class_init (GtkIMContextSimpleClass *class);
static void ti_et_init (GtkIMContextSimple *im_context);
static void
ti_et_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) ti_et_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) ti_et_init,
};
type_ti_et_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextTigrignaEthiopia",
&object_info, 0);
}
#define SYL(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1,
#define SYLW1(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+7, \
a, 'W', 'A', 0, 0, 0, b+7, \
a, 'W', 'a', 0, 0, 0, b+7,
#define SYLW2(a,b) \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+7, \
a, 'w', 'w', 'a', 0, 0, b+7,
#define SYLW(a,b) \
SYLW1(a,b)\
SYLW2(a,b)
#define SYLWW(a,b) \
a, 0, 0, 0, 0, 0, b+5, \
a, 'A', 0, 0, 0, 0, b+3, \
a, 'E', 0, 0, 0, 0, b+4, \
a, 'I', 0, 0, 0, 0, b+2, \
a, 'O', 0, 0, 0, 0, b+6, \
a, 'O', 'O', 0, 0, 0, b+8, \
a, 'O', 'o', 0, 0, 0, b+8, \
a, 'U', 0, 0, 0, 0, b+1, \
a, 'W', 0, 0, 0, 0, b+11, \
a, 'W', '\'', 0, 0, 0, b+13, \
a, 'W', 'A', 0, 0, 0, b+11, \
a, 'W', 'E', 0, 0, 0, b+12, \
a, 'W', 'I', 0, 0, 0, b+10, \
a, 'W', 'U', 0, 0, 0, b+13, \
a, 'W', 'a', 0, 0, 0, b+11, \
a, 'W', 'e', 0, 0, 0, b+8, \
a, 'W', 'e', 'e', 0, 0, b+12, \
a, 'W', 'i', 0, 0, 0, b+10, \
a, 'W', 'u', 0, 0, 0, b+13, \
a, 'a', 0, 0, 0, 0, b+3, \
a, 'e', 0, 0, 0, 0, b, \
a, 'e', 'e', 0, 0, 0, b+4, \
a, 'i', 0, 0, 0, 0, b+2, \
a, 'o', 0, 0, 0, 0, b+6, \
a, 'o', 'o', 0, 0, 0, b+8, \
a, 'u', 0, 0, 0, 0, b+1, \
a, 'w', 'w', 0, 0, 0, b+11, \
a, 'w', 'w', '\'', 0, 0, b+13, \
a, 'w', 'w', 'E', 0, 0, b+12, \
a, 'w', 'w', 'a', 0, 0, b+11, \
a, 'w', 'w', 'e', 0, 0, b+8, \
a, 'w', 'w', 'e', 'e', 0, b+12, \
a, 'w', 'w', 'i', 0, 0, b+10, \
a, 'w', 'w', 'u', 0, 0, b+13,
static guint16 ti_et_compose_seqs[] = {
/* do punctuation and numerals here */
'\'', 0, 0, 0, 0, 0, GDK_KEY_dead_grave, /* hopefully this has no side effects */
'\'', '\'', 0, 0, 0, 0, GDK_KEY_apostrophe,
'\'', '1', 0, 0, 0, 0, 0x1369,
'\'', '1', '0', 0, 0, 0, 0x1372,
'\'', '1', '0', '0', 0, 0, 0x137b,
'\'', '1', '0', 'k', 0, 0, 0x137c,
/* '\'', '1', '0', '0', '0', 0, 0x137b,
'\'', '1', '0', '0', '0', '0', 0, 0x137c, */
'\'', '2', 0, 0, 0, 0, 0x136a,
'\'', '2', '0', 0, 0, 0, 0x1373,
'\'', '3', 0, 0, 0, 0, 0x136b,
'\'', '3', '0', 0, 0, 0, 0x1374,
'\'', '4', 0, 0, 0, 0, 0x136c,
'\'', '4', '0', 0, 0, 0, 0x1375,
'\'', '5', 0, 0, 0, 0, 0x136d,
'\'', '5', '0', 0, 0, 0, 0x1376,
'\'', '6', 0, 0, 0, 0, 0x136e,
'\'', '6', '0', 0, 0, 0, 0x1377,
'\'', '7', 0, 0, 0, 0, 0x136f,
'\'', '7', '0', 0, 0, 0, 0x1378,
'\'', '8', 0, 0, 0, 0, 0x1370,
'\'', '8', '0', 0, 0, 0, 0x1379,
'\'', '9', 0, 0, 0, 0, 0x1371,
'\'', '9', '0', 0, 0, 0, 0x137a,
',', 0, 0, 0, 0, 0, 0x1363,
',', ',', 0, 0, 0, 0, ',',
'-', 0, 0, 0, 0, 0, '-',
'-', ':', 0, 0, 0, 0, 0x1365,
':', 0, 0, 0, 0, 0, 0x1361,
':', '-', 0, 0, 0, 0, 0x1366,
':', ':', 0, 0, 0, 0, 0x1362,
':', ':', ':', 0, 0, 0, ':',
':', '|', ':', 0, 0, 0, 0x1368,
';', 0, 0, 0, 0, 0, 0x1364,
';', ';', 0, 0, 0, 0, ';',
'<', 0, 0, 0, 0, 0, '<',
'<', '<', 0, 0, 0, 0, 0x00AB,
'>', 0, 0, 0, 0, 0, '>',
'>', '>', 0, 0, 0, 0, 0x00BB,
'?', 0, 0, 0, 0, 0, '?',
'?', '?', 0, 0, 0, 0, 0x1367,
'A', 0, 0, 0, 0, 0, 0x12A0,
'A','A', 0, 0, 0, 0, 0x12D0,
SYLW('B', 0x1260)
SYLW('C', 0x1328)
SYLW('D', 0x12f8)
'E', 0, 0, 0, 0, 0, 0x12A4,
'E','E', 0, 0, 0, 0, 0x12D4,
SYLW1('F', 0x1348)
'F', 'Y', 0, 0, 0, 0, 0x135A,
'F', 'Y', 'A', 0, 0, 0, 0x135A,
'F', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('F', 0x1348)
SYL('G', 0x1318)
SYLW('H', 0x1210)
'I', 0, 0, 0, 0, 0, 0x12A5,
'I','A', 0, 0, 0, 0, 0x12A3,
'I','E', 0, 0, 0, 0, 0x12A4,
'I','I', 0, 0, 0, 0, 0x12D5,
'I','I','E', 0, 0, 0, 0x12D4,
'I','I','a', 0, 0, 0, 0x12D3,
'I','I','e', 0, 0, 0, 0x12D0,
'I','I','i', 0, 0, 0, 0x12D2,
'I','I','o', 0, 0, 0, 0x12D6,
'I','I','u', 0, 0, 0, 0x12D1,
'I','O', 0, 0, 0, 0, 0x12A6,
'I','U', 0, 0, 0, 0, 0x12A1,
'I','W', 0, 0, 0, 0, 0x12A7,
'I','a', 0, 0, 0, 0, 0x12A3,
'I','e', 0, 0, 0, 0, 0x12A0,
'I','i', 0, 0, 0, 0, 0x12A2,
'I','o', 0, 0, 0, 0, 0x12A6,
'I','u', 0, 0, 0, 0, 0x12A1,
SYLWW('K', 0x12b8)
SYLW('L', 0x1208)
SYLW1('M', 0x1218)
'M', 'Y', 0, 0, 0, 0, 0x1359,
'M', 'Y', 'A', 0, 0, 0, 0x1359,
'M', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('M', 0x1218)
SYLW('N', 0x1298)
'O', 0, 0, 0, 0, 0, 0x12A6,
'O','O', 0, 0, 0, 0, 0x12D6,
SYLW('P', 0x1330)
SYLWW('Q', 0x1250)
SYLW1('R', 0x1228)
'R', 'Y', 0, 0, 0, 0, 0x1358,
'R', 'Y', 'A', 0, 0, 0, 0x1358,
'R', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('R', 0x1228)
'S', 0, 0, 0, 0, 0, 0x1338+5,
'S', 'A', 0, 0, 0, 0, 0x1338+3,
'S', 'E', 0, 0, 0, 0, 0x1338+4,
'S', 'I', 0, 0, 0, 0, 0x1338+2,
'S', 'O', 0, 0, 0, 0, 0x1338+6,
'S', 'S', 0, 0, 0, 0, 0x1340+5,
'S', 'S', 'A', 0, 0, 0, 0x1340+3,
'S', 'S', 'E', 0, 0, 0, 0x1340+4,
'S', 'S', 'I', 0, 0, 0, 0x1340+2,
'S', 'S', 'O', 0, 0, 0, 0x1340+6,
'S', 'S', 'U', 0, 0, 0, 0x1340+1,
'S', 'S', 'a', 0, 0, 0, 0x1340+3,
'S', 'S', 'e', 0, 0, 0, 0x1340,
'S', 'S', 'e', 'e', 0, 0, 0x1340+4,
'S', 'S', 'i', 0, 0, 0, 0x1340+2,
'S', 'S', 'o', 0, 0, 0, 0x1340+6,
'S', 'S', 'u', 0, 0, 0, 0x1340+1,
'S', 'U', 0, 0, 0, 0, 0x1338+1,
'S', 'W', 0, 0, 0, 0, 0x1338+7,
'S', 'W', 'A', 0, 0, 0, 0x1338+7,
'S', 'W', 'a', 0, 0, 0, 0x1338+7,
'S', 'a', 0, 0, 0, 0, 0x1338+3,
'S', 'e', 0, 0, 0, 0, 0x1338,
'S', 'e', 'e', 0, 0, 0, 0x1338+4,
'S', 'i', 0, 0, 0, 0, 0x1338+2,
'S', 'o', 0, 0, 0, 0, 0x1338+6,
'S', 'u', 0, 0, 0, 0, 0x1338+1,
'S', 'w', 'w', 0, 0, 0, 0x1338+7,
'S', 'w', 'w', 'a', 0, 0, 0x1338+7,
SYLW('T', 0x1320)
'U', 0, 0, 0, 0, 0, 0x12A1,
'U','U', 0, 0, 0, 0, 0x12D1,
SYLW('V', 0x1268)
SYL('W', 0x12c8)
SYLW('X', 0x1238)
SYL('Y', 0x12e8)
SYLW('Z', 0x12e0)
/* much, much work to be done for lone vowels */
'a', 0, 0, 0, 0, 0, 0x12A3,
'a','a', 0, 0, 0, 0, 0x12D3,
'a','a','a', 0, 0, 0, 0x12D0,
'a','a','a','a', 0, 0, 0x12A0,
SYLW('b', 0x1260)
SYLW('c', 0x1278)
SYLW('d', 0x12f0)
'e', 0, 0, 0, 0, 0, 0x12A5,
'e','A', 0, 0, 0, 0, 0x12A3,
'e','E', 0, 0, 0, 0, 0x12A4,
'e','I', 0, 0, 0, 0, 0x12A2,
'e','O', 0, 0, 0, 0, 0x12A6,
'e','U', 0, 0, 0, 0, 0x12A1,
'e','W', 0, 0, 0, 0, 0x12A7,
'e','a', 0, 0, 0, 0, 0x12D0,
'e','e', 0, 0, 0, 0, 0x12D5,
'e','e','E', 0, 0, 0, 0x12D4,
'e','e','a', 0, 0, 0, 0x12D3,
'e','e','e', 0, 0, 0, 0x12D0,
'e','e','i', 0, 0, 0, 0x12D2,
'e','e','o', 0, 0, 0, 0x12D6,
'e','e','u', 0, 0, 0, 0x12D1,
'e','i', 0, 0, 0, 0, 0x12A2,
'e','o', 0, 0, 0, 0, 0x12A6,
'e','u', 0, 0, 0, 0, 0x12A1,
SYLW1('f', 0x1348)
'f', 'Y', 0, 0, 0, 0, 0x135A,
'f', 'Y', 'A', 0, 0, 0, 0x135A,
'f', 'Y', 'a', 0, 0, 0, 0x135A,
SYLW2('f', 0x1348)
SYLWW('g', 0x1308)
'h', 0, 0, 0, 0, 0, 0x1200+5,
'h', 'A', 0, 0, 0, 0, 0x1200+3,
'h', 'E', 0, 0, 0, 0, 0x1200+4,
'h', 'I', 0, 0, 0, 0, 0x1200+2,
'h', 'O', 0, 0, 0, 0, 0x1200+6,
'h', 'U', 0, 0, 0, 0, 0x1200+1,
'h', 'W', 0, 0, 0, 0, 0x1280+11,
'h', 'W', '\'', 0, 0, 0, 0x1280+13,
'h', 'W', 'A', 0, 0, 0, 0x1280+11,
'h', 'W', 'E', 0, 0, 0, 0x1280+12,
'h', 'W', 'I', 0, 0, 0, 0x1280+10,
'h', 'W', 'U', 0, 0, 0, 0x1280+13,
'h', 'W', 'a', 0, 0, 0, 0x1280+11,
'h', 'W', 'e', 0, 0, 0, 0x1280+8,
'h', 'W', 'e', 'e', 0, 0, 0x1280+12,
'h', 'W', 'i', 0, 0, 0, 0x1280+10,
'h', 'W', 'u', 0, 0, 0, 0x1280+13,
'h', 'a', 0, 0, 0, 0, 0x1200+3,
'h', 'e', 0, 0, 0, 0, 0x1200,
'h', 'e', 'e', 0, 0, 0, 0x1200+4,
'h', 'h', 0, 0, 0, 0, 0x1280+5,
'h', 'h', 'A', 0, 0, 0, 0x1280+3,
'h', 'h', 'E', 0, 0, 0, 0x1280+4,
'h', 'h', 'I', 0, 0, 0, 0x1280+2,
'h', 'h', 'O', 0, 0, 0, 0x1280+6,
'h', 'h', 'O', 'O', 0, 0, 0x1280+8,
'h', 'h', 'U', 0, 0, 0, 0x1280+1,
'h', 'h', 'W', 0, 0, 0, 0x1280+11,
'h', 'h', 'W', '\'', 0, 0, 0x1280+13,
'h', 'h', 'W', 'A', 0, 0, 0x1280+11,
'h', 'h', 'W', 'E', 0, 0, 0x1280+12,
'h', 'h', 'W', 'I', 0, 0, 0x1280+10,
'h', 'h', 'W', 'U', 0, 0, 0x1280+13,
'h', 'h', 'W', 'a', 0, 0, 0x1280+11,
'h', 'h', 'W', 'e', 0, 0, 0x1280+8,
'h', 'h', 'W', 'e', 'e', 0, 0x1280+12,
'h', 'h', 'W', 'i', 0, 0, 0x1280+10,
'h', 'h', 'W', 'u', 0, 0, 0x1280+13,
'h', 'h', 'a', 0, 0, 0, 0x1280+3,
'h', 'h', 'e', 0, 0, 0, 0x1280,
'h', 'h', 'e', 'e', 0, 0, 0x1280+4,
'h', 'h', 'i', 0, 0, 0, 0x1280+2,
'h', 'h', 'o', 0, 0, 0, 0x1280+6,
'h', 'h', 'o', 'o', 0, 0, 0x1280+8,
'h', 'h', 'u', 0, 0, 0, 0x1280+1,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 0, 0, 0x1280+11,
'h', 'h', 'w', 'w', '\'', 0, 0x1280+13,
'h', 'h', 'w', 'w', 'E', 0, 0x1280+12,
'h', 'h', 'w', 'w', 'a', 0, 0x1280+11,
'h', 'h', 'w', 'w', 'e', 0, 0x1280+8,
/* 'h', 'h', 'w', 'w', 'e', 'e', 0, 0x1280+12, too long for now */
'h', 'h', 'w', 'w', 'i', 0, 0x1280+10,
'h', 'h', 'w', 'w', 'u', 0, 0x1280+13,
'h', 'i', 0, 0, 0, 0, 0x1200+2,
'h', 'o', 0, 0, 0, 0, 0x1200+6,
'h', 'u', 0, 0, 0, 0, 0x1200+1,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 0, 0, 0, 0x1280+11,
'h', 'w', 'w', '\'', 0, 0, 0x1280+13,
'h', 'w', 'w', 'E', 0, 0, 0x1280+12,
'h', 'w', 'w', 'a', 0, 0, 0x1280+11,
'h', 'w', 'w', 'e', 0, 0, 0x1280+8,
'h', 'w', 'w', 'e', 'e', 0, 0x1280+12,
'h', 'w', 'w', 'i', 0, 0, 0x1280+10,
'h', 'w', 'w', 'u', 0, 0, 0x1280+13,
'i', 0, 0, 0, 0, 0, 0x12A2,
'i', 'i', 0, 0, 0, 0, 0x12D2,
SYLW('j', 0x1300)
SYLWW('k', 0x12a8)
SYLW('l', 0x1208)
SYLW1('m', 0x1218)
'm', 'Y', 0, 0, 0, 0, 0x1359,
'm', 'Y', 'A', 0, 0, 0, 0x1359,
'm', 'Y', 'a', 0, 0, 0, 0x1359,
SYLW2('m', 0x1218)
SYLW('n', 0x1290)
'o', 0, 0, 0, 0, 0, 0x12A6,
'o','o', 0, 0, 0, 0, 0x12D6,
SYLW('p', 0x1350)
SYLWW('q', 0x1240)
SYLW1('r', 0x1228)
'r', 'Y', 0, 0, 0, 0, 0x1358,
'r', 'Y', 'A', 0, 0, 0, 0x1358,
'r', 'Y', 'a', 0, 0, 0, 0x1358,
SYLW2('r', 0x1228)
's', 0, 0, 0, 0, 0, 0x1230+5,
's', 'A', 0, 0, 0, 0, 0x1230+3,
's', 'E', 0, 0, 0, 0, 0x1230+4,
's', 'I', 0, 0, 0, 0, 0x1230+2,
's', 'O', 0, 0, 0, 0, 0x1230+6,
's', 'U', 0, 0, 0, 0, 0x1230+1,
's', 'W', 0, 0, 0, 0, 0x1230+7,
's', 'W', 'A', 0, 0, 0, 0x1230+7,
's', 'W', 'a', 0, 0, 0, 0x1230+7,
's', 'a', 0, 0, 0, 0, 0x1230+3,
's', 'e', 0, 0, 0, 0, 0x1230,
's', 'e', 'e', 0, 0, 0, 0x1230+4,
's', 'i', 0, 0, 0, 0, 0x1230+2,
's', 'o', 0, 0, 0, 0, 0x1230+6,
's', 's', 0, 0, 0, 0, 0x1220+5,
's', 's', 'A', 0, 0, 0, 0x1220+3,
's', 's', 'E', 0, 0, 0, 0x1220+4,
's', 's', 'I', 0, 0, 0, 0x1220+2,
's', 's', 'O', 0, 0, 0, 0x1220+6,
's', 's', 'U', 0, 0, 0, 0x1220+1,
's', 's', 'W', 0, 0, 0, 0x1220+7,
's', 's', 'W', 'A', 0, 0, 0x1220+7,
's', 's', 'W', 'a', 0, 0, 0x1220+7,
's', 's', 'a', 0, 0, 0, 0x1220+3,
's', 's', 'e', 0, 0, 0, 0x1220,
's', 's', 'e', 'e', 0, 0, 0x1220+4,
's', 's', 'i', 0, 0, 0, 0x1220+2,
's', 's', 'o', 0, 0, 0, 0x1220+6,
's', 's', 'u', 0, 0, 0, 0x1220+1,
's', 's', 'w', 'w', 0, 0, 0x1220+7,
's', 's', 'w', 'w', 'a', 0, 0x1220+7,
's', 'u', 0, 0, 0, 0, 0x1230+1,
's', 'w', 'w', 0, 0, 0, 0x1230+7,
's', 'w', 'w', 'a', 0, 0, 0x1230+7,
SYLW('t', 0x1270)
'u', 0, 0, 0, 0, 0, 0x12A1,
'u','u', 0, 0, 0, 0, 0x12D1,
SYLW('v', 0x1268)
SYL('w', 0x12c8)
SYLW('x', 0x1238)
SYL('y', 0x12e8)
SYLW('z', 0x12d8)
GDK_KEY_Shift_L, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
GDK_KEY_Shift_R, GDK_KEY_space, 0, 0, 0, 0, 0x1361,
};
static void
ti_et_class_init (GtkIMContextSimpleClass *class)
{
}
static void
ti_et_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
ti_et_compose_seqs,
5,
G_N_ELEMENTS (ti_et_compose_seqs) / (5 + 2));
}
static const GtkIMContextInfo ti_et_info = {
"ti_et", /* ID */
NC_("input method menu", "Tigrigna-Ethiopian (EZ+)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"ti" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&ti_et_info
};
#ifndef INCLUDE_IM_ti_et
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_ti_et_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
ti_et_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "ti_et") == 0)
return g_object_new (type_ti_et_translit, NULL);
else
return NULL;
}

View File

@@ -1,280 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2000 Red Hat Software
* Copyright (C) 2000 SuSE Linux Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original author: Owen Taylor <otaylor@redhat.com>
*
* Modified for VIQR - Robert Brady <robert@suse.co.uk>
*
*/
#include "config.h"
#include <string.h>
#include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "gtk/gtkimmodule.h"
#include "gtk/gtkintl.h"
GType type_viqr_translit = 0;
static void viqr_class_init (GtkIMContextSimpleClass *class);
static void viqr_init (GtkIMContextSimple *im_context);
static void
viqr_register_type (GTypeModule *module)
{
const GTypeInfo object_info =
{
sizeof (GtkIMContextSimpleClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) viqr_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkIMContextSimple),
0,
(GInstanceInitFunc) viqr_init,
};
type_viqr_translit =
g_type_module_register_type (module,
GTK_TYPE_IM_CONTEXT_SIMPLE,
"GtkIMContextViqr",
&object_info, 0);
}
static guint16 viqr_compose_seqs[] = {
GDK_KEY_A, 0, 0, 0, 0, 'A',
GDK_KEY_A, GDK_KEY_apostrophe, 0, 0, 0, 0xc1,
GDK_KEY_A, GDK_KEY_parenleft, 0, 0, 0, 0x102,
GDK_KEY_A, GDK_KEY_parenleft, GDK_KEY_apostrophe, 0, 0, 0x1eae,
GDK_KEY_A, GDK_KEY_parenleft, GDK_KEY_period, 0, 0, 0x1eb6,
GDK_KEY_A, GDK_KEY_parenleft, GDK_KEY_question, 0, 0, 0x1eb2,
GDK_KEY_A, GDK_KEY_parenleft, GDK_KEY_grave, 0, 0, 0x1eb0,
GDK_KEY_A, GDK_KEY_parenleft, GDK_KEY_asciitilde, 0, 0, 0x1eb4,
GDK_KEY_A, GDK_KEY_period, 0, 0, 0, 0x1ea0,
GDK_KEY_A, GDK_KEY_question, 0, 0, 0, 0x1ea2,
GDK_KEY_A, GDK_KEY_asciicircum, 0, 0, 0, 0xc2,
GDK_KEY_A, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ea4,
GDK_KEY_A, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1eac,
GDK_KEY_A, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ea8,
GDK_KEY_A, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ea6,
GDK_KEY_A, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1eaa,
GDK_KEY_A, GDK_KEY_grave, 0, 0, 0, 0xc0,
GDK_KEY_A, GDK_KEY_asciitilde, 0, 0, 0, 0xc3,
GDK_KEY_D, 0, 0, 0, 0, 'D',
GDK_KEY_D, GDK_KEY_D, 0, 0, 0, 0x110,
GDK_KEY_D, GDK_KEY_d, 0, 0, 0, 0x110,
GDK_KEY_E, 0, 0, 0, 0, 'E',
GDK_KEY_E, GDK_KEY_apostrophe, 0, 0, 0, 0xc9,
GDK_KEY_E, GDK_KEY_period, 0, 0, 0, 0x1eb8,
GDK_KEY_E, GDK_KEY_question, 0, 0, 0, 0x1eba,
GDK_KEY_E, GDK_KEY_asciicircum, 0, 0, 0, 0xca,
GDK_KEY_E, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ebe,
GDK_KEY_E, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1ec6,
GDK_KEY_E, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ec2,
GDK_KEY_E, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ec0,
GDK_KEY_E, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1ec4,
GDK_KEY_E, GDK_KEY_grave, 0, 0, 0, 0xc8,
GDK_KEY_E, GDK_KEY_asciitilde, 0, 0, 0, 0x1ebc,
GDK_KEY_I, 0, 0, 0, 0, 'I',
GDK_KEY_I, GDK_KEY_apostrophe, 0, 0, 0, 0xcd,
GDK_KEY_I, GDK_KEY_period, 0, 0, 0, 0x1eca,
GDK_KEY_I, GDK_KEY_question, 0, 0, 0, 0x1ec8,
GDK_KEY_I, GDK_KEY_grave, 0, 0, 0, 0xcc,
GDK_KEY_I, GDK_KEY_asciitilde, 0, 0, 0, 0x128,
GDK_KEY_O, 0, 0, 0, 0, 'O',
GDK_KEY_O, GDK_KEY_apostrophe, 0, 0, 0, 0xD3,
GDK_KEY_O, GDK_KEY_plus, 0, 0, 0, 0x1a0,
GDK_KEY_O, GDK_KEY_plus, GDK_KEY_apostrophe, 0, 0, 0x1eda,
GDK_KEY_O, GDK_KEY_plus, GDK_KEY_period, 0, 0, 0x1ee2,
GDK_KEY_O, GDK_KEY_plus, GDK_KEY_question, 0, 0, 0x1ede,
GDK_KEY_O, GDK_KEY_plus, GDK_KEY_grave, 0, 0, 0x1edc,
GDK_KEY_O, GDK_KEY_plus, GDK_KEY_asciitilde, 0, 0, 0x1ee0,
GDK_KEY_O, GDK_KEY_period, 0, 0, 0, 0x1ecc,
GDK_KEY_O, GDK_KEY_question, 0, 0, 0, 0x1ece,
GDK_KEY_O, GDK_KEY_asciicircum, 0, 0, 0, 0xd4,
GDK_KEY_O, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ed0,
GDK_KEY_O, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1ed8,
GDK_KEY_O, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ed4,
GDK_KEY_O, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ed2,
GDK_KEY_O, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1ed6,
GDK_KEY_O, GDK_KEY_grave, 0, 0, 0, 0xD2,
GDK_KEY_O, GDK_KEY_asciitilde, 0, 0, 0, 0xD5,
GDK_KEY_U, 0, 0, 0, 0, 'U',
GDK_KEY_U, GDK_KEY_apostrophe, 0, 0, 0, 0xDA,
GDK_KEY_U, GDK_KEY_plus, 0, 0, 0, 0x1af,
GDK_KEY_U, GDK_KEY_plus, GDK_KEY_apostrophe, 0, 0, 0x1ee8,
GDK_KEY_U, GDK_KEY_plus, GDK_KEY_period, 0, 0, 0x1ef0,
GDK_KEY_U, GDK_KEY_plus, GDK_KEY_question, 0, 0, 0x1eec,
GDK_KEY_U, GDK_KEY_plus, GDK_KEY_grave, 0, 0, 0x1eea,
GDK_KEY_U, GDK_KEY_plus, GDK_KEY_asciitilde, 0, 0, 0x1eee,
GDK_KEY_U, GDK_KEY_period, 0, 0, 0, 0x1ee4,
GDK_KEY_U, GDK_KEY_question, 0, 0, 0, 0x1ee6,
GDK_KEY_U, GDK_KEY_grave, 0, 0, 0, 0xd9,
GDK_KEY_U, GDK_KEY_asciitilde, 0, 0, 0, 0x168,
GDK_KEY_Y, 0, 0, 0, 0, 'Y',
GDK_KEY_Y, GDK_KEY_apostrophe, 0, 0, 0, 0xdd,
GDK_KEY_Y, GDK_KEY_period, 0, 0, 0, 0x1ef4,
GDK_KEY_Y, GDK_KEY_question, 0, 0, 0, 0x1ef6,
GDK_KEY_Y, GDK_KEY_grave, 0, 0, 0, 0x1ef2,
GDK_KEY_Y, GDK_KEY_asciitilde, 0, 0, 0, 0x1ef8,
/* Do we need anything else here? */
GDK_KEY_backslash, 0, 0, 0, 0, 0,
GDK_KEY_backslash, GDK_KEY_apostrophe, 0, 0, 0, '\'',
GDK_KEY_backslash, GDK_KEY_parenleft, 0, 0, 0, '(',
GDK_KEY_backslash, GDK_KEY_plus, 0, 0, 0, '+',
GDK_KEY_backslash, GDK_KEY_period, 0, 0, 0, '.',
GDK_KEY_backslash, GDK_KEY_question, 0, 0, 0, '?',
GDK_KEY_backslash, GDK_KEY_D, 0, 0, 0, 'D',
GDK_KEY_backslash, GDK_KEY_backslash, 0, 0, 0, '\\',
GDK_KEY_backslash, GDK_KEY_asciicircum, 0, 0, 0, '^',
GDK_KEY_backslash, GDK_KEY_grave, 0, 0, 0, '`',
GDK_KEY_backslash, GDK_KEY_d, 0, 0, 0, 'd',
GDK_KEY_backslash, GDK_KEY_asciitilde, 0, 0, 0, '~',
GDK_KEY_a, 0, 0, 0, 0, 'a',
GDK_KEY_a, GDK_KEY_apostrophe, 0, 0, 0, 0xe1,
GDK_KEY_a, GDK_KEY_parenleft, 0, 0, 0, 0x103,
GDK_KEY_a, GDK_KEY_parenleft, GDK_KEY_apostrophe, 0, 0, 0x1eaf,
GDK_KEY_a, GDK_KEY_parenleft, GDK_KEY_period, 0, 0, 0x1eb7,
GDK_KEY_a, GDK_KEY_parenleft, GDK_KEY_question, 0, 0, 0x1eb3,
GDK_KEY_a, GDK_KEY_parenleft, GDK_KEY_grave, 0, 0, 0x1eb1,
GDK_KEY_a, GDK_KEY_parenleft, GDK_KEY_asciitilde, 0, 0, 0x1eb5,
GDK_KEY_a, GDK_KEY_period, 0, 0, 0, 0x1ea1,
GDK_KEY_a, GDK_KEY_question, 0, 0, 0, 0x1ea3,
GDK_KEY_a, GDK_KEY_asciicircum, 0, 0, 0, 0xe2,
GDK_KEY_a, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ea5,
GDK_KEY_a, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1ead,
GDK_KEY_a, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ea9,
GDK_KEY_a, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ea7,
GDK_KEY_a, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1eab,
GDK_KEY_a, GDK_KEY_grave, 0, 0, 0, 0xe0,
GDK_KEY_a, GDK_KEY_asciitilde, 0, 0, 0, 0xe3,
GDK_KEY_d, 0, 0, 0, 0, 'd',
GDK_KEY_d, GDK_KEY_d, 0, 0, 0, 0x111,
GDK_KEY_e, 0, 0, 0, 0, 'e',
GDK_KEY_e, GDK_KEY_apostrophe, 0, 0, 0, 0xe9,
GDK_KEY_e, GDK_KEY_period, 0, 0, 0, 0x1eb9,
GDK_KEY_e, GDK_KEY_question, 0, 0, 0, 0x1ebb,
GDK_KEY_e, GDK_KEY_asciicircum, 0, 0, 0, 0xea,
GDK_KEY_e, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ebf,
GDK_KEY_e, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1ec7,
GDK_KEY_e, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ec3,
GDK_KEY_e, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ec1,
GDK_KEY_e, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1ec5,
GDK_KEY_e, GDK_KEY_grave, 0, 0, 0, 0xe8,
GDK_KEY_e, GDK_KEY_asciitilde, 0, 0, 0, 0x1ebd,
GDK_KEY_i, 0, 0, 0, 0, 'i',
GDK_KEY_i, GDK_KEY_apostrophe, 0, 0, 0, 0xed,
GDK_KEY_i, GDK_KEY_period, 0, 0, 0, 0x1ecb,
GDK_KEY_i, GDK_KEY_question, 0, 0, 0, 0x1ec9,
GDK_KEY_i, GDK_KEY_grave, 0, 0, 0, 0xec,
GDK_KEY_i, GDK_KEY_asciitilde, 0, 0, 0, 0x129,
GDK_KEY_o, 0, 0, 0, 0, 'o',
GDK_KEY_o, GDK_KEY_apostrophe, 0, 0, 0, 0xF3,
GDK_KEY_o, GDK_KEY_plus, 0, 0, 0, 0x1a1,
GDK_KEY_o, GDK_KEY_plus, GDK_KEY_apostrophe, 0, 0, 0x1edb,
GDK_KEY_o, GDK_KEY_plus, GDK_KEY_period, 0, 0, 0x1ee3,
GDK_KEY_o, GDK_KEY_plus, GDK_KEY_question, 0, 0, 0x1edf,
GDK_KEY_o, GDK_KEY_plus, GDK_KEY_grave, 0, 0, 0x1edd,
GDK_KEY_o, GDK_KEY_plus, GDK_KEY_asciitilde, 0, 0, 0x1ee1,
GDK_KEY_o, GDK_KEY_period, 0, 0, 0, 0x1ecd,
GDK_KEY_o, GDK_KEY_question, 0, 0, 0, 0x1ecf,
GDK_KEY_o, GDK_KEY_asciicircum, 0, 0, 0, 0xf4,
GDK_KEY_o, GDK_KEY_asciicircum, GDK_KEY_apostrophe, 0, 0, 0x1ed1,
GDK_KEY_o, GDK_KEY_asciicircum, GDK_KEY_period, 0, 0, 0x1ed9,
GDK_KEY_o, GDK_KEY_asciicircum, GDK_KEY_question, 0, 0, 0x1ed5,
GDK_KEY_o, GDK_KEY_asciicircum, GDK_KEY_grave, 0, 0, 0x1ed3,
GDK_KEY_o, GDK_KEY_asciicircum, GDK_KEY_asciitilde, 0, 0, 0x1ed7,
GDK_KEY_o, GDK_KEY_grave, 0, 0, 0, 0xF2,
GDK_KEY_o, GDK_KEY_asciitilde, 0, 0, 0, 0xF5,
GDK_KEY_u, 0, 0, 0, 0, 'u',
GDK_KEY_u, GDK_KEY_apostrophe, 0, 0, 0, 0xFA,
GDK_KEY_u, GDK_KEY_plus, 0, 0, 0, 0x1b0,
GDK_KEY_u, GDK_KEY_plus, GDK_KEY_apostrophe, 0, 0, 0x1ee9,
GDK_KEY_u, GDK_KEY_plus, GDK_KEY_period, 0, 0, 0x1ef1,
GDK_KEY_u, GDK_KEY_plus, GDK_KEY_question, 0, 0, 0x1eed,
GDK_KEY_u, GDK_KEY_plus, GDK_KEY_grave, 0, 0, 0x1eeb,
GDK_KEY_u, GDK_KEY_plus, GDK_KEY_asciitilde, 0, 0, 0x1eef,
GDK_KEY_u, GDK_KEY_period, 0, 0, 0, 0x1ee5,
GDK_KEY_u, GDK_KEY_question, 0, 0, 0, 0x1ee7,
GDK_KEY_u, GDK_KEY_grave, 0, 0, 0, 0xf9,
GDK_KEY_u, GDK_KEY_asciitilde, 0, 0, 0, 0x169,
GDK_KEY_y, 0, 0, 0, 0, 'y',
GDK_KEY_y, GDK_KEY_apostrophe, 0, 0, 0, 0xfd,
GDK_KEY_y, GDK_KEY_period, 0, 0, 0, 0x1ef5,
GDK_KEY_y, GDK_KEY_question, 0, 0, 0, 0x1ef7,
GDK_KEY_y, GDK_KEY_grave, 0, 0, 0, 0x1ef3,
GDK_KEY_y, GDK_KEY_asciitilde, 0, 0, 0, 0x1ef9,
};
static void
viqr_class_init (GtkIMContextSimpleClass *class)
{
}
static void
viqr_init (GtkIMContextSimple *im_context)
{
gtk_im_context_simple_add_table (im_context,
viqr_compose_seqs,
4,
G_N_ELEMENTS (viqr_compose_seqs) / (4 + 2));
}
static const GtkIMContextInfo viqr_info = {
"viqr", /* ID */
NC_("input method menu", "Vietnamese (VIQR)"), /* Human readable name */
GETTEXT_PACKAGE, /* Translation domain */
GTK_LOCALEDIR, /* Dir for bindtextdomain (not strictly needed for "gtk+") */
"vi" /* Languages for which this module is the default */
};
static const GtkIMContextInfo *info_list[] = {
&viqr_info
};
#ifndef INCLUDE_IM_viqr
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
#else
#define MODULE_ENTRY(type, function) type _gtk_immodule_viqr_ ## function
#endif
MODULE_ENTRY (void, init) (GTypeModule *module)
{
viqr_register_type (module);
}
MODULE_ENTRY (void, exit) (void)
{
}
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
int *n_contexts)
{
*contexts = info_list;
*n_contexts = G_N_ELEMENTS (info_list);
}
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
{
if (strcmp (context_id, "viqr") == 0)
return g_object_new (type_viqr_translit, NULL);
else
return NULL;
}

View File

@@ -16,20 +16,7 @@ if not disable_modules
endif
endif
all_immodules = [
'am-et',
'cedilla',
'cyrillic-translit',
'inuktitut',
'ipa',
'multipress',
'thai',
'ti-er',
'ti-et',
'viqr',
]
all_immodules += backend_immodules
all_immodules = backend_immodules
# Allow building some or all immodules included
included_immodules = get_option('with-included-immodules')
@@ -56,28 +43,8 @@ endforeach
immodules_subdir = 'gtk-4.0/@0@/immodules'.format(gtk_binary_version)
immodules_install_dir = join_paths(gtk_libdir, immodules_subdir)
mp_confdir = join_paths(gtk_sysconfdir, 'gtk-4.0')
mp_cargs = [
'-DMULTIPRESS_LOCALEDIR=""', # FIXME: where is $(mplocaledir) ever set?
'-DMULTIPRESS_CONFDIR="@0@"'.format(mp_confdir),
'-DGDK_DISABLE_DEPRECATION_WARNINGS',
]
install_data('im-multipress.conf', install_dir : mp_confdir)
method_defs = [
['am-et', files('imam-et.c')],
['cedilla', files('imcedilla.c')],
['cyrillic-translit', files('imcyrillic-translit.c')],
['ti-er', files('imti-er.c')],
['ti-et', files('imti-et.c')],
['thai', files('thai-charprop.c', 'gtkimcontextthai.c', 'imthai.c')],
['viqr', files('imviqr.c')],
['inuktitut', files('iminuktitut.c')],
['ipa', files('imipa.c')],
# backend modules
['broadway', files('imbroadway.c')],
['multipress', files('gtkimcontextmultipress.c', 'immultipress.c'), [], mp_cargs],
['quartz', ('imquartz.c'), [], ('-xobjective-c')],
['xim', files('gtkimcontextxim.c', 'imxim.c')],
['ime', files('gtkimcontextime.c', 'imime.c'), ['imm32']],

View File

@@ -1,138 +0,0 @@
#include "thai-charprop.h"
const gshort thai_char_type[256] = {
/* 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F */
/* CL1 */
/*00*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
/*10*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
/* Lao zone: [U+0E80..U+0EDF] */
/*20*/ _ND, _NC, _NC, _ND, _NC, _ND, _ND, _NC,
_NC, _ND, _NC, _ND, _ND, _NC, _ND, _ND,
/*30*/ _ND, _ND, _ND, _ND, _NC, _NC, _NC, _NC,
_ND, _NC, _NC, _UC, _NC, _UC, _NC, _UC,
/*40*/ _ND, _NC, _UC, _NC, _ND, _NC, _ND, _NC,
_ND, _ND, _NC, _NC, _ND, _NC, _NC, _ND,
/*50*/ _ND, _AV, _ND, _AM, _AV, _AV, _AV, _AV,
_BV, _BV, _ND, _AV, _BD, _NC, _ND, _ND,
/*60*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _AD,
_TN, _TN, _TN, _TN, _AD, _AD, _ND, _ND,
/*70*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _NC, _NC, _ND, _ND,
/* CL2 */
/*80*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
/*90*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
/* Thai zone: [U+0E00..U+0E5F] */
/*A0*/ _ND, _NC, _NC, _NC, _NC, _NC, _NC, _NC,
_NC, _NC, _NC, _NC, _NC, _SC, _BC, _BC,
/*B0*/ _SC, _NC, _NC, _NC, _NC, _NC, _NC, _NC,
_NC, _NC, _NC, _UC, _NC, _UC, _NC, _UC,
/*C0*/ _NC, _NC, _NC, _NC, _ND, _NC, _ND, _NC,
_NC, _NC, _NC, _NC, _UC, _NC, _NC, _ND,
/*D0*/ _ND, _AV, _ND, _AM, _AV, _AV, _AV, _AV,
_BV, _BV, _BD, _ND, _ND, _ND, _ND, _ND,
/*E0*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _AD,
_TN, _TN, _TN, _TN, _AD, _AD, _AD, _ND,
/*F0*/ _ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
_ND, _ND, _ND, _ND, _ND, _ND, _ND, _ND,
};
const gshort thai_TAC_char_class[256] = {
/* 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F */
/* CL1 */
/*00*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
/*10*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
/* Lao zone: [U+0E80..U+0EDF] */
/*20*/ NON,CONS,CONS, NON,CONS, NON, NON,CONS,
CONS, NON,CONS, NON, NON,CONS, NON, NON,
/*30*/ NON, NON, NON, NON,CONS,CONS,CONS,CONS,
NON,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
/*40*/ NON,CONS,CONS,CONS, NON,CONS, NON,CONS,
NON, NON,CONS,CONS, NON,CONS,CONS, NON,
/*50*/ FV1, AV2, FV1, AM, AV1, AV3, AV2, AV3,
BV1, BV2, NON, AV2,BCON, FV3, NON, NON,
/*60*/ LV, LV, LV, LV, LV, NON, NON, NON,
TONE,TONE,TONE,TONE, AD1, AD4, NON, NON,
/*70*/ NON, NON, NON, NON, NON, NON, NON, NON,
NON, NON, NON, NON,CONS,CONS, NON,CTRL,
/* CL2 */
/*80*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
/*90*/ CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,CTRL,
/* Thai zone: [U+0E00..U+0E5F] */
/*A0*/ NON,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
/*B0*/ CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
CONS,CONS,CONS,CONS,CONS,CONS,CONS,CONS,
/*C0*/ CONS,CONS,CONS,CONS, FV3,CONS, FV3,CONS,
CONS,CONS,CONS,CONS,CONS,CONS,CONS, NON,
/*D0*/ FV1, AV2, FV1, AM, AV1, AV3, AV2, AV3,
BV1, BV2, BD, NON, NON, NON, NON, NON,
/*E0*/ LV, LV, LV, LV, LV, FV2, NON, AD2,
TONE,TONE,TONE,TONE, AD1, AD4, AD3, NON,
/*F0*/ NON, NON, NON, NON, NON, NON, NON, NON,
NON, NON, NON, NON, NON, NON, NON,CTRL,
};
const gchar thai_TAC_compose_input[20][20] = {
/* row: Cn-1, column: Cn */
/*CTRL NON CONS LV FV1 FV2 FV3 AM BV1 BV2
* BD TONE AD1 AD2 AD3 AD4 AV1 AV2 AV3 BCON*/
/*CTRL*/{'X','A','A','A','A','A','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*NON */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*CONS*/{'X','A','A','A','A','S','A','C','C','C',
'C','C','C','C','C','C','C','C','C','C'},
/*LV */{'X','S','A','S','S','S','S','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*FV1 */{'X','A','A','A','A','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*FV2 */{'X','A','A','A','A','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*FV3 */{'X','A','A','A','S','A','S','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*AM */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*BV1 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','C','R','R','C','R','R','R','R'},
/*BV2 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','R','R','R','R','R','R','R','R'},
/*BD */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*TONE*/{'X','A','A','A','A','A','A','C','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*AD1 */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*AD2 */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*AD3 */{'X','A','A','A','S','S','A','R','R','R',
'R','R','R','R','R','R','R','R','R','R'},
/*AD4 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','R','R','R','R','R','R','R','R'},
/*AV1 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','C','R','R','C','R','R','R','R'},
/*AV2 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','R','R','R','R','R','R','R','R'},
/*AV3 */{'X','A','A','A','S','S','A','R','R','R',
'R','C','R','C','R','R','R','R','R','R'},
/*BCON*/{'X','A','A','A','A','S','A','C','C','C',
'R','C','R','R','R','C','C','C','C','R'},
};

View File

@@ -1,96 +0,0 @@
/* Pango
* thai-charprop.h:
*
* Copyright (C) 1999 Red Hat Software
* Author: Owen Taylor <otaylor@redhat.com>
*
* Software and Language Engineering Laboratory, NECTEC
* Author: Theppitak Karoonboonyanan <thep@links.nectec.or.th>
*
* Copyright (c) 1996-2000 by Sun Microsystems, Inc.
* Author: Chookij Vanatham <Chookij.Vanatham@Eng.Sun.COM>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __THAI_CHARPROP_H__
#define __THAI_CHARPROP_H__
#include <glib.h>
#define isthai(wc) (0x0E00 <= (wc) && (wc) < 0x0E60)
#define islao(wc) (0x0E80 <= (wc) && (wc) < 0x0EE0)
/* ucs2tis()
* Lao: [0x0E80..0x0EDF] -> [0x20..0x7F]
* Thai: [0x0E00..0x0E5F] -> [0xA0..0xFF]
*/
#define ucs2tis(wc) (((wc) - 0x0E00 + 0x20)^0x80)
/* Define TACTIS character classes */
#define CTRL 0
#define NON 1
#define CONS 2
#define LV 3
#define FV1 4
#define FV2 5
#define FV3 6
#define AM 7
#define BV1 8
#define BV2 9
#define BD 10
#define TONE 11
#define AD1 12
#define AD2 13
#define AD3 14
#define AD4 15
#define AV1 16
#define AV2 17
#define AV3 18
#define BCON 19
#define _ND 0
#define _NC 1
#define _UC (1<<1)
#define _BC (1<<2)
#define _SC (1<<3)
#define _AV (1<<4)
#define _BV (1<<5)
#define _TN (1<<6)
#define _AD (1<<7)
#define _BD (1<<8)
#define _AM (1<<9)
#define NoTailCons _NC
#define UpTailCons _UC
#define BotTailCons _BC
#define SpltTailCons _SC
#define Cons (NoTailCons|UpTailCons|BotTailCons|SpltTailCons)
#define AboveVowel _AV
#define BelowVowel _BV
#define Tone _TN
#define AboveDiac _AD
#define BelowDiac _BD
#define SaraAm _AM
#define is_char_type(wc, mask) (thai_char_type[ucs2tis ((wc))] & (mask))
#define TAC_char_class(wc) \
(isthai(wc)||islao(wc) ? thai_TAC_char_class[ucs2tis (wc)] : NON)
#define TAC_compose_input(wc1,wc2) \
thai_TAC_compose_input[TAC_char_class(wc1)][TAC_char_class(wc2)]
extern const gshort thai_char_type[256];
extern const gshort thai_TAC_char_class[256];
extern const gchar thai_TAC_compose_input[20][20];
#endif /* __THAI_CHARPROP_H__ */