|
Packit Service |
1d8f1c |
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
|
|
Packit Service |
1d8f1c |
/* ibus
|
|
Packit Service |
1d8f1c |
* Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
|
|
Packit Service |
1d8f1c |
* Copyright (C) 2008-2015 Red Hat, Inc.
|
|
Packit Service |
1d8f1c |
*
|
|
Packit Service |
1d8f1c |
* gdk-private.c: Copied some code from gtk2
|
|
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 |
#include "config.h"
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
#include <gtk/gtk.h>
|
|
Packit Service |
1d8f1c |
#include <gdk/gdkx.h>
|
|
Packit Service |
1d8f1c |
#include <gdk/gdkkeysyms.h>
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
#ifdef HAVE_X11_XKBLIB_H
|
|
Packit Service |
1d8f1c |
# define HAVE_XKB
|
|
Packit Service |
1d8f1c |
# include <X11/XKBlib.h>
|
|
Packit Service |
1d8f1c |
#endif
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
void
|
|
Packit Service |
1d8f1c |
translate_key_event (GdkDisplay *display,
|
|
Packit Service |
1d8f1c |
GdkEvent *event,
|
|
Packit Service |
1d8f1c |
XEvent *xevent)
|
|
Packit Service |
1d8f1c |
{
|
|
Packit Service |
1d8f1c |
GdkKeymap *keymap = gdk_keymap_get_for_display (display);
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
event->key.type = xevent->xany.type == KeyPress ? GDK_KEY_PRESS : GDK_KEY_RELEASE;
|
|
Packit Service |
1d8f1c |
event->key.time = xevent->xkey.time;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
event->key.state = (GdkModifierType) xevent->xkey.state;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
#ifdef HAVE_XKB
|
|
Packit Service |
1d8f1c |
event->key.group = XkbGroupForCoreState (xevent->xkey.state);
|
|
Packit Service |
1d8f1c |
#else
|
|
Packit Service |
1d8f1c |
event->key.group = 0;
|
|
Packit Service |
1d8f1c |
#endif
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
event->key.hardware_keycode = xevent->xkey.keycode;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
#if GTK_CHECK_VERSION(3, 0, 0)
|
|
Packit Service |
1d8f1c |
event->key.keyval = GDK_KEY_VoidSymbol;
|
|
Packit Service |
1d8f1c |
#else
|
|
Packit Service |
1d8f1c |
event->key.keyval = GDK_VoidSymbol;
|
|
Packit Service |
1d8f1c |
#endif
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
gdk_keymap_translate_keyboard_state (keymap,
|
|
Packit Service |
1d8f1c |
event->key.hardware_keycode,
|
|
Packit Service |
1d8f1c |
event->key.state,
|
|
Packit Service |
1d8f1c |
event->key.group,
|
|
Packit Service |
1d8f1c |
&event->key.keyval,
|
|
Packit Service |
1d8f1c |
NULL, NULL, NULL);
|
|
Packit Service |
1d8f1c |
event->key.is_modifier = 0;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
/* Fill in event->string crudely, since various programs
|
|
Packit Service |
1d8f1c |
* depend on it.
|
|
Packit Service |
1d8f1c |
*/
|
|
Packit Service |
1d8f1c |
event->key.string = NULL;
|
|
Packit Service |
1d8f1c |
event->key.length = 0;
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
return;
|
|
Packit Service |
1d8f1c |
}
|
|
Packit Service |
1d8f1c |
|