Blame libxklavier/xklavier_xmm_opts.c

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
}