diff --git a/plugins/rdp/rdp_file.c b/plugins/rdp/rdp_file.c
index 9115ec29f228fc2996f22145bb2c547d2501cf5c..876dc4d3575618f15db4acdf9793f3727ccc181b 100644
--- a/plugins/rdp/rdp_file.c
+++ b/plugins/rdp/rdp_file.c
@@ -38,10 +38,10 @@
 #include "rdp_plugin.h"
 #include "rdp_file.h"
 
-gboolean remmina_rdp_file_import_test(const gchar* from_file)
+gboolean remmina_rdp_file_import_test(const gchar *from_file)
 {
 	TRACE_CALL(__func__);
-	gchar* ext;
+	gchar *ext;
 
 	ext = strrchr(from_file, '.');
 
@@ -59,20 +59,20 @@ gboolean remmina_rdp_file_import_test(const gchar* from_file)
 	return FALSE;
 }
 
-static void remmina_rdp_file_import_field(RemminaFile* remminafile, const gchar* key, const gchar* value)
+static void remmina_rdp_file_import_field(RemminaFile *remminafile, const gchar *key, const gchar *value)
 {
 	TRACE_CALL(__func__);
 	if (g_strcmp0(key, "desktopwidth") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "resolution_width", value);
-	}else if (g_strcmp0(key, "desktopheight") == 0) {
+	} else if (g_strcmp0(key, "desktopheight") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "resolution_height", value);
-	}else if (g_strcmp0(key, "session bpp") == 0) {
+	} else if (g_strcmp0(key, "session bpp") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "colordepth", value);
-	}else if (g_strcmp0(key, "keyboardhook") == 0) {
+	} else if (g_strcmp0(key, "keyboardhook") == 0) {
 		remmina_plugin_service->file_set_int(remminafile, "keyboard_grab", (atoi(value) == 1));
-	}else if (g_strcmp0(key, "full address") == 0) {
+	} else if (g_strcmp0(key, "full address") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "server", value);
-	}else if (g_strcmp0(key, "audiomode") == 0) {
+	} else if (g_strcmp0(key, "audiomode") == 0) {
 		switch (atoi(value)) {
 		case 0:
 			remmina_plugin_service->file_set_string(remminafile, "sound", "local");
@@ -81,23 +81,30 @@ static void remmina_rdp_file_import_field(RemminaFile* remminafile, const gchar*
 			remmina_plugin_service->file_set_string(remminafile, "sound", "remote");
 			break;
 		}
-	}else if (g_strcmp0(key, "microphone") == 0) {
-		remmina_plugin_service->file_set_int(remminafile, "microphone", (atoi(value) == 1));
-	}else if (g_strcmp0(key, "redirectprinters") == 0) {
+	} else if (g_strcmp0(key, "audiocapturemode") == 0) {
+		switch (atoi(value)) {
+		case 0:
+			remmina_plugin_service->file_set_string(remminafile, "microphone", "");
+			break;
+		case 1:
+			remmina_plugin_service->file_set_string(remminafile, "microphone", "sys:pulse");
+			break;
+		}
+	} else if (g_strcmp0(key, "redirectprinters") == 0) {
 		remmina_plugin_service->file_set_int(remminafile, "shareprinter", (atoi(value) == 1));
-	}else if (g_strcmp0(key, "redirectsmartcard") == 0) {
+	} else if (g_strcmp0(key, "redirectsmartcard") == 0) {
 		remmina_plugin_service->file_set_int(remminafile, "sharesmartcard", (atoi(value) == 1));
-	}else if (g_strcmp0(key, "redirectclipboard") == 0) {
+	} else if (g_strcmp0(key, "redirectclipboard") == 0) {
 		remmina_plugin_service->file_set_int(remminafile, "disableclipboard", (atoi(value) != 1));
-	}else if (g_strcmp0(key, "alternate shell") == 0) {
+	} else if (g_strcmp0(key, "alternate shell") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "exec", value);
-	}else if (g_strcmp0(key, "shell working directory") == 0) {
+	} else if (g_strcmp0(key, "shell working directory") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "execpath", value);
-	}else if (g_strcmp0(key, "loadbalanceinfo") == 0) {
+	} else if (g_strcmp0(key, "loadbalanceinfo") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "loadbalanceinfo", value);
-	}else if (g_strcmp0(key, "gatewayhostname") == 0) {
+	} else if (g_strcmp0(key, "gatewayhostname") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "gateway_server", value);
-	}else if (g_strcmp0(key, "gatewayusagemethod") == 0) {
+	} else if (g_strcmp0(key, "gatewayusagemethod") == 0) {
 		remmina_plugin_service->file_set_int(remminafile, "gateway_usage", (atoi(value) == TSC_PROXY_MODE_DETECT));
 	} else if (g_strcmp0(key, "gatewayaccesstoken") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "gatewayaccesstoken", value);
