|
Packit Service |
93d855 |
/*
|
|
Packit Service |
93d855 |
* Copyright (C) 2002-2006 Sergey V. Udaltsov <svu@gnome.org>
|
|
Packit Service |
93d855 |
*
|
|
Packit Service |
93d855 |
* This library is free software; you can redistribute it and/or
|
|
Packit Service |
93d855 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
93d855 |
* License as published by the Free Software Foundation; either
|
|
Packit Service |
93d855 |
* version 2 of the License, or (at your option) any later version.
|
|
Packit Service |
93d855 |
*
|
|
Packit Service |
93d855 |
* This library is distributed in the hope that it will be useful,
|
|
Packit Service |
93d855 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
93d855 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
93d855 |
* Lesser General Public License for more details.
|
|
Packit Service |
93d855 |
*
|
|
Packit Service |
93d855 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
93d855 |
* License along with this library; if not, write to the
|
|
Packit Service |
93d855 |
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Packit Service |
93d855 |
* Boston, MA 02111-1307, USA.
|
|
Packit Service |
93d855 |
*/
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
#include <time.h>
|
|
Packit Service |
93d855 |
#include <stdlib.h>
|
|
Packit Service |
93d855 |
#include <string.h>
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
#include <X11/Xatom.h>
|
|
Packit Service |
93d855 |
#include <X11/Xlib.h>
|
|
Packit Service |
93d855 |
#include <X11/Xutil.h>
|
|
Packit Service |
93d855 |
#include <X11/keysym.h>
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
#include "config.h"
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
#include "xklavier_private.h"
|
|
Packit Service |
93d855 |
#include "xklavier_private_xmm.h"
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
#define SHORTCUT_OPTION_PREFIX "grp:"
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
static XmmSwitchOption options[] = {
|
|
Packit Service |
93d855 |
{{{XK_Alt_R, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Alt_L, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Caps_Lock, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Caps_Lock, ShiftMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Shift_R, ShiftMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Shift_L, ShiftMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Alt_R, Mod1Mask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Alt_L, Mod1Mask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Control_R, ControlMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Control_L, ControlMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Control_R, ShiftMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Control_L, ShiftMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Shift_R, ControlMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Shift_L, ControlMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1, 1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Control_R, Mod1Mask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Control_L, Mod1Mask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Alt_R, ControlMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Alt_L, ControlMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1, 1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Shift_R, Mod1Mask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Shift_L, Mod1Mask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Alt_R, ShiftMask}
|
|
Packit Service |
93d855 |
,
|
|
Packit Service |
93d855 |
{XK_Alt_L, ShiftMask}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1, -1, 1, -1}},
|
|
Packit Service |
93d855 |
{{{XK_Menu, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Super_L, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Super_R, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Shift_L, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Shift_R, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Control_L, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}},
|
|
Packit Service |
93d855 |
{{{XK_Control_R, 0}
|
|
Packit Service |
93d855 |
, {XK_VoidSymbol}
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
, {1}}
|
|
Packit Service |
93d855 |
};
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
static const gchar *option_names[] = {
|
|
Packit Service |
93d855 |
"ralt_toggle",
|
|
Packit Service |
93d855 |
"lalt_toggle",
|
|
Packit Service |
93d855 |
"caps_toggle",
|
|
Packit Service |
93d855 |
"shift_caps_toggle",
|
|
Packit Service |
93d855 |
"shifts_toggle",
|
|
Packit Service |
93d855 |
"alts_toggle",
|
|
Packit Service |
93d855 |
"ctrls_toggle",
|
|
Packit Service |
93d855 |
"ctrl_shift_toggle",
|
|
Packit Service |
93d855 |
"ctrl_alt_toggle",
|
|
Packit Service |
93d855 |
"alt_shift_toggle",
|
|
Packit Service |
93d855 |
"menu_toggle",
|
|
Packit Service |
93d855 |
"lwin_toggle",
|
|
Packit Service |
93d855 |
"rwin_toggle",
|
|
Packit Service |
93d855 |
"lshift_toggle",
|
|
Packit Service |
93d855 |
"rshift_toggle",
|
|
Packit Service |
93d855 |
"lctrl_toggle",
|
|
Packit Service |
93d855 |
"rctrl_toggle"
|
|
Packit Service |
93d855 |
};
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
void
|
|
Packit Service |
93d855 |
xkl_xmm_init_switch_options(XklXmm * xmm)
|
|
Packit Service |
93d855 |
{
|
|
Packit Service |
93d855 |
int i;
|
|
Packit Service |
93d855 |
const gchar **pname = option_names;
|
|
Packit Service |
93d855 |
const XmmSwitchOption *poption = options;
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
xmm->switch_options = g_hash_table_new(g_str_hash, g_str_equal);
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
for (i = sizeof(option_names) / sizeof(option_names[0]); --i >= 0;)
|
|
Packit Service |
93d855 |
g_hash_table_insert(xmm->switch_options,
|
|
Packit Service |
93d855 |
(gpointer) (*pname++),
|
|
Packit Service |
93d855 |
(gpointer) (poption++));
|
|
Packit Service |
93d855 |
}
|
|
Packit Service |
93d855 |
|
|
Packit Service |
93d855 |
void
|
|
Packit Service |
93d855 |
xkl_xmm_term_switch_options(XklXmm * xmm)
|
|
Packit Service |
93d855 |
{
|
|
Packit Service |
93d855 |
g_hash_table_destroy(xmm->switch_options);
|
|
Packit Service |
93d855 |
xmm->switch_options = NULL;
|
|
Packit Service |
93d855 |
}
|