annotate src/hotkey/plugin.c @ 1543:ec4e8ec829b1

Include global hotkey plugin in build system (src/hotkey)
author Sascha Hlusiak <contact@saschahlusiak.de>
date Fri, 31 Aug 2007 22:48:53 +0200
parents
children a9af4f1aede9
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 *
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
5 * Copyright (c) 2007 Sascha Hlusiak <contact@saschahlusiak.de>
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
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
52 #ifdef ENABLE_NLS
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
53 #ifdef HAVE_AUDACIOUS_I18N_H
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
54 #include <audacious/i18n.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
55 #else
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
56 #ifdef HAVE_DCGETTEXT
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
57 #include <libintl.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
58 #define _(String) dgettext(PACKAGE, String)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
59 #else
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
60 #define _(String) (String)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
61 #endif
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
62 #endif
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
63 #else
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
64 #define _(String) (String)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
65 #endif
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
66
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
67 /* for xmms_show_message () */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
68 #include <audacious/util.h>
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
69
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
70
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
71 /* func defs */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
72 void x_display_init (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
73 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
74 static void init (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
75 static void grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
76 static void ungrab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
77 static gboolean handle_keyevent(int keycode, int state);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
78 static gboolean setup_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
79 static void release_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
80
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
81 static void load_config (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
82 static void save_config (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
83 static void configure (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
84 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
85
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
86 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
87 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
88 static void about (void);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
89 static void cleanup (void);
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 typedef struct {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
92 gint vol_increment;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
93 gint vol_decrement;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
94
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
95 /* keyboard */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
96 gint mute, mute_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
97 gint vol_down, vol_down_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
98 gint vol_up, vol_up_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
99 gint play, play_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
100 gint stop, stop_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
101 gint pause, pause_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
102 gint prev_track, prev_track_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
103 gint next_track, next_track_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
104 gint jump_to_file, jump_to_file_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
105 gint toggle_win, toggle_win_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
106
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
107 gint forward, forward_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
108 gint backward, backward_mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
109 } PluginConfig;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
110
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
111 PluginConfig plugin_cfg;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
112
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
113 static Display *xdisplay = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
114 static Window x_root_window = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
115 static gint grabbed = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
116 static gboolean loaded = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
117 static unsigned int numlock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
118 static unsigned int scrolllock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
119 static unsigned int capslock_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
120
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
121
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 GtkWidget *keytext;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
125 gint key, mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
126 } KeyControls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
127
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
128 typedef struct {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
129 KeyControls play;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
130 KeyControls stop;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
131 KeyControls pause;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
132 KeyControls prev;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
133 KeyControls next;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
134 KeyControls up;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
135 KeyControls down;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
136 KeyControls mute;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
137 KeyControls jump_to_file;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
138 KeyControls forward;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
139 KeyControls backward;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
140 KeyControls toggle_win;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
141 } ConfigurationControls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
142
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
143 static GeneralPlugin audacioushotkey =
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
144 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
145 NULL,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
146 NULL,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
147 "Global Hotkey",
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
148 init,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
149 about,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
150 configure,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
151 cleanup
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
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
154 GeneralPlugin *hotkey_gplist[] = { &audacioushotkey, NULL };
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
155 DECLARE_PLUGIN(hotkey, NULL, NULL, NULL, NULL, NULL, hotkey_gplist, NULL, NULL);
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
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
158
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
159 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
160 * plugin activated
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 static void init (void)
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 x_display_init ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
165 setup_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
166 load_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
167 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
168
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
169 loaded = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
170 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
171
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
172 /* check X display */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
173 void x_display_init (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
174 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
175 if (xdisplay != NULL) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
176 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
177 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
178 get_offending_modifiers(xdisplay);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
179 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
180
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
181 /* Taken from xbindkeys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
182 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
183 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
184 int i;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
185 XModifierKeymap *modmap;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
186 KeyCode nlock, slock;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
187 static int mask_table[8] = {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
188 ShiftMask, LockMask, ControlMask, Mod1Mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
189 Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
190 };
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 nlock = XKeysymToKeycode (dpy, XK_Num_Lock);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
193 slock = XKeysymToKeycode (dpy, XK_Scroll_Lock);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
194
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 * 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
197 * 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
198 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
199 modmap = XGetModifierMapping (dpy);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
200
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
201 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
202 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
203 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
204 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
205 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
206 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
207 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
208 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
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
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
212 capslock_mask = LockMask;
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 if (modmap)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
215 XFreeModifiermap (modmap);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
216 }
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 /* handle keys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
219 static gboolean handle_keyevent (int keycode, int state)
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 gint current_volume, old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
222 static gint volume_static = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
223 gboolean play, mute;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
224
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
225 /* playing or not */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
226 play = audacious_drct_is_playing ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
227
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
228 /* get current volume */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
229 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
230 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
231 if (current_volume)
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 /* volume is not mute */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
234 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
235 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
236 /* volume is mute */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
237 mute = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
238 }
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 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
241
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
242 /* mute the playback */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
243 if ((keycode == plugin_cfg.mute) && (state == plugin_cfg.mute_mask))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
244 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
245 if (!mute)
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 volume_static = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
248 audacious_drct_set_main_volume (0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
249 mute = TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
250 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
251 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
252 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
253 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
254 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
255 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
256
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
257 /* decreace volume */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
258 if ((keycode == plugin_cfg.vol_down) && (state == plugin_cfg.vol_down_mask))
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 (mute)
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 = old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
263 old_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
264 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
265 }
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 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
268 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
269 current_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
270 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
271
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
272 if (current_volume != old_volume)
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 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
275 }
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 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
278 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
279 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
280
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
281 /* increase volume */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
282 if ((keycode == plugin_cfg.vol_up) && (state == plugin_cfg.vol_up_mask))
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 (mute)
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 = old_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
287 old_volume = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
288 mute = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
289 }
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 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
292 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
293 current_volume = 100;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
294 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
295
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
296 if (current_volume != old_volume)
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 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
299 }
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 old_volume = current_volume;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
302 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
303 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
304
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
305 /* play */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
306 if ((keycode == plugin_cfg.play) && (state == plugin_cfg.play_mask))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
307 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
308 if (!play)
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 audacious_drct_play ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
311 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
312 audacious_drct_pause ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
313 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
314 return TRUE;
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
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
317 /* pause */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
318 if ((keycode == plugin_cfg.pause) && (state == plugin_cfg.pause_mask))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
319 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
320 if (!play) audacious_drct_play ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
321 else audacious_drct_pause ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
322
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 /* stop */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
327 if ((keycode == plugin_cfg.stop) && (state == plugin_cfg.stop_mask))
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_stop ();
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 /* prev track */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
334 if ((keycode == plugin_cfg.prev_track) && (state == plugin_cfg.prev_track_mask))
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_prev ();
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 /* next track */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
341 if ((keycode == plugin_cfg.next_track) && (state == plugin_cfg.next_track_mask))
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 audacious_drct_playlist_next ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
344 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
345 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
346
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
347 /* forward */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
348 if ((keycode == plugin_cfg.forward) && (state == plugin_cfg.forward_mask))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
349 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
350 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
351 time += 5000; /* Jump 5s into future */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
352 audacious_drct_jump_to_time(time);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
353 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
354 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
355
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
356 /* backward */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
357 if ((keycode == plugin_cfg.backward) && (state == plugin_cfg.backward_mask))
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 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
360 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
361 else time = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
362 audacious_drct_jump_to_time(time);
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 /* Open Jump-To-File dialog */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
367 if ((keycode == plugin_cfg.jump_to_file) && (state == plugin_cfg.jump_to_file_mask))
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 audacious_drct_show_jtf_box();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
370 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
371 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
372
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
373 /* Toggle Windows */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
374 if ((keycode == plugin_cfg.toggle_win) && (state == plugin_cfg.toggle_win_mask))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
375 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
376 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
377 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
378 if (is_main) {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
379 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
380 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
381 audacious_drct_main_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
382 audacious_drct_pl_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
383 audacious_drct_eq_win_toggle(FALSE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
384 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
385 audacious_drct_main_win_toggle(TRUE);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
386 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
387 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
388 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
389 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
390 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
391
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
392 return FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
393 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
394
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
395 static GdkFilterReturn
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
396 gdk_filter(GdkXEvent *xevent,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
397 GdkEvent *event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
398 gpointer data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
399 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
400 XKeyEvent *keyevent = (XKeyEvent*)xevent;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
401
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
402 if (((XEvent*)keyevent)->type != KeyPress)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
403 return -1;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
404
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
405 if (handle_keyevent(keyevent->keycode, keyevent->state))
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
406 return GDK_FILTER_REMOVE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
407
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
408 return GDK_FILTER_CONTINUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
409 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
410
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
411 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
412 setup_filter()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
413 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
414 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
415 gdk_filter,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
416 NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
417
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
418 return TRUE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
419 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
420
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
421 static void release_filter()
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 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
424 gdk_filter,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
425 NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
426 }
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 /* load plugin configuration */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
429 static void load_config (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
430 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
431 ConfigDb *cfdb;
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 if (xdisplay == NULL) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
434
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
435 /* default volume level */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
436 plugin_cfg.vol_increment = 4;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
437 plugin_cfg.vol_decrement = 4;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
438
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
439 plugin_cfg.mute = XKeysymToKeycode(xdisplay, XF86XK_AudioMute);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
440 plugin_cfg.mute_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
441 plugin_cfg.vol_down = XKeysymToKeycode(xdisplay, XF86XK_AudioLowerVolume);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
442 plugin_cfg.vol_down_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
443 plugin_cfg.vol_up = XKeysymToKeycode(xdisplay, XF86XK_AudioRaiseVolume);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
444 plugin_cfg.vol_up_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
445 plugin_cfg.play = XKeysymToKeycode(xdisplay, XF86XK_AudioPlay);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
446 plugin_cfg.play_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
447 plugin_cfg.pause = XKeysymToKeycode(xdisplay, XF86XK_AudioPause);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
448 plugin_cfg.pause_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
449 plugin_cfg.stop = XKeysymToKeycode(xdisplay, XF86XK_AudioStop);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
450 plugin_cfg.stop_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
451 plugin_cfg.prev_track = XKeysymToKeycode(xdisplay, XF86XK_AudioPrev);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
452 plugin_cfg.prev_track_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
453 plugin_cfg.next_track = XKeysymToKeycode(xdisplay, XF86XK_AudioNext);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
454 plugin_cfg.next_track_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
455 plugin_cfg.jump_to_file = XKeysymToKeycode(xdisplay, XF86XK_AudioMedia);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
456 plugin_cfg.jump_to_file_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
457 plugin_cfg.forward = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
458 plugin_cfg.forward_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
459 plugin_cfg.backward = XKeysymToKeycode(xdisplay, XF86XK_AudioRewind);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
460 plugin_cfg.backward_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
461 plugin_cfg.toggle_win = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
462 plugin_cfg.toggle_win_mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
463
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
464 /* open configuration database */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
465 cfdb = bmp_cfg_db_open ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
466
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
467 bmp_cfg_db_get_int (cfdb, "globalHotkey", "mute", &plugin_cfg.mute);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
468 bmp_cfg_db_get_int (cfdb, "globalHotkey", "mute_mask", &plugin_cfg.mute_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
469 bmp_cfg_db_get_int (cfdb, "globalHotkey", "vol_down", &plugin_cfg.vol_down);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
470 bmp_cfg_db_get_int (cfdb, "globalHotkey", "vol_down_mask", &plugin_cfg.vol_down_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
471 bmp_cfg_db_get_int (cfdb, "globalHotkey", "vol_up", &plugin_cfg.vol_up);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
472 bmp_cfg_db_get_int (cfdb, "globalHotkey", "vol_up_mask", &plugin_cfg.vol_up_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
473 bmp_cfg_db_get_int (cfdb, "globalHotkey", "play", &plugin_cfg.play);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
474 bmp_cfg_db_get_int (cfdb, "globalHotkey", "play_mask", &plugin_cfg.play_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
475 bmp_cfg_db_get_int (cfdb, "globalHotkey", "pause", &plugin_cfg.pause);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
476 bmp_cfg_db_get_int (cfdb, "globalHotkey", "pause_mask", &plugin_cfg.pause_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
477 bmp_cfg_db_get_int (cfdb, "globalHotkey", "stop", &plugin_cfg.stop);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
478 bmp_cfg_db_get_int (cfdb, "globalHotkey", "stop_mask", &plugin_cfg.stop_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
479 bmp_cfg_db_get_int (cfdb, "globalHotkey", "prev_track", &plugin_cfg.prev_track);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
480 bmp_cfg_db_get_int (cfdb, "globalHotkey", "prev_track_mask", &plugin_cfg.prev_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
481 bmp_cfg_db_get_int (cfdb, "globalHotkey", "next_track", &plugin_cfg.next_track);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
482 bmp_cfg_db_get_int (cfdb, "globalHotkey", "next_track_mask", &plugin_cfg.next_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
483 bmp_cfg_db_get_int (cfdb, "globalHotkey", "jump_to_file", &plugin_cfg.jump_to_file);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
484 bmp_cfg_db_get_int (cfdb, "globalHotkey", "jump_to_file_mask", &plugin_cfg.jump_to_file_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
485 bmp_cfg_db_get_int (cfdb, "globalHotkey", "forward", &plugin_cfg.forward);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
486 bmp_cfg_db_get_int (cfdb, "globalHotkey", "forward_mask", &plugin_cfg.forward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
487 bmp_cfg_db_get_int (cfdb, "globalHotkey", "backward", &plugin_cfg.backward);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
488 bmp_cfg_db_get_int (cfdb, "globalHotkey", "backward_mask", &plugin_cfg.backward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
489 bmp_cfg_db_get_int (cfdb, "globalHotkey", "toggle_win", &plugin_cfg.toggle_win);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
490 bmp_cfg_db_get_int (cfdb, "globalHotkey", "toggle_win_mask", &plugin_cfg.toggle_win_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
491
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
492 bmp_cfg_db_close (cfdb);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
493 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
494
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
495 /* save plugin configuration */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
496 static void save_config (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
497 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
498 ConfigDb *cfdb;
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 /* open configuration database */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
501 cfdb = bmp_cfg_db_open ( );
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 bmp_cfg_db_set_int (cfdb, "globalHotkey", "mute", plugin_cfg.mute);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
504 bmp_cfg_db_set_int (cfdb, "globalHotkey", "mute_mask", plugin_cfg.mute_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
505 bmp_cfg_db_set_int (cfdb, "globalHotkey", "vol_up", plugin_cfg.vol_up);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
506 bmp_cfg_db_set_int (cfdb, "globalHotkey", "vol_up_mask", plugin_cfg.vol_up_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
507 bmp_cfg_db_set_int (cfdb, "globalHotkey", "vol_down", plugin_cfg.vol_down);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
508 bmp_cfg_db_set_int (cfdb, "globalHotkey", "vol_down_mask", plugin_cfg.vol_down_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
509 bmp_cfg_db_set_int (cfdb, "globalHotkey", "play", plugin_cfg.play);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
510 bmp_cfg_db_set_int (cfdb, "globalHotkey", "play_mask", plugin_cfg.play_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
511 bmp_cfg_db_set_int (cfdb, "globalHotkey", "pause", plugin_cfg.pause);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
512 bmp_cfg_db_set_int (cfdb, "globalHotkey", "pause_mask", plugin_cfg.pause_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
513 bmp_cfg_db_set_int (cfdb, "globalHotkey", "stop", plugin_cfg.stop);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
514 bmp_cfg_db_set_int (cfdb, "globalHotkey", "stop_mask", plugin_cfg.stop_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
515 bmp_cfg_db_set_int (cfdb, "globalHotkey", "prev_track", plugin_cfg.prev_track);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
516 bmp_cfg_db_set_int (cfdb, "globalHotkey", "prev_track_mask", plugin_cfg.prev_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
517 bmp_cfg_db_set_int (cfdb, "globalHotkey", "next_track", plugin_cfg.next_track);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
518 bmp_cfg_db_set_int (cfdb, "globalHotkey", "next_track_mask", plugin_cfg.next_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
519 bmp_cfg_db_set_int (cfdb, "globalHotkey", "jump_to_file", plugin_cfg.jump_to_file);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
520 bmp_cfg_db_set_int (cfdb, "globalHotkey", "jump_to_file_mask", plugin_cfg.jump_to_file_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
521 bmp_cfg_db_set_int (cfdb, "globalHotkey", "forward", plugin_cfg.forward);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
522 bmp_cfg_db_set_int (cfdb, "globalHotkey", "forward_mask", plugin_cfg.forward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
523 bmp_cfg_db_set_int (cfdb, "globalHotkey", "backward", plugin_cfg.backward);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
524 bmp_cfg_db_set_int (cfdb, "globalHotkey", "backward_mask", plugin_cfg.backward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
525 bmp_cfg_db_set_int (cfdb, "globalHotkey", "toggle_win", plugin_cfg.toggle_win);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
526 bmp_cfg_db_set_int (cfdb, "globalHotkey", "toggle_win_mask", plugin_cfg.toggle_win_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
527 bmp_cfg_db_close (cfdb);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
528 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
529
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
530 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
531 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
532 return 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
533 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
534
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
535 /* grab requied keys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
536 static void grab_key(KeyCode keycode, unsigned int modifier)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
537 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
538 modifier &= ~(numlock_mask | capslock_mask | scrolllock_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
539
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
540 XGrabKey (xdisplay, keycode, modifier, x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
541 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
542
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
543 if (modifier == AnyModifier)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
544 return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
545
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
546 if (numlock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
547 XGrabKey (xdisplay, keycode, modifier | numlock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
548 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
549 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
550
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
551 if (capslock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
552 XGrabKey (xdisplay, keycode, modifier | capslock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
553 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
554 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
555
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
556 if (scrolllock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
557 XGrabKey (xdisplay, keycode, modifier | scrolllock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
558 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
559 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
560
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
561 if (numlock_mask && capslock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
562 XGrabKey (xdisplay, keycode, modifier | numlock_mask | capslock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
563 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
564 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
565
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
566 if (numlock_mask && scrolllock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
567 XGrabKey (xdisplay, keycode, modifier | numlock_mask | scrolllock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
568 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
569 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
570
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
571 if (capslock_mask && scrolllock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
572 XGrabKey (xdisplay, keycode, modifier | capslock_mask | scrolllock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
573 x_root_window,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
574 False, GrabModeAsync, GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
575
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
576 if (numlock_mask && capslock_mask && scrolllock_mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
577 XGrabKey (xdisplay, keycode,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
578 modifier | numlock_mask | capslock_mask | scrolllock_mask,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
579 x_root_window, False, GrabModeAsync,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
580 GrabModeAsync);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
581 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
582
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
583
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
584 static void grab_keys ()
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
585 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
586 if (grabbed) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
587 if (xdisplay == NULL) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
588
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
589 XErrorHandler old_handler = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
590
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
591 XSync(xdisplay, False);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
592 old_handler = XSetErrorHandler (x11_error_handler);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
593
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
594 if (plugin_cfg.mute) grab_key(plugin_cfg.mute, plugin_cfg.mute_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
595 if (plugin_cfg.vol_up) grab_key(plugin_cfg.vol_up, plugin_cfg.vol_up_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
596 if (plugin_cfg.vol_down) grab_key(plugin_cfg.vol_down, plugin_cfg.vol_down_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
597 if (plugin_cfg.play) grab_key(plugin_cfg.play, plugin_cfg.play_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
598 if (plugin_cfg.pause) grab_key(plugin_cfg.pause, plugin_cfg.pause_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
599 if (plugin_cfg.stop) grab_key(plugin_cfg.stop, plugin_cfg.stop_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
600 if (plugin_cfg.prev_track) grab_key(plugin_cfg.prev_track, plugin_cfg.prev_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
601 if (plugin_cfg.next_track) grab_key(plugin_cfg.next_track, plugin_cfg.next_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
602 if (plugin_cfg.jump_to_file) grab_key(plugin_cfg.jump_to_file, plugin_cfg.jump_to_file_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
603 if (plugin_cfg.forward) grab_key(plugin_cfg.forward, plugin_cfg.forward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
604 if (plugin_cfg.backward) grab_key(plugin_cfg.backward, plugin_cfg.backward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
605 if (plugin_cfg.toggle_win) grab_key(plugin_cfg.toggle_win, plugin_cfg.toggle_win_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
606
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
607 XSync(xdisplay, False);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
608 XSetErrorHandler (old_handler);
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 grabbed = 1;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
611 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
612 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
613 * plugin init end
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
614 */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
615
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
616 static void set_keytext (GtkWidget *entry, gint key, gint mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
617 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
618 gchar *text = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
619
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
620 if (key == 0 && mask == 0)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
621 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
622 text = g_strdup(_("(none)"));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
623 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
624 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
625 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
626 gchar *strings[9];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
627 gchar *keytext = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
628 int i, j;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
629 KeySym keysym;
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 keysym = XKeycodeToKeysym(xdisplay, key, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
632 if (keysym == 0 || keysym == NoSymbol)
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 keytext = g_strdup_printf("#%3d", key);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
635 } else {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
636 keytext = g_strdup(XKeysymToString(keysym));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
637 }
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 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
640 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
641 if (mask & modifiers[j])
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
642 strings[i++] = modifier_string[j];
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
643 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
644 if (key != 0) strings[i++] = keytext;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
645 strings[i] = NULL;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
646
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
647 text = g_strjoinv(" + ", strings);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
648 g_free(keytext);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
649 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
650
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
651 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
652 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
653 if (text) g_free(text);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
654 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
655
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
656 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
657 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
658 GdkEventKey * event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
659 gpointer user_data)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
660 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
661 KeyControls *controls = (KeyControls*) user_data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
662 int is_mod;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
663 int mod;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
664
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
665 if (event->keyval == GDK_Tab) return FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
666 mod = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
667 is_mod = 0;
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 ((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
670 mod |= ControlMask;
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 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
673 mod |= Mod1Mask;
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 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
676 mod |= ShiftMask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
677
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
678 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
679 mod |= Mod5Mask;
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 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
682 mod |= Mod4Mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
683
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
684 if (!is_mod) {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
685 controls->key = event->hardware_keycode;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
686 controls->mask = mod;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
687 } else controls->key = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
688
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
689 set_keytext(controls->keytext, is_mod ? 0 : event->hardware_keycode, mod);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
690 return FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
691 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
692
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
693 static gboolean
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
694 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
695 GdkEventKey * event,
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
696 gpointer user_data)
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 KeyControls *controls = (KeyControls*) user_data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
699 if (controls->key == 0) {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
700 controls->mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
701 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
702 set_keytext(controls->keytext, controls->key, controls->mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
703 return FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
704 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
705
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 static void add_event_controls(GtkWidget *table, KeyControls *controls, int row, char* descr, gint key, gint mask)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
708 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
709 GtkWidget *label;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
710 GtkWidget *button;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
711
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
712 controls->key = key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
713 controls->mask = mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
714
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
715 label = gtk_label_new (_(descr));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
716 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
717 (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
718 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
719 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
720
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
721 controls->keytext = gtk_entry_new ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
722 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
723 (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
724 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
725
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
726 set_keytext(controls->keytext, key, mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
727 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
728 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
729 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
730 G_CALLBACK(on_entry_key_release_event), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
731
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
732 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
733 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
734 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
735 G_CALLBACK (clear_keyboard), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
736 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
737
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
738 /* configuration window */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
739 static void configure (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
740 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
741 ConfigurationControls *controls;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
742 GtkWidget *window;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
743 GtkWidget *main_vbox, *vbox;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
744 GtkWidget *hbox;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
745 GtkWidget *alignment;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
746 GtkWidget *frame;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
747 GtkWidget *label;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
748 GtkWidget *image;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
749 GtkWidget *table;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
750 GtkWidget *button_box, *button;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
751
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
752 if (!xdisplay) x_display_init();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
753
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
754 #ifdef ENABLE_NLS
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
755 bind_textdomain_codeset(PACKAGE, "UTF-8");
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
756 #endif
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
757
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
758 load_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
759
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
760 ungrab_keys();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
761
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
762 controls = (ConfigurationControls*)g_malloc(sizeof(ConfigurationControls));
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
763 if (!controls)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
764 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
765 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
766 "Aborting!");
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
767 return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
768 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
769
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
770 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
771 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
772 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
773 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
774 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
775 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
776
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
777 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
778 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
779
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
780 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
781 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
782 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
783 hbox = gtk_hbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
784 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
785 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
786 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
787 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
788 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
789 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
790
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
791 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
792 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
793 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
794 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
795 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
796 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
797 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
798 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
799 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
800 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
801 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
802 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
803 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
804 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
805 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
806 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
807 _("<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
808 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
809 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
810 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
811 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
812
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
813 /* prev track */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
814 add_event_controls(table, &controls->prev, 0, _("Previous Track:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
815 plugin_cfg.prev_track, plugin_cfg.prev_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
816
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
817 add_event_controls(table, &controls->play, 1, _("Play/Pause:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
818 plugin_cfg.play, plugin_cfg.play_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
819
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
820 add_event_controls(table, &controls->pause, 2, _("Pause:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
821 plugin_cfg.pause, plugin_cfg.pause_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
822
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
823 add_event_controls(table, &controls->stop, 3, _("Stop:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
824 plugin_cfg.stop, plugin_cfg.stop_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
825
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
826 add_event_controls(table, &controls->next, 4, _("Next Track:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
827 plugin_cfg.next_track, plugin_cfg.next_track_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
828
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
829 add_event_controls(table, &controls->forward, 5, _("Forward 5 sec.:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
830 plugin_cfg.forward, plugin_cfg.forward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
831
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
832 add_event_controls(table, &controls->backward, 6, _("Rewind 5 sec.:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
833 plugin_cfg.backward, plugin_cfg.backward_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
834
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
835
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
836 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
837 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
838 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
839 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
840 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
841 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
842 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
843 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
844 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
845 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
846 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
847 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
848 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
849 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
850 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
851 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
852 _("<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
853 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
854 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
855 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
856 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
857
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
858
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
859
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
860 add_event_controls(table, &controls->mute, 0, _("Mute:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
861 plugin_cfg.mute, plugin_cfg.mute_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
862
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
863 add_event_controls(table, &controls->up, 1, _("Volume Up:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
864 plugin_cfg.vol_up, plugin_cfg.vol_up_mask);
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 add_event_controls(table, &controls->down, 2, _("Volume Down:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
867 plugin_cfg.vol_down, plugin_cfg.vol_down_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
868
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 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
871 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
872 frame = gtk_frame_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
873 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
874 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
875 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
876 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
877 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
878 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
879 vbox = gtk_vbox_new (FALSE, 2);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
880 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
881 label = gtk_label_new (NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
882 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
883 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
884 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
885 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
886 _("<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
887 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
888 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
889 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
890 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
891
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
892 add_event_controls(table, &controls->jump_to_file, 0, _("Jump to File:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
893 plugin_cfg.jump_to_file, plugin_cfg.jump_to_file_mask);
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 add_event_controls(table, &controls->toggle_win, 1, _("Toggle Player Windows:"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
896 plugin_cfg.toggle_win, plugin_cfg.toggle_win_mask);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
897
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
898
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
899 button_box = gtk_hbutton_box_new ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
900 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
901 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
902 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
903
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
904 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
905 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
906 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
907 G_CALLBACK (cancel_callback), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
908
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
909 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
910 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
911 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
912 G_CALLBACK (ok_callback), controls);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
913
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
914 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
915 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
916 /* configuration window end */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
917
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
918 static void about (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
919 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
920 static GtkWidget *dialog;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
921
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
922 #ifdef ENABLE_NLS
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
923 bind_textdomain_codeset(PACKAGE, "UTF-8");
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
924 #endif
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
925
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
926 dialog = xmms_show_message (_("About Global Hotkey Plugin"),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
927 _("Global Hotkey Plugin version " VERSION "\n\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
928 "Copyright (C) 2007 Sascha Hlusiak <contact@saschahlusiak.de>\n\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
929
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
930 "Parts of the plugin source are from itouch-ctrl plugin.\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
931 "Authors of itouch-ctrl are listed below:\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
932 "Copyright (C) 2006 - 2007 Vladimir Paskov <vlado.paskov@gmail.com>\n\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
933
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
934 "Parts of the plugin source are from xmms-itouch plugin.\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
935 "Authors of xmms-itouch are listed below:\n"
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
936 "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
937 " 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
938 " 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
939 " 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
940 ),
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
941 _("Ok"), TRUE, NULL, NULL);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
942
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
943 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
944 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
945 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
946
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
947 /* Clear keys */
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
948 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
949 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
950 KeyControls *spins = (KeyControls*)data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
951 spins->key = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
952 spins->mask = 0;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
953 set_keytext(spins->keytext, 0, 0);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
954 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
955
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
956 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
957 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
958 if (loaded)
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 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
961 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
962 if (data) g_free(data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
963
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
964 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
965 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
966
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
967 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
968 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
969 ConfigurationControls *controls= (ConfigurationControls*)data;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
970
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
971 plugin_cfg.play = controls->play.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
972 plugin_cfg.play_mask = controls->play.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
973
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
974 plugin_cfg.pause = controls->pause.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
975 plugin_cfg.pause_mask = controls->pause.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
976
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
977 plugin_cfg.stop = controls->stop.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
978 plugin_cfg.stop_mask = controls->stop.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
979
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
980 plugin_cfg.prev_track = controls->prev.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
981 plugin_cfg.prev_track_mask = controls->prev.mask;
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 plugin_cfg.next_track = controls->next.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
984 plugin_cfg.next_track_mask = controls->next.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
985
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
986 plugin_cfg.forward = controls->forward.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
987 plugin_cfg.forward_mask = controls->forward.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
988
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
989 plugin_cfg.backward = controls->backward.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
990 plugin_cfg.backward_mask = controls->backward.mask;
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 plugin_cfg.vol_up = controls->up.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
993 plugin_cfg.vol_up_mask = controls->up.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
994
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
995 plugin_cfg.vol_down = controls->down.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
996 plugin_cfg.vol_down_mask = controls->down.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
997
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
998 plugin_cfg.mute = controls->mute.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
999 plugin_cfg.mute_mask = controls->mute.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1000
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1001 plugin_cfg.jump_to_file = controls->jump_to_file.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1002 plugin_cfg.jump_to_file_mask = controls->jump_to_file.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1003
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1004 plugin_cfg.toggle_win= controls->toggle_win.key;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1005 plugin_cfg.toggle_win_mask = controls->toggle_win.mask;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1006
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1007 save_config ( );
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1008
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1009 if (loaded)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1010 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1011 grab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1012 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1013
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1014 if (data) g_free(data);
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1015
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1016 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
1017 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1018
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1019 /*
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1020 * plugin cleanup
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 static void cleanup (void)
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1023 {
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1024 if (!loaded) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1025 ungrab_keys ();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1026 release_filter();
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1027 loaded = FALSE;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1028 }
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1029
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1030 static void ungrab_keys ()
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 if (!grabbed) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1033 if (!xdisplay) return;
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1034
ec4e8ec829b1 Include global hotkey plugin in build system (src/hotkey)
Sascha Hlusiak <contact@saschahlusiak.de>
parents:
diff changeset
1035 XUngrabKey (xdisplay, AnyKey, AnyModifier, x_root_window);
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 grabbed = 0;
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