Blame src/ibuskeymap.h

Packit Service 1d8f1c
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
Packit Service 1d8f1c
/* vim:set et sts=4: */
Packit Service 1d8f1c
/* IBus - The Input Bus
Packit Service 1d8f1c
 * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
 * Copyright (C) 2008-2010 Red Hat, Inc.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This library is free software; you can redistribute it and/or
Packit Service 1d8f1c
 * modify it under the terms of the GNU Lesser General Public
Packit Service 1d8f1c
 * License as published by the Free Software Foundation; either
Packit Service 1d8f1c
 * version 2.1 of the License, or (at your option) any later version.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This library is distributed in the hope that it will be useful,
Packit Service 1d8f1c
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 1d8f1c
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 1d8f1c
 * Lesser General Public License for more details.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * You should have received a copy of the GNU Lesser General Public
Packit Service 1d8f1c
 * License along with this library; if not, write to the Free Software
Packit Service 1d8f1c
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
Packit Service 1d8f1c
 * USA
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION)
Packit Service 1d8f1c
#error "Only <ibus.h> can be included directly"
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef __IBUS_KEYMAP_H_
Packit Service 1d8f1c
#define __IBUS_KEYMAP_H_
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * SECTION: ibuskeymap
Packit Service 1d8f1c
 * @short_description: Keyboard mapping handling.
Packit Service 1d8f1c
 * @title: IBusKeymap
Packit Service 1d8f1c
 * @stability: Stable
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An IBusKeymap defines the mapping between keyboard scancodes and
Packit Service 1d8f1c
 * keyboard symbols such as numbers, alphabets, and punctuation marks.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Some input methods assume certain keyboard layout
Packit Service 1d8f1c
 * (such as Chewing and Wubi requires an US-QWERTY layout),
Packit Service 1d8f1c
 * and expect key symbols to be arranged in that order.
Packit Service 1d8f1c
 * These input methods should new an IBusKeymap
Packit Service 1d8f1c
 * instance and define the keyboard layout.
Packit Service 1d8f1c
 * Then ibus_keymap_lookup_keysym() can
Packit Service 1d8f1c
 * convert scancodes back to the key symbols.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * see_also: #IBusComponent, #IBusEngineDesc
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
#include "ibusobject.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
/*
Packit Service 1d8f1c
 * Type macros.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
/* define IBusKeymap macros */
Packit Service 1d8f1c
#define IBUS_TYPE_KEYMAP             \
Packit Service 1d8f1c
    (ibus_keymap_get_type ())
Packit Service 1d8f1c
#define IBUS_KEYMAP(obj)             \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_KEYMAP, IBusKeymap))
Packit Service 1d8f1c
#define IBUS_KEYMAP_CLASS(klass)     \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_KEYMAP, IBusKeymapClass))
Packit Service 1d8f1c
#define IBUS_IS_KEYMAP(obj)          \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_KEYMAP))
Packit Service 1d8f1c
#define IBUS_IS_KEYMAP_CLASS(klass)  \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_KEYMAP))
Packit Service 1d8f1c
#define IBUS_KEYMAP_GET_CLASS(obj)   \
Packit Service 1d8f1c
    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_KEYMAP, IBusKeymapClass))
Packit Service 1d8f1c
Packit Service 1d8f1c
G_BEGIN_DECLS
Packit Service 1d8f1c
Packit Service 1d8f1c
typedef struct _IBusKeymap IBusKeymap;
Packit Service 1d8f1c
typedef struct _IBusKeymapClass IBusKeymapClass;
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * KEYMAP:
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Data structure for storing keymap.
Packit Service 1d8f1c
 * keymap[.][i]
Packit Service 1d8f1c
 * i:
Packit Service 1d8f1c
 *  0 - without modifer
Packit Service 1d8f1c
 *  1 - shift
Packit Service 1d8f1c
 *  2 - caplock
Packit Service 1d8f1c
 *  3 - shift caplock
Packit Service 1d8f1c
 *  4 - altgr
Packit Service 1d8f1c
 *  5 - shift altgr
Packit Service 1d8f1c
 *  6 - numlock
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
/* typedef guint KEYMAP[256][7]; */
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusKeymap:
Packit Service 1d8f1c
 * @name: The name of the keymap, such as 'us', 'jp'.
Packit Service 1d8f1c
 * @keymap: Keymap table. IME developers normally don have to touch this.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * A keymap object in IBus.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
struct _IBusKeymap {
Packit Service 1d8f1c
    /*< private >*/
Packit Service 1d8f1c
    IBusObject parent;
Packit Service 1d8f1c
    /* members */
Packit Service 1d8f1c
    /*< public >*/
Packit Service 1d8f1c
    gchar *name;
Packit Service 1d8f1c
    guint keymap[256][7];
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
struct _IBusKeymapClass {
Packit Service 1d8f1c
    IBusObjectClass parent;
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
GType            ibus_keymap_get_type               (void);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_keymap_new:
Packit Service 1d8f1c
 * @name: The keymap file to be loaded, such as 'us', 'jp'.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get an #IBusKeymap associated with the giving name.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This function loads the keymap file specified in @name
Packit Service 1d8f1c
 * in the IBUS_DATA_DIR/keymaps directory.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: An #IBusKeymap associated with the giving name; or %NULL if failed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Deprecated: This function has been deprecated and should
Packit Service 1d8f1c
 * not be used in newly written code. Please use ibus_keymap_get().
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusKeymap        *ibus_keymap_new                  (const gchar        *name)
Packit Service 1d8f1c
    G_GNUC_DEPRECATED;
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_keymap_get:
Packit Service 1d8f1c
 * @name: The keymap file to be loaded, such as 'us', 'jp'.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get an IBusKeymap associated with the giving name.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This function loads the keymap file specified in @name
Packit Service 1d8f1c
 * in the IBUS_DATA_DIR/keymaps directory.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer full): An #IBusKeymap associated with the giving name;
Packit Service 1d8f1c
 * or %NULL if failed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusKeymap        *ibus_keymap_get                  (const gchar        *name);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_keymap_lookup_keysym:
Packit Service 1d8f1c
 * @keymap: An IBusKeymap.
Packit Service 1d8f1c
 * @keycode: A scancode to be converted.
Packit Service 1d8f1c
 * @state: Modifier flags(such as Ctrl, Shift).
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Converts the scancode to keysym, given the keymap.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: Corresponding keysym.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
guint              ibus_keymap_lookup_keysym        (IBusKeymap         *keymap,
Packit Service 1d8f1c
                                                     guint16             keycode,
Packit Service 1d8f1c
                                                     guint32             state);
Packit Service 1d8f1c
Packit Service 1d8f1c
G_END_DECLS
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c