annotate src/hotkey/plugin.c @ 2274:d9706e29e968

Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
author Sascha Hlusiak <contact@saschahlusiak.de>
date Mon, 31 Dec 2007 19:45:28 +0100
parents f893d05f707b
children 6ca0d83ce51d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1 /* -*- Mode: C; indent-tabs: t; c-basic-offset: 9; tab-width: 9 -*- */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
2 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
3 * This file is part of audacious-hotkey plugin for audacious
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
4 *
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
5 * Copyright (c) 2007 - 2008 Sascha Hlusiak <contact@saschahlusiak.de>
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
6 * Name: plugin.c
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
7 * Description: plugin.c
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
8 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
9 * Part of this code is from itouch-ctrl plugin.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
10 * Authors of itouch-ctrl are listed below:
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
11 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
12 * Copyright (c) 2006 - 2007 Vladimir Paskov <vlado.paskov@gmail.com>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
13 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
14 * Part of this code are from xmms-itouch plugin.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
15 * Authors of xmms-itouch are listed below:
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
16 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
17 * Copyright (C) 2000-2002 Ville Syrjälä <syrjala@sci.fi>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
18 * Bryn Davies <curious@ihug.com.au>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
19 * Jonathan A. Davis <davis@jdhouse.org>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
20 * Jeremy Tan <nsx@nsx.homeip.net>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
21 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
22 * audacious-hotkey is free software; you can redistribute it and/or modify
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
23 * it under the terms of the GNU General Public License as published by
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
24 * the Free Software Foundation; either version 2 of the License, or
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
25 * (at your option) any later version.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
26 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
27 * audacious-hotkey is distributed in the hope that it will be useful,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
30 * GNU General Public License for more details.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
31 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
32 * You should have received a copy of the GNU General Public License
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
33 * along with audacious-hotkey; if not, write to the Free Software
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
34 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
35 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
36
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
37 #include <config.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
38
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
39 #include <stdio.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
40 #include <stdlib.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
41 #include <X11/Xlib.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
42 #include <X11/keysym.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
43 #include <X11/XF86keysym.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
44
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
45 #include <gtk/gtk.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
46 #include <gdk/gdkx.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
47 #include <gdk/gdkkeysyms.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
48 #include <audacious/plugin.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
49 #include <audacious/auddrct.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
50 #include <audacious/configdb.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
51
1551
a9af4f1aede9 hotkey plugin: stripped unneeded #ifdefs from standalone version
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 1543
diff changeset
52 #include <audacious/i18n.h>
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
53
1677
f6f5603a0954 xmms_show_message() changed to audacious_info_dialog()
Matti Hamalainen <ccr@tnsp.org>
parents: 1658
diff changeset
54 /* for audacious_info_dialog () */
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
55 #include <audacious/util.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
56
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
57
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
58 /* func defs */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
59 void x_display_init (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
60 static void get_offending_modifiers (Display * dpy);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
61 static void init (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
62 static void grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
63 static void ungrab_keys ();
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
64 static gboolean handle_keyevent(int keycode, int state, int type);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
65 static gboolean setup_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
66 static void release_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
67
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
68 static void load_config (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
69 static void save_config (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
70 static void configure (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
71 static void clear_keyboard (GtkWidget *widget, gpointer data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
72
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
73 void cancel_callback (GtkWidget *widget, gpointer data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
74 void ok_callback (GtkWidget *widget, gpointer data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
75 static void about (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
76 static void cleanup (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
77
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
78 #define TYPE_KEY 0
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
79 #define TYPE_MOUSE 1
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
80
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
81
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
82 typedef struct {
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
83 gint key, mask;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
84 gint type;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
85 } HotkeyConfiguration;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
86
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
87 typedef struct {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
88 gint vol_increment;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
89 gint vol_decrement;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
90
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
91 /* keyboard */
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
92 HotkeyConfiguration mute;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
93 HotkeyConfiguration vol_down;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
94 HotkeyConfiguration vol_up;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
95 HotkeyConfiguration play;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
96 HotkeyConfiguration stop;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
97 HotkeyConfiguration pause;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
98 HotkeyConfiguration prev_track;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
99 HotkeyConfiguration next_track;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
100 HotkeyConfiguration jump_to_file;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
101 HotkeyConfiguration toggle_win;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
102 HotkeyConfiguration forward;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
103 HotkeyConfiguration backward;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
104 } PluginConfig;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
105
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
106 PluginConfig plugin_cfg;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
107
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
108 static Display *xdisplay = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
109 static Window x_root_window = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
110 static gint grabbed = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
111 static gboolean loaded = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
112 static unsigned int numlock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
113 static unsigned int scrolllock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
114 static unsigned int capslock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
115
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
116
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
117
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
118 typedef struct {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
119 GtkWidget *keytext;
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
120 HotkeyConfiguration hotkey;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
121 } KeyControls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
122
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
123 typedef struct {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
124 KeyControls play;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
125 KeyControls stop;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
126 KeyControls pause;
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
127 KeyControls prev_track;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
128 KeyControls next_track;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
129 KeyControls vol_up;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
130 KeyControls vol_down;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
131 KeyControls mute;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
132 KeyControls jump_to_file;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
133 KeyControls forward;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
134 KeyControls backward;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
135 KeyControls toggle_win;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
136 } ConfigurationControls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
137
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
138 static GeneralPlugin audacioushotkey =
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
139 {
1658
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
140 .description = "Global Hotkey",
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
141 .init = init,
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
142 .about = about,
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
143 .configure = configure,
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
144 .cleanup = cleanup
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
145 };
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
146
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
147 GeneralPlugin *hotkey_gplist[] = { &audacioushotkey, NULL };
1658
5538324eb069 fixed hotkey plugin
mf0102 <0102@gmx.at>
parents: 1551
diff changeset
148 SIMPLE_GENERAL_PLUGIN(hotkey, hotkey_gplist);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
149
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
150
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
151
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
152 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
153 * plugin activated
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
154 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
155 static void init (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
156 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
157 x_display_init ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
158 setup_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
159 load_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
160 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
161
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
162 loaded = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
163 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
164
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
165 /* check X display */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
166 void x_display_init (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
167 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
168 if (xdisplay != NULL) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
169 xdisplay = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
170 x_root_window = GDK_WINDOW_XID(gdk_get_default_root_window());
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
171 get_offending_modifiers(xdisplay);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
172 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
173
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
174 /* Taken from xbindkeys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
175 static void get_offending_modifiers (Display * dpy)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
176 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
177 int i;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
178 XModifierKeymap *modmap;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
179 KeyCode nlock, slock;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
180 static int mask_table[8] = {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
181 ShiftMask, LockMask, ControlMask, Mod1Mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
182 Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
183 };
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
184
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
185 nlock = XKeysymToKeycode (dpy, XK_Num_Lock);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
186 slock = XKeysymToKeycode (dpy, XK_Scroll_Lock);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
187
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
188 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
189 * Find out the masks for the NumLock and ScrollLock modifiers,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
190 * so that we can bind the grabs for when they are enabled too.
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
191 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
192 modmap = XGetModifierMapping (dpy);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
193
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
194 if (modmap != NULL && modmap->max_keypermod > 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
195 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
196 for (i = 0; i < 8 * modmap->max_keypermod; i++)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
197 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
198 if (modmap->modifiermap[i] == nlock && nlock != 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
199 numlock_mask = mask_table[i / modmap->max_keypermod];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
200 else if (modmap->modifiermap[i] == slock && slock != 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
201 scrolllock_mask = mask_table[i / modmap->max_keypermod];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
202 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
203 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
204
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
205 capslock_mask = LockMask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
206
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
207 if (modmap)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
208 XFreeModifiermap (modmap);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
209 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
210
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
211 /* handle keys */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
212 static gboolean handle_keyevent (int keycode, int state, int type)
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
213 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
214 gint current_volume, old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
215 static gint volume_static = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
216 gboolean play, mute;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
217
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
218 /* playing or not */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
219 play = audacious_drct_is_playing ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
220
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
221 /* get current volume */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
222 audacious_drct_get_volume_main (&current_volume);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
223 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
224 if (current_volume)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
225 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
226 /* volume is not mute */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
227 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
228 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
229 /* volume is mute */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
230 mute = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
231 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
232
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
233 state &= ~(scrolllock_mask | numlock_mask | capslock_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
234
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
235 /* mute the playback */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
236 if ((keycode == plugin_cfg.mute.key) && (state == plugin_cfg.mute.mask) && (type == plugin_cfg.mute.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
237 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
238 if (!mute)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
239 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
240 volume_static = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
241 audacious_drct_set_main_volume (0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
242 mute = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
243 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
244 audacious_drct_set_main_volume (volume_static);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
245 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
246 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
247 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
248 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
249
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
250 /* decreace volume */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
251 if ((keycode == plugin_cfg.vol_down.key) && (state == plugin_cfg.vol_down.mask) && (type == plugin_cfg.vol_down.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
252 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
253 if (mute)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
254 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
255 current_volume = old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
256 old_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
257 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
258 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
259
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
260 if ((current_volume -= plugin_cfg.vol_decrement) < 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
261 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
262 current_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
263 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
264
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
265 if (current_volume != old_volume)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
266 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
267 audacious_drct_set_main_volume (current_volume);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
268 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
269
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
270 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
271 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
272 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
273
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
274 /* increase volume */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
275 if ((keycode == plugin_cfg.vol_up.key) && (state == plugin_cfg.vol_up.mask) && (type == plugin_cfg.vol_up.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
276 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
277 if (mute)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
278 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
279 current_volume = old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
280 old_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
281 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
282 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
283
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
284 if ((current_volume += plugin_cfg.vol_increment) > 100)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
285 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
286 current_volume = 100;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
287 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
288
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
289 if (current_volume != old_volume)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
290 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
291 audacious_drct_set_main_volume (current_volume);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
292 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
293
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
294 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
295 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
296 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
297
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
298 /* play */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
299 if ((keycode == plugin_cfg.play.key) && (state == plugin_cfg.play.mask) && (type == plugin_cfg.play.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
300 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
301 if (!play)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
302 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
303 audacious_drct_play ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
304 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
305 audacious_drct_pause ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
306 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
307 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
308 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
309
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
310 /* pause */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
311 if ((keycode == plugin_cfg.pause.key) && (state == plugin_cfg.pause.mask) && (type == plugin_cfg.pause.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
312 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
313 if (!play) audacious_drct_play ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
314 else audacious_drct_pause ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
315
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
316 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
317 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
318
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
319 /* stop */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
320 if ((keycode == plugin_cfg.stop.key) && (state == plugin_cfg.stop.mask) && (type == plugin_cfg.stop.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
321 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
322 audacious_drct_stop ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
323 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
324 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
325
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
326 /* prev track */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
327 if ((keycode == plugin_cfg.prev_track.key) && (state == plugin_cfg.prev_track.mask) && (type == plugin_cfg.prev_track.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
328 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
329 audacious_drct_playlist_prev ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
330 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
331 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
332
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
333 /* next track */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
334 if ((keycode == plugin_cfg.next_track.key) && (state == plugin_cfg.next_track.mask) && (type == plugin_cfg.next_track.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
335 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
336 audacious_drct_playlist_next ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
337 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
338 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
339
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
340 /* forward */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
341 if ((keycode == plugin_cfg.forward.key) && (state == plugin_cfg.forward.mask) && (type == plugin_cfg.forward.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
342 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
343 gint time = audacious_drct_get_output_time();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
344 time += 5000; /* Jump 5s into future */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
345 audacious_drct_jump_to_time(time);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
346 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
347 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
348
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
349 /* backward */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
350 if ((keycode == plugin_cfg.backward.key) && (state == plugin_cfg.backward.mask) && (type == plugin_cfg.backward.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
351 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
352 gint time = audacious_drct_get_output_time();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
353 if (time > 5000) time -= 5000; /* Jump 5s back */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
354 else time = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
355 audacious_drct_jump_to_time(time);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
356 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
357 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
358
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
359 /* Open Jump-To-File dialog */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
360 if ((keycode == plugin_cfg.jump_to_file.key) && (state == plugin_cfg.jump_to_file.mask) && (type == plugin_cfg.jump_to_file.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
361 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
362 audacious_drct_show_jtf_box();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
363 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
364 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
365
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
366 /* Toggle Windows */
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
367 if ((keycode == plugin_cfg.toggle_win.key) && (state == plugin_cfg.toggle_win.mask) && (type == plugin_cfg.toggle_win.type))
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
368 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
369 static gboolean is_main, is_eq, is_pl;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
370 is_main = audacious_drct_main_win_is_visible();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
371 if (is_main) {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
372 is_pl = audacious_drct_pl_win_is_visible();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
373 is_eq = audacious_drct_eq_win_is_visible();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
374 audacious_drct_main_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
375 audacious_drct_pl_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
376 audacious_drct_eq_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
377 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
378 audacious_drct_main_win_toggle(TRUE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
379 audacious_drct_pl_win_toggle(is_pl);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
380 audacious_drct_eq_win_toggle(is_eq);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
381 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
382 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
383 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
384
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
385 return FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
386 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
387
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
388 static GdkFilterReturn
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
389 gdk_filter(GdkXEvent *xevent,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
390 GdkEvent *event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
391 gpointer data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
392 {
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
393 switch (((XEvent*)xevent)->type)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
394 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
395 case KeyPress:
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
396 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
397 XKeyEvent *keyevent = (XKeyEvent*)xevent;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
398 if (handle_keyevent(keyevent->keycode, keyevent->state, TYPE_KEY))
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
399 return GDK_FILTER_REMOVE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
400 break;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
401 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
402 case ButtonPress:
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
403 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
404 XButtonEvent *buttonevent = (XButtonEvent*)xevent;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
405 if (handle_keyevent(buttonevent->button, buttonevent->state, TYPE_MOUSE))
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
406 return GDK_FILTER_REMOVE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
407 break;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
408 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
409 default:
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
410 return -1;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
411 }
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
412
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
413 return GDK_FILTER_CONTINUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
414 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
415
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
416 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
417 setup_filter()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
418 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
419 gdk_window_add_filter(gdk_get_default_root_window(),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
420 gdk_filter,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
421 NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
422
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
423 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
424 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
425
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
426 static void release_filter()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
427 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
428 gdk_window_remove_filter(gdk_get_default_root_window(),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
429 gdk_filter,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
430 NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
431 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
432
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
433 /* load plugin configuration */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
434 static void load_config (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
435 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
436 ConfigDb *cfdb;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
437
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
438 if (xdisplay == NULL) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
439
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
440 /* default volume level */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
441 plugin_cfg.vol_increment = 4;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
442 plugin_cfg.vol_decrement = 4;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
443
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
444 #define load_key(hotkey,default) \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
445 plugin_cfg.hotkey.key = (default)?(XKeysymToKeycode(xdisplay, (default))):0; \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
446 plugin_cfg.hotkey.mask = 0; \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
447 plugin_cfg.hotkey.type = TYPE_KEY; \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
448 aud_cfg_db_get_int (cfdb, "globalHotkey", #hotkey, &plugin_cfg.hotkey.key); \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
449 aud_cfg_db_get_int (cfdb, "globalHotkey", #hotkey "_mask", &plugin_cfg.hotkey.mask); \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
450 aud_cfg_db_get_int (cfdb, "globalHotkey", #hotkey "_type", &plugin_cfg.hotkey.type);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
451
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
452
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
453 /* open configuration database */
2124
b8da6a0b0da2 s/bmp_cfg_/aud_cfg_/g
Matti Hamalainen <ccr@tnsp.org>
parents: 1677
diff changeset
454 cfdb = aud_cfg_db_open ( );
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
455
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
456 load_key(mute, XF86XK_AudioMute);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
457 load_key(vol_down, XF86XK_AudioLowerVolume);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
458 load_key(vol_up, XF86XK_AudioRaiseVolume);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
459 load_key(play, XF86XK_AudioPlay);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
460 load_key(pause, XF86XK_AudioPause);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
461 load_key(stop, XF86XK_AudioStop);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
462 load_key(prev_track, XF86XK_AudioPrev);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
463 load_key(next_track, XF86XK_AudioNext);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
464 load_key(jump_to_file, XF86XK_AudioMedia);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
465 load_key(toggle_win, 0);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
466 load_key(forward, 0);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
467 load_key(backward, XF86XK_AudioRewind);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
468
2124
b8da6a0b0da2 s/bmp_cfg_/aud_cfg_/g
Matti Hamalainen <ccr@tnsp.org>
parents: 1677
diff changeset
469 aud_cfg_db_close (cfdb);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
470 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
471
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
472 /* save plugin configuration */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
473 static void save_config (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
474 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
475 ConfigDb *cfdb;
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
476
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
477 #define save_key(hotkey) \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
478 aud_cfg_db_set_int (cfdb, "globalHotkey", #hotkey, plugin_cfg.hotkey.key); \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
479 aud_cfg_db_set_int (cfdb, "globalHotkey", #hotkey "_mask", plugin_cfg.hotkey.mask); \
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
480 aud_cfg_db_set_int (cfdb, "globalHotkey", #hotkey "_type", plugin_cfg.hotkey.type);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
481
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
482 /* open configuration database */
2124
b8da6a0b0da2 s/bmp_cfg_/aud_cfg_/g
Matti Hamalainen <ccr@tnsp.org>
parents: 1677
diff changeset
483 cfdb = aud_cfg_db_open ( );
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
484
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
485 save_key(mute);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
486 save_key(vol_up);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
487 save_key(vol_down);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
488 save_key(play);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
489 save_key(pause);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
490 save_key(stop);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
491 save_key(prev_track);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
492 save_key(next_track);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
493 save_key(jump_to_file);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
494 save_key(forward);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
495 save_key(backward);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
496 save_key(toggle_win);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
497
2124
b8da6a0b0da2 s/bmp_cfg_/aud_cfg_/g
Matti Hamalainen <ccr@tnsp.org>
parents: 1677
diff changeset
498 aud_cfg_db_close (cfdb);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
499 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
500
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
501 static int x11_error_handler (Display *dpy, XErrorEvent *error)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
502 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
503 return 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
504 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
505
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
506 /* grab required keys */
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
507 static void grab_key(HotkeyConfiguration hotkey)
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
508 {
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
509 unsigned int modifier = hotkey.mask & ~(numlock_mask | capslock_mask | scrolllock_mask);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
510
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
511 if (hotkey.key == 0) return;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
512
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
513 if (hotkey.type == TYPE_KEY)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
514 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
515 XGrabKey (xdisplay, hotkey.key, modifier, x_root_window,
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
516 False, GrabModeAsync, GrabModeAsync);
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
517
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
518 if (modifier == AnyModifier)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
519 return;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
520
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
521 if (numlock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
522 XGrabKey (xdisplay, hotkey.key, modifier | numlock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
523 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
524 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
525
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
526 if (capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
527 XGrabKey (xdisplay, hotkey.key, modifier | capslock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
528 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
529 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
530
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
531 if (scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
532 XGrabKey (xdisplay, hotkey.key, modifier | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
533 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
534 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
535
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
536 if (numlock_mask && capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
537 XGrabKey (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
538 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
539 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
540
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
541 if (numlock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
542 XGrabKey (xdisplay, hotkey.key, modifier | numlock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
543 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
544 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
545
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
546 if (capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
547 XGrabKey (xdisplay, hotkey.key, modifier | capslock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
548 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
549 False, GrabModeAsync, GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
550
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
551 if (numlock_mask && capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
552 XGrabKey (xdisplay, hotkey.key,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
553 modifier | numlock_mask | capslock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
554 x_root_window, False, GrabModeAsync,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
555 GrabModeAsync);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
556 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
557 if (hotkey.type == TYPE_MOUSE)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
558 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
559 XGrabButton (xdisplay, hotkey.key, modifier, x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
560 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
561
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
562 if (modifier == AnyModifier)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
563 return;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
564
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
565 if (numlock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
566 XGrabButton (xdisplay, hotkey.key, modifier | numlock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
567 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
568 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
569
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
570 if (capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
571 XGrabButton (xdisplay, hotkey.key, modifier | capslock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
572 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
573 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
574
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
575 if (scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
576 XGrabButton (xdisplay, hotkey.key, modifier | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
577 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
578 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
579
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
580 if (numlock_mask && capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
581 XGrabButton (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
582 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
583 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
584
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
585 if (numlock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
586 XGrabButton (xdisplay, hotkey.key, modifier | numlock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
587 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
588 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
589
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
590 if (capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
591 XGrabButton (xdisplay, hotkey.key, modifier | capslock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
592 x_root_window,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
593 False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
594
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
595 if (numlock_mask && capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
596 XGrabButton (xdisplay, hotkey.key,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
597 modifier | numlock_mask | capslock_mask | scrolllock_mask,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
598 x_root_window, False, ButtonPressMask, GrabModeAsync,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
599 GrabModeAsync, None, None);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
600 }
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
601 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
602
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
603 static void grab_keys ()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
604 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
605 if (grabbed) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
606 if (xdisplay == NULL) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
607
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
608 XErrorHandler old_handler = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
609
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
610 XSync(xdisplay, False);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
611 old_handler = XSetErrorHandler (x11_error_handler);
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
612
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
613 grab_key(plugin_cfg.mute);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
614 grab_key(plugin_cfg.vol_up);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
615 grab_key(plugin_cfg.vol_down);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
616 grab_key(plugin_cfg.play);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
617 grab_key(plugin_cfg.pause);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
618 grab_key(plugin_cfg.stop);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
619 grab_key(plugin_cfg.prev_track);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
620 grab_key(plugin_cfg.next_track);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
621 grab_key(plugin_cfg.jump_to_file);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
622 grab_key(plugin_cfg.forward);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
623 grab_key(plugin_cfg.backward);
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
624 grab_key(plugin_cfg.toggle_win);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
625
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
626 XSync(xdisplay, False);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
627 XSetErrorHandler (old_handler);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
628
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
629 grabbed = 1;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
630 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
631 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
632 * plugin init end
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
633 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
634
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
635 static void set_keytext (GtkWidget *entry, gint key, gint mask, gint type)
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
636 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
637 gchar *text = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
638
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
639 if (key == 0 && mask == 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
640 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
641 text = g_strdup(_("(none)"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
642 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
643 static char *modifier_string[] = { "Control", "Shift", "Alt", "Mod2", "Mod3", "Super", "Mod5" };
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
644 static unsigned int modifiers[] = { ControlMask, ShiftMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask };
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
645 gchar *strings[9];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
646 gchar *keytext = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
647 int i, j;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
648 if (type == TYPE_KEY)
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
649 {
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
650 KeySym keysym;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
651 keysym = XKeycodeToKeysym(xdisplay, key, 0);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
652 if (keysym == 0 || keysym == NoSymbol)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
653 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
654 keytext = g_strdup_printf("#%d", key);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
655 } else {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
656 keytext = g_strdup(XKeysymToString(keysym));
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
657 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
658 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
659 if (type == TYPE_MOUSE)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
660 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
661 keytext = g_strdup_printf("Button%d", key);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
662 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
663
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
664 for (i = 0, j=0; j<7; j++)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
665 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
666 if (mask & modifiers[j])
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
667 strings[i++] = modifier_string[j];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
668 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
669 if (key != 0) strings[i++] = keytext;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
670 strings[i] = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
671
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
672 text = g_strjoinv(" + ", strings);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
673 g_free(keytext);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
674 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
675
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
676 gtk_entry_set_text(GTK_ENTRY(entry), text);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
677 gtk_editable_set_position(GTK_EDITABLE(entry), -1);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
678 if (text) g_free(text);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
679 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
680
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
681 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
682 on_entry_key_press_event(GtkWidget * widget,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
683 GdkEventKey * event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
684 gpointer user_data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
685 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
686 KeyControls *controls = (KeyControls*) user_data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
687 int is_mod;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
688 int mod;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
689
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
690 if (event->keyval == GDK_Tab) return FALSE;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
691
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
692 mod = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
693 is_mod = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
694
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
695 if ((event->state & GDK_CONTROL_MASK) | (!is_mod && (is_mod = (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R))))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
696 mod |= ControlMask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
697
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
698 if ((event->state & GDK_MOD1_MASK) | (!is_mod && (is_mod = (event->keyval == GDK_Alt_L || event->keyval == GDK_Alt_R))))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
699 mod |= Mod1Mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
700
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
701 if ((event->state & GDK_SHIFT_MASK) | (!is_mod && (is_mod = (event->keyval == GDK_Shift_L || event->keyval == GDK_Shift_R))))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
702 mod |= ShiftMask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
703
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
704 if ((event->state & GDK_MOD5_MASK) | (!is_mod && (is_mod = (event->keyval == GDK_ISO_Level3_Shift))))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
705 mod |= Mod5Mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
706
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
707 if ((event->state & GDK_MOD4_MASK) | (!is_mod && (is_mod = (event->keyval == GDK_Super_L || event->keyval == GDK_Super_R))))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
708 mod |= Mod4Mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
709
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
710 if (!is_mod) {
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
711 controls->hotkey.key = event->hardware_keycode;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
712 controls->hotkey.mask = mod;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
713 controls->hotkey.type = TYPE_KEY;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
714 } else controls->hotkey.key = 0;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
715
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
716 set_keytext(controls->keytext, is_mod ? 0 : event->hardware_keycode, mod, TYPE_KEY);
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
717 return TRUE;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
718 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
719
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
720 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
721 on_entry_key_release_event(GtkWidget * widget,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
722 GdkEventKey * event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
723 gpointer user_data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
724 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
725 KeyControls *controls = (KeyControls*) user_data;
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
726 if (controls->hotkey.key == 0) {
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
727 controls->hotkey.mask = 0;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
728 return TRUE;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
729 }
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
730 set_keytext(controls->keytext, controls->hotkey.key, controls->hotkey.mask, controls->hotkey.type);
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
731 return TRUE;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
732 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
733
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
734 static gboolean
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
735 on_entry_button_press_event(GtkWidget * widget,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
736 GdkEventButton * event,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
737 gpointer user_data)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
738 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
739 KeyControls *controls = (KeyControls*) user_data;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
740 int mod;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
741
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
742 if (!gtk_widget_is_focus(widget)) return FALSE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
743
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
744 mod = 0;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
745 if (event->state & GDK_CONTROL_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
746 mod |= ControlMask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
747
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
748 if (event->state & GDK_MOD1_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
749 mod |= Mod1Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
750
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
751 if (event->state & GDK_SHIFT_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
752 mod |= ShiftMask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
753
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
754 if (event->state & GDK_MOD5_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
755 mod |= Mod5Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
756
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
757 if (event->state & GDK_MOD4_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
758 mod |= Mod4Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
759
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
760 if ((event->button <= 3) && (mod == 0))
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
761 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
762 GtkWidget* dialog;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
763 GtkResponseType response;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
764 dialog = gtk_message_dialog_new (GTK_WINDOW(gtk_widget_get_toplevel(widget)),
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
765 GTK_DIALOG_MODAL,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
766 GTK_MESSAGE_WARNING,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
767 GTK_BUTTONS_YES_NO,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
768 _("It is not recommended to bind the primary mouse buttons without modificators.\n\n"
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
769 "Do you want to continue?"));
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
770 gtk_window_set_title(GTK_WINDOW(dialog), _("Binding mouse buttons"));
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
771 response = gtk_dialog_run(GTK_DIALOG(dialog));
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
772 gtk_widget_destroy (dialog);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
773 if (response != GTK_RESPONSE_YES) return TRUE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
774 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
775
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
776 controls->hotkey.key = event->button;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
777 controls->hotkey.mask = mod;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
778 controls->hotkey.type = TYPE_MOUSE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
779 set_keytext(controls->keytext, controls->hotkey.key, controls->hotkey.mask, controls->hotkey.type);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
780 return TRUE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
781 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
782
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
783 static gboolean
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
784 on_entry_scroll_event(GtkWidget * widget,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
785 GdkEventScroll * event,
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
786 gpointer user_data)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
787 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
788 KeyControls *controls = (KeyControls*) user_data;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
789 int mod;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
790
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
791 if (!gtk_widget_is_focus(widget)) return FALSE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
792
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
793 mod = 0;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
794 if (event->state & GDK_CONTROL_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
795 mod |= ControlMask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
796
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
797 if (event->state & GDK_MOD1_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
798 mod |= Mod1Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
799
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
800 if (event->state & GDK_SHIFT_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
801 mod |= ShiftMask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
802
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
803 if (event->state & GDK_MOD5_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
804 mod |= Mod5Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
805
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
806 if (event->state & GDK_MOD4_MASK)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
807 mod |= Mod4Mask;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
808
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
809 if (event->direction == GDK_SCROLL_UP)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
810 controls->hotkey.key = 4;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
811 else if (event->direction == GDK_SCROLL_DOWN)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
812 controls->hotkey.key = 5;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
813 else if (event->direction == GDK_SCROLL_LEFT)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
814 controls->hotkey.key = 6;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
815 else if (event->direction == GDK_SCROLL_RIGHT)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
816 controls->hotkey.key = 7;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
817 else return FALSE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
818
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
819 controls->hotkey.mask = mod;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
820 controls->hotkey.type = TYPE_MOUSE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
821 set_keytext(controls->keytext, controls->hotkey.key, controls->hotkey.mask, controls->hotkey.type);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
822 return TRUE;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
823 }
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
824
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
825 static void add_event_controls(GtkWidget *table,
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
826 KeyControls *controls,
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
827 int row,
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
828 char* descr,
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
829 HotkeyConfiguration hotkey)
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
830 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
831 GtkWidget *label;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
832 GtkWidget *button;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
833
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
834 controls->hotkey.key = hotkey.key;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
835 controls->hotkey.mask = hotkey.mask;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
836 controls->hotkey.type = hotkey.type;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
837 if (controls->hotkey.key == 0)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
838 controls->hotkey.mask = 0;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
839
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
840 label = gtk_label_new (_(descr));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
841 gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
842 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
843 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
844 gtk_misc_set_padding (GTK_MISC (label), 3, 3);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
845
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
846 controls->keytext = gtk_entry_new ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
847 gtk_table_attach (GTK_TABLE (table), controls->keytext, 1, 2, row, row+1,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
848 (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (GTK_EXPAND), 0, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
849 gtk_entry_set_editable (GTK_ENTRY (controls->keytext), FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
850
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
851 set_keytext(controls->keytext, hotkey.key, hotkey.mask, hotkey.type);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
852 g_signal_connect((gpointer)controls->keytext, "key_press_event",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
853 G_CALLBACK(on_entry_key_press_event), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
854 g_signal_connect((gpointer)controls->keytext, "key_release_event",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
855 G_CALLBACK(on_entry_key_release_event), controls);
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
856 g_signal_connect((gpointer)controls->keytext, "button_press_event",
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
857 G_CALLBACK(on_entry_button_press_event), controls);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
858 g_signal_connect((gpointer)controls->keytext, "scroll_event",
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
859 G_CALLBACK(on_entry_scroll_event), controls);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
860
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
861 button = gtk_button_new_with_label (_("None"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
862 gtk_table_attach (GTK_TABLE (table), button, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
863 g_signal_connect (G_OBJECT (button), "clicked",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
864 G_CALLBACK (clear_keyboard), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
865 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
866
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
867 /* configuration window */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
868 static void configure (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
869 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
870 ConfigurationControls *controls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
871 GtkWidget *window;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
872 GtkWidget *main_vbox, *vbox;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
873 GtkWidget *hbox;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
874 GtkWidget *alignment;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
875 GtkWidget *frame;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
876 GtkWidget *label;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
877 GtkWidget *image;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
878 GtkWidget *table;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
879 GtkWidget *button_box, *button;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
880
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
881 if (!xdisplay) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
882
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
883 load_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
884
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
885 ungrab_keys();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
886
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
887 controls = (ConfigurationControls*)g_malloc(sizeof(ConfigurationControls));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
888 if (!controls)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
889 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
890 printf ("Faild to allocate memory for ConfigurationControls structure!\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
891 "Aborting!");
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
892 return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
893 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
894
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
895 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
896 gtk_window_set_title (GTK_WINDOW (window), _("Global Hotkey Plugin Configuration"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
897 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER_ALWAYS);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
898 gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
899 gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
900 gtk_container_set_border_width (GTK_CONTAINER (window), 5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
901
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
902 main_vbox = gtk_vbox_new (FALSE, 4);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
903 gtk_container_add (GTK_CONTAINER (window), main_vbox);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
904
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
905 alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
906 gtk_box_pack_start (GTK_BOX (main_vbox), alignment, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
907 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 4, 0, 0, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
908 hbox = gtk_hbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
909 gtk_container_add (GTK_CONTAINER (alignment), hbox);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
910 image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
911 gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
912 label = gtk_label_new (_("Press a key combination inside a text field."));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
913 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
914 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
915
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
916 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
917 gtk_label_set_markup (GTK_LABEL (label), _("<b>Playback:</b>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
918 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
919 gtk_frame_set_label_widget (GTK_FRAME (frame), label);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
920 gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
921 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
922 alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
923 gtk_container_add (GTK_CONTAINER (frame), alignment);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
924 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 3, 3, 3, 3);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
925 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
926 gtk_container_add (GTK_CONTAINER (alignment), vbox);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
927 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
928 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
929 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
930 gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
931 gtk_label_set_markup (GTK_LABEL (label),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
932 _("<i>Configure keys which controls Audacious playback.</i>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
933 table = gtk_table_new (4, 3, FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
934 gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
935 gtk_table_set_col_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
936 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
937
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
938 /* prev track */
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
939 add_event_controls(table, &controls->prev_track, 0, _("Previous Track:"),
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
940 plugin_cfg.prev_track);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
941
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
942 add_event_controls(table, &controls->play, 1, _("Play/Pause:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
943 plugin_cfg.play);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
944
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
945 add_event_controls(table, &controls->pause, 2, _("Pause:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
946 plugin_cfg.pause);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
947
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
948 add_event_controls(table, &controls->stop, 3, _("Stop:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
949 plugin_cfg.stop);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
950
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
951 add_event_controls(table, &controls->next_track, 4, _("Next Track:"),
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
952 plugin_cfg.next_track);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
953
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
954 add_event_controls(table, &controls->forward, 5, _("Forward 5 sec.:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
955 plugin_cfg.forward);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
956
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
957 add_event_controls(table, &controls->backward, 6, _("Rewind 5 sec.:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
958 plugin_cfg.backward);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
959
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
960
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
961 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
962 gtk_label_set_markup (GTK_LABEL (label), _("<b>Volume Control:</b>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
963 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
964 gtk_frame_set_label_widget (GTK_FRAME (frame), label);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
965 gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
966 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
967 alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
968 gtk_container_add (GTK_CONTAINER (frame), alignment);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
969 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 3, 3, 3, 3);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
970 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
971 gtk_container_add (GTK_CONTAINER (alignment), vbox);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
972 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
973 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
974 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
975 gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
976 gtk_label_set_markup (GTK_LABEL (label),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
977 _("<i>Configure keys which controls music volume.</i>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
978 table = gtk_table_new (3, 3, FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
979 gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
980 gtk_table_set_col_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
981 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
982
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
983 add_event_controls(table, &controls->mute, 0, _("Mute:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
984 plugin_cfg.mute);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
985
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
986 add_event_controls(table, &controls->vol_up, 1, _("Volume Up:"),
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
987 plugin_cfg.vol_up);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
988
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
989 add_event_controls(table, &controls->vol_down, 2, _("Volume Down:"),
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
990 plugin_cfg.vol_down);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
991
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
992
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
993 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
994 gtk_label_set_markup (GTK_LABEL (label), _("<b>Player:</b>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
995 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
996 gtk_frame_set_label_widget (GTK_FRAME (frame), label);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
997 gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
998 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
999 alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1000 gtk_container_add (GTK_CONTAINER (frame), alignment);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1001 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 3, 3, 3, 3);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1002 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1003 gtk_container_add (GTK_CONTAINER (alignment), vbox);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1004 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1005 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1006 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1007 gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1008 gtk_label_set_markup (GTK_LABEL (label),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1009 _("<i>Configure keys which control the player.</i>"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1010 table = gtk_table_new (3, 2, FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1011 gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1012 gtk_table_set_col_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1013 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1014
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1015 add_event_controls(table, &controls->jump_to_file, 0, _("Jump to File:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1016 plugin_cfg.jump_to_file);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1017
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1018 add_event_controls(table, &controls->toggle_win, 1, _("Toggle Player Windows:"),
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1019 plugin_cfg.toggle_win);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1020
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1021
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1022 button_box = gtk_hbutton_box_new ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1023 gtk_box_pack_start (GTK_BOX (main_vbox), button_box, FALSE, TRUE, 6);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1024 gtk_button_box_set_layout (GTK_BUTTON_BOX (button_box), GTK_BUTTONBOX_END);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1025 gtk_box_set_spacing (GTK_BOX (button_box), 4);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1026
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1027 button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1028 gtk_container_add (GTK_CONTAINER (button_box), button);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1029 g_signal_connect (G_OBJECT (button), "clicked",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1030 G_CALLBACK (cancel_callback), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1031
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1032 button = gtk_button_new_from_stock (GTK_STOCK_OK);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1033 gtk_container_add (GTK_CONTAINER (button_box), button);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1034 g_signal_connect (G_OBJECT (button), "clicked",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1035 G_CALLBACK (ok_callback), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1036
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1037 gtk_widget_show_all (GTK_WIDGET (window));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1038 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1039 /* configuration window end */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1040
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1041 static void about (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1042 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1043 static GtkWidget *dialog;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1044
1677
f6f5603a0954 xmms_show_message() changed to audacious_info_dialog()
Matti Hamalainen <ccr@tnsp.org>
parents: 1658
diff changeset
1045 dialog = audacious_info_dialog (_("About Global Hotkey Plugin"),
1551
a9af4f1aede9 hotkey plugin: stripped unneeded #ifdefs from standalone version
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 1543
diff changeset
1046 _("Global Hotkey Plugin\n"
a9af4f1aede9 hotkey plugin: stripped unneeded #ifdefs from standalone version
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 1543
diff changeset
1047 "Control the player with global key combinations or multimedia keys.\n\n"
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1048 "Copyright (C) 2007-2008 Sascha Hlusiak <contact@saschahlusiak.de>\n\n"
1551
a9af4f1aede9 hotkey plugin: stripped unneeded #ifdefs from standalone version
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 1543
diff changeset
1049 "Contributers include:\n"
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1050 "Copyright (C) 2006-2007 Vladimir Paskov <vlado.paskov@gmail.com>\n"
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1051 "Copyright (C) 2000-2002 Ville Syrjälä <syrjala@sci.fi>\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1052 " Bryn Davies <curious@ihug.com.au>\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1053 " Jonathan A. Davis <davis@jdhouse.org>\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1054 " Jeremy Tan <nsx@nsx.homeip.net>\n\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1055 ),
1551
a9af4f1aede9 hotkey plugin: stripped unneeded #ifdefs from standalone version
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 1543
diff changeset
1056 _("OK"), TRUE, NULL, NULL);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1057
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1058 gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1059 GTK_SIGNAL_FUNC(gtk_widget_destroyed), &dialog);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1060 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1061
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1062 /* Clear keys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1063 static void clear_keyboard (GtkWidget *widget, gpointer data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1064 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1065 KeyControls *spins = (KeyControls*)data;
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1066 spins->hotkey.key = 0;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1067 spins->hotkey.mask = 0;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1068 spins->hotkey.type = TYPE_KEY;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1069 set_keytext(spins->keytext, 0, 0, TYPE_KEY);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1070 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1071
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1072 void cancel_callback (GtkWidget *widget, gpointer data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1073 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1074 if (loaded)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1075 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1076 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1077 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1078 if (data) g_free(data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1079
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1080 gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (widget)));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1081 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1082
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1083 void ok_callback (GtkWidget *widget, gpointer data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1084 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1085 ConfigurationControls *controls= (ConfigurationControls*)data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1086
2273
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1087 plugin_cfg.play = controls->play.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1088 plugin_cfg.pause = controls->pause.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1089 plugin_cfg.stop= controls->stop.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1090 plugin_cfg.prev_track= controls->prev_track.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1091 plugin_cfg.next_track = controls->next_track.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1092 plugin_cfg.forward = controls->forward.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1093 plugin_cfg.backward = controls->backward.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1094 plugin_cfg.vol_up= controls->vol_up.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1095 plugin_cfg.vol_down = controls->vol_down.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1096 plugin_cfg.mute = controls->mute.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1097 plugin_cfg.jump_to_file= controls->jump_to_file.hotkey;
f893d05f707b Hotkey: some cleaning and simplifying
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2124
diff changeset
1098 plugin_cfg.toggle_win = controls->toggle_win.hotkey;
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1099
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1100 save_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1101
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1102 if (loaded)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1103 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1104 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1105 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1106
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1107 if (data) g_free(data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1108
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1109 gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (widget)));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1110 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1111
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1112 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1113 * plugin cleanup
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1114 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1115 static void cleanup (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1116 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1117 if (!loaded) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1118 ungrab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1119 release_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1120 loaded = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1121 }
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1122
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1123 /* grab required keys */
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1124 static void ungrab_key(HotkeyConfiguration hotkey)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1125 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1126 unsigned int modifier = hotkey.mask & ~(numlock_mask | capslock_mask | scrolllock_mask);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1127
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1128 if (hotkey.key == 0) return;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1129
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1130 if (hotkey.type == TYPE_KEY)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1131 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1132 XUngrabKey (xdisplay, hotkey.key, modifier, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1133
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1134 if (modifier == AnyModifier)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1135 return;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1136
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1137 if (numlock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1138 XUngrabKey (xdisplay, hotkey.key, modifier | numlock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1139
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1140 if (capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1141 XUngrabKey (xdisplay, hotkey.key, modifier | capslock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1142
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1143 if (scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1144 XUngrabKey (xdisplay, hotkey.key, modifier | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1145
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1146 if (numlock_mask && capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1147 XUngrabKey (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1148
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1149 if (numlock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1150 XUngrabKey (xdisplay, hotkey.key, modifier | numlock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1151
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1152 if (capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1153 XUngrabKey (xdisplay, hotkey.key, modifier | capslock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1154
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1155 if (numlock_mask && capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1156 XUngrabKey (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1157 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1158 if (hotkey.type == TYPE_MOUSE)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1159 {
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1160 XUngrabButton (xdisplay, hotkey.key, modifier, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1161
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1162 if (modifier == AnyModifier)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1163 return;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1164
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1165 if (numlock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1166 XUngrabButton (xdisplay, hotkey.key, modifier | numlock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1167
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1168 if (capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1169 XUngrabButton (xdisplay, hotkey.key, modifier | capslock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1170
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1171 if (scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1172 XUngrabButton (xdisplay, hotkey.key, modifier | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1173
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1174 if (numlock_mask && capslock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1175 XUngrabButton (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1176
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1177 if (numlock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1178 XUngrabButton (xdisplay, hotkey.key, modifier | numlock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1179
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1180 if (capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1181 XUngrabButton (xdisplay, hotkey.key, modifier | capslock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1182
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1183 if (numlock_mask && capslock_mask && scrolllock_mask)
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1184 XUngrabButton (xdisplay, hotkey.key, modifier | numlock_mask | capslock_mask | scrolllock_mask, x_root_window);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1185 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1186 }
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1187
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1188 static void ungrab_keys ()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1189 {
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1190 XErrorHandler old_handler = 0;
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1191
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1192 if (!grabbed) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1193 if (!xdisplay) return;
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1194
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1195 XSync(xdisplay, False);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1196 old_handler = XSetErrorHandler (x11_error_handler);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1197
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1198 ungrab_key(plugin_cfg.mute);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1199 ungrab_key(plugin_cfg.vol_up);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1200 ungrab_key(plugin_cfg.vol_down);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1201 ungrab_key(plugin_cfg.play);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1202 ungrab_key(plugin_cfg.pause);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1203 ungrab_key(plugin_cfg.stop);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1204 ungrab_key(plugin_cfg.prev_track);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1205 ungrab_key(plugin_cfg.next_track);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1206 ungrab_key(plugin_cfg.jump_to_file);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1207 ungrab_key(plugin_cfg.forward);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1208 ungrab_key(plugin_cfg.backward);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1209 ungrab_key(plugin_cfg.toggle_win);
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1210
2274
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1211 XSync(xdisplay, False);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1212 XSetErrorHandler (old_handler);
d9706e29e968 Hotkey: Added grabbing of mouse buttons with modificators so you can control it with the mouse from any application
Sascha Hlusiak <contact@saschahlusiak.de>
parents: 2273
diff changeset
1213
1543
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1214 grabbed = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1215 }