@@ -107,24 +114,24 @@ static void remmina_rdp_file_import_field(RemminaFile* remminafile, const gchar*
 	/* tsclient fields, import only */
 	else if (g_strcmp0(key, "client hostname") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "clientname", value);
-	}else if (g_strcmp0(key, "domain") == 0) {
+	} else if (g_strcmp0(key, "domain") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "domain", value);
-	}else if (g_strcmp0(key, "username") == 0) {
+	} else if (g_strcmp0(key, "username") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "username", value);
-	}else if (g_strcmp0(key, "password") == 0) {
+	} else if (g_strcmp0(key, "password") == 0) {
 		remmina_plugin_service->file_set_string(remminafile, "password", value);
 	}
 }
 
-static RemminaFile* remmina_rdp_file_import_channel(GIOChannel* channel)
+static RemminaFile *remmina_rdp_file_import_channel(GIOChannel *channel)
 {
 	TRACE_CALL(__func__);
-	gchar* p;
-	const gchar* enc;
-	gchar* line = NULL;
-	GError* error = NULL;
+	gchar *p;
+	const gchar *enc;
+	gchar *line = NULL;
+	GError *error = NULL;
 	gsize bytes_read = 0;
-	RemminaFile* remminafile;
+	RemminaFile *remminafile;
 	guchar magic[2] = { 0 };
 
 	if (g_io_channel_set_encoding(channel, NULL, &error) != G_IO_STATUS_NORMAL) {
@@ -133,16 +140,16 @@ static RemminaFile* remmina_rdp_file_import_channel(GIOChannel* channel)
 	}
 
 	/* Try to detect the UTF-16 encoding */
-	if (g_io_channel_read_chars(channel, (gchar*)magic, 2, &bytes_read, &error) != G_IO_STATUS_NORMAL) {
+	if (g_io_channel_read_chars(channel, (gchar *)magic, 2, &bytes_read, &error) != G_IO_STATUS_NORMAL) {
 		g_print("g_io_channel_read_chars: %s\n", error->message);
 		return NULL;
 	}
 
 	if (magic[0] == 0xFF && magic[1] == 0xFE) {
 		enc = "UTF-16LE";
-	}else if (magic[0] == 0xFE && magic[1] == 0xFF) {
+	} else if (magic[0] == 0xFE && magic[1] == 0xFF) {
 		enc = "UTF-16BE";
-	}else  {
+	} else {
 		enc = "UTF-8";
 		if (g_io_channel_seek_position(channel, 0, G_SEEK_SET, &error) != G_IO_STATUS_NORMAL) {
 			g_print("g_io_channel_seek: failed\n");
@@ -178,18 +185,18 @@ static RemminaFile* remmina_rdp_file_import_channel(GIOChannel* channel)
 	}
 
 	remmina_plugin_service->file_set_string(remminafile, "name",
-		remmina_plugin_service->file_get_string(remminafile, "server"));
+						remmina_plugin_service->file_get_string(remminafile, "server"));
 	remmina_plugin_service->file_set_string(remminafile, "protocol", "RDP");
 
 	return remminafile;
 }
 
-RemminaFile* remmina_rdp_file_import(const gchar* from_file)
+RemminaFile *remmina_rdp_file_import(const gchar *from_file)
 {
 	TRACE_CALL(__func__);
-	GIOChannel* channel;
-	GError* error = NULL;
-	RemminaFile* remminafile;
+	GIOChannel *channel;
+	GError *error = NULL;
+	RemminaFile *remminafile;
 
 	channel = g_io_channel_new_file(from_file, "r", &error);
 
@@ -204,7 +211,7 @@ RemminaFile* remmina_rdp_file_import(const gchar* from_file)
 	return remminafile;
 }
 
-gboolean remmina_rdp_file_export_test(RemminaFile* remminafile)
+gboolean remmina_rdp_file_export_test(RemminaFile *remminafile)
 {
 	TRACE_CALL(__func__);
 	if (g_strcmp0(remmina_plugin_service->file_get_string(remminafile, "protocol"), "RDP") == 0)
@@ -213,16 +220,16 @@ gboolean remmina_rdp_file_export_test(RemminaFile* remminafile)
 	return FALSE;
 }
 
-gboolean remmina_rdp_file_export_channel(RemminaFile* remminafile, FILE* fp)
+gboolean remmina_rdp_file_export_channel(RemminaFile *remminafile, FILE *fp)
 {
 	TRACE_CALL(__func__);
-	const gchar* cs;
+	const gchar *cs;
 	int w, h;
 
 	fprintf(fp, "screen mode id:i:2\r\n");
 	w = remmina_plugin_service->file_get_int(remminafile, "resolution_width", -1);
 	h = remmina_plugin_service->file_get_int(remminafile, "resolution_height", -1);
-	if ( w > 0 && h > 0 ) {
+	if (w > 0 && h > 0) {
 		fprintf(fp, "desktopwidth:i:%d\r\n", w);
 		fprintf(fp, "desktopheight:i:%d\r\n", h);
 	}
@@ -241,14 +248,19 @@ gboolean remmina_rdp_file_export_channel(RemminaFile* remminafile, FILE* fp)
 	fprintf(fp, "disable cursor setting:i:0\r\n");
 	fprintf(fp, "bitmapcachepersistenable:i:1\r\n");
 	cs = remmina_plugin_service->file_get_string(remminafile, "server");
-	fprintf(fp, "full address:s:%s\r\n", cs ? cs : "" );
+	fprintf(fp, "full address:s:%s\r\n", cs ? cs : "");
 	if (g_strcmp0(remmina_plugin_service->file_get_string(remminafile, "sound"), "local") == 0)
 		fprintf(fp, "audiomode:i:0\r\n");
 	else if (g_strcmp0(remmina_plugin_service->file_get_string(remminafile, "sound"), "remote") == 0)
 		fprintf(fp, "audiomode:i:1\r\n");
 	else
 		fprintf(fp, "audiomode:i:2\r\n");
-	fprintf(fp, "microphone:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? 1 : 0);
+	if (g_strcmp0(remmina_plugin_service->file_get_string(remminafile, "microphone"), "") == 0)
+		fprintf(fp, "audiocapturemode:i:0\r\n");
+	else if (g_strcmp0(remmina_plugin_service->file_get_string(remminafile, "microphone"), "0") == 0)
+		fprintf(fp, "audiocapturemode:i:1\r\n");
+	else
+		fprintf(fp, "audiocapturemode:i:1\r\n");
 	fprintf(fp, "redirectprinters:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE) ? 1 : 0);
 	fprintf(fp, "redirectsmartcard:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE) ? 1 : 0);
 	fprintf(fp, "redirectcomports:i:0\r\n");
@@ -275,20 +287,19 @@ gboolean remmina_rdp_file_export_channel(RemminaFile* remminafile, FILE* fp)
 	return TRUE;
 }
 
-gboolean remmina_rdp_file_export(RemminaFile* remminafile, const gchar* to_file)
+gboolean remmina_rdp_file_export(RemminaFile *remminafile, const gchar *to_file)
 {
 	TRACE_CALL(__func__);
-	FILE* fp;
-	gchar* p;
+	FILE *fp;
+	gchar *p;
 	gboolean ret;
 
 	p = strrchr(to_file, '.');
 
-	if (p && (g_strcmp0(p + 1, "rdp") == 0 || g_strcmp0(p + 1, "RDP") == 0)) {
+	if (p && (g_strcmp0(p + 1, "rdp") == 0 || g_strcmp0(p + 1, "RDP") == 0))
 		p = g_strdup(to_file);
-	}else  {
+	else
 		p = g_strdup_printf("%s.rdp", to_file);
-	}
 
 	fp = g_fopen(p, "w+");
 
@@ -304,4 +315,3 @@ gboolean remmina_rdp_file_export(RemminaFile* remminafile, const gchar* to_file)
 
 	return ret;
 }
-