1 /*
2  * Remmina - The GTK+ Remote Desktop Client
3  * Copyright (C) 2016-2021 Antenore Gatta, Giovanni Panozzo
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA  02110-1301, USA.
19  *
20  *  In addition, as a special exception, the copyright holders give
21  *  permission to link the code of portions of this program with the
22  *  OpenSSL library under certain conditions as described in each
23  *  individual source file, and distribute linked combinations
24  *  including the two.
25  *  You must obey the GNU General Public License in all respects
26  *  for all of the code used other than OpenSSL. *  If you modify
27  *  file(s) with this exception, you may extend this exception to your
28  *  version of the file(s), but you are not obligated to do so. *  If you
29  *  do not wish to do so, delete this exception statement from your
30  *  version. *  If you delete this exception statement from all source
31  *  files in the program, then also delete it here.
32  *
33  */
34 
35 #include "common/remmina_plugin.h"
36 
37 #include <gdk/gdkkeysyms.h>
38 #include <vncdisplay.h>
39 #include <vncutil.h>
40 #include <vncaudiopulse.h>
41 
42 
43 #ifndef GDK_Return
44 #define GDK_Return GDK_KEY_Return
45 #endif
46 #ifndef GDK_Escape
47 #define GDK_Escape GDK_KEY_Escape
48 #endif
49 #ifndef GDK_BackSpace
50 #define GDK_BackSpace GDK_KEY_BackSpace
51 #endif
52 #ifndef GDK_Delete
53 #define GDK_Delete GDK_KEY_Delete
54 #endif
55 #ifndef GDK_Control_L
56 #define GDK_Control_L GDK_KEY_Control_L
57 #endif
58 #ifndef GDK_Alt_L
59 #define GDK_Alt_L GDK_KEY_Alt_L
60 #endif
61 #ifndef GDK_F1
62 #define GDK_F1 GDK_KEY_F1
63 #endif
64 #ifndef GDK_F2
65 #define GDK_F2 GDK_KEY_F2
66 #endif
67 #ifndef GDK_F3
68 #define GDK_F3 GDK_KEY_F3
69 #endif
70 #ifndef GDK_F4
71 #define GDK_F4 GDK_KEY_F4
72 #endif
73 #ifndef GDK_F5
74 #define GDK_F5 GDK_KEY_F5
75 #endif
76 #ifndef GDK_F6
77 #define GDK_F6 GDK_KEY_F6
78 #endif
79 #ifndef GDK_F7
80 #define GDK_F7 GDK_KEY_F7
81 #endif
82 #ifndef GDK_F8
83 #define GDK_F8 GDK_KEY_F8
84 #endif
85 #ifndef GDK_F11
86 #define GDK_F11 GDK_KEY_F11
87 #endif
88 
89 #define GET_PLUGIN_DATA(gp) (GVncPluginData *)g_object_get_data(G_OBJECT(gp), "plugin-data")
90 #define REMMINA_PLUGIN_DEBUG(fmt, ...) remmina_plugin_service->_remmina_debug(__func__, fmt, ## __VA_ARGS__)
91 
92 typedef struct _GVncPluginData {
93 	GtkWidget *	box;
94 	GtkWidget *	vnc;
95 	VncConnection * conn;
96 	VncAudioPulse * pa;
97 	gchar *		error_msg;
98 	gchar *		clipstr;
99 	gulong		signal_clipboard;
100 	gint		depth_profile;
101 	gint		shared;
102 	gboolean	lossy_encoding;
103 	gboolean	viewonly;
104 	gint		width;
105 	gint		height;
106 	gint		fd;
107 	gchar *		addr;
108 } GVncPluginData;
109 
110 G_BEGIN_DECLS
111 G_END_DECLS
112