/* * Copyright (C) 2002-2006 Sergey V. Udaltsov * * 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, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include "config.h" #include "xklavier_private.h" #include "xklavier_private_xmm.h" #define SHORTCUT_OPTION_PREFIX "grp:" static XmmSwitchOption options[] = { {{{XK_Alt_R, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Alt_L, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Caps_Lock, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Caps_Lock, ShiftMask} , {XK_VoidSymbol} } , {1}}, {{{XK_Shift_R, ShiftMask} , {XK_Shift_L, ShiftMask} , {XK_VoidSymbol} } , {1, -1}}, {{{XK_Alt_R, Mod1Mask} , {XK_Alt_L, Mod1Mask} , {XK_VoidSymbol} } , {1, -1}}, {{{XK_Control_R, ControlMask} , {XK_Control_L, ControlMask} , {XK_VoidSymbol} } , {1, -1}}, {{{XK_Control_R, ShiftMask} , {XK_Control_L, ShiftMask} , {XK_Shift_R, ControlMask} , {XK_Shift_L, ControlMask} , {XK_VoidSymbol} } , {1, -1, 1, -1}}, {{{XK_Control_R, Mod1Mask} , {XK_Control_L, Mod1Mask} , {XK_Alt_R, ControlMask} , {XK_Alt_L, ControlMask} , {XK_VoidSymbol} } , {1, -1, 1, -1}}, {{{XK_Shift_R, Mod1Mask} , {XK_Shift_L, Mod1Mask} , {XK_Alt_R, ShiftMask} , {XK_Alt_L, ShiftMask} , {XK_VoidSymbol} } , {1, -1, 1, -1}}, {{{XK_Menu, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Super_L, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Super_R, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Shift_L, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Shift_R, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Control_L, 0} , {XK_VoidSymbol} } , {1}}, {{{XK_Control_R, 0} , {XK_VoidSymbol} } , {1}} }; static const gchar *option_names[] = { "ralt_toggle", "lalt_toggle", "caps_toggle", "shift_caps_toggle", "shifts_toggle", "alts_toggle", "ctrls_toggle", "ctrl_shift_toggle", "ctrl_alt_toggle", "alt_shift_toggle", "menu_toggle", "lwin_toggle", "rwin_toggle", "lshift_toggle", "rshift_toggle", "lctrl_toggle", "rctrl_toggle" }; void xkl_xmm_init_switch_options(XklXmm * xmm) { int i; const gchar **pname = option_names; const XmmSwitchOption *poption = options; xmm->switch_options = g_hash_table_new(g_str_hash, g_str_equal); for (i = sizeof(option_names) / sizeof(option_names[0]); --i >= 0;) g_hash_table_insert(xmm->switch_options, (gpointer) (*pname++), (gpointer) (poption++)); } void xkl_xmm_term_switch_options(XklXmm * xmm) { g_hash_table_destroy(xmm->switch_options); xmm->switch_options = NULL; }