Merge 059ae6f870 into 0ab6f664b9
This commit is contained in:
commit
a7190e8f5b
@ -177,11 +177,29 @@ struct guac_rdp_keymap {
|
||||
const guac_rdp_keysym_desc* mapping;
|
||||
|
||||
/**
|
||||
* FreeRDP keyboard layout associated with this
|
||||
* Keyboard layout associated with this
|
||||
* keymap. If this keymap is selected, this layout
|
||||
* will be requested from the server.
|
||||
*/
|
||||
const UINT32 freerdp_keyboard_layout;
|
||||
const UINT32 keyboard_layout;
|
||||
|
||||
/**
|
||||
* Keyboard type definition.
|
||||
* See https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardtype
|
||||
*/
|
||||
const UINT32 keyboard_type;
|
||||
|
||||
/**
|
||||
* Keyboard subtype definition.
|
||||
* See https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardtype
|
||||
*/
|
||||
const UINT32 keyboard_subtype;
|
||||
|
||||
/**
|
||||
* Keyboard number of function keys.
|
||||
* See https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardtype
|
||||
*/
|
||||
const UINT32 keyboard_function_key;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -55,7 +55,10 @@ for my $filename (@ARGV) {
|
||||
my $content = "";
|
||||
my $parent = "";
|
||||
my $layout_name = "";
|
||||
my $freerdp = "";
|
||||
my $keyboard_layout = "";
|
||||
my $keyboard_type = "";
|
||||
my $keyboard_subtype = "";
|
||||
my $keyboard_function_key = "";
|
||||
|
||||
# Parse file
|
||||
open INPUT, '<', "$filename";
|
||||
@ -77,10 +80,26 @@ for my $filename (@ARGV) {
|
||||
$parent = keymap_symbol($name);
|
||||
}
|
||||
|
||||
# FreeRDP equiv
|
||||
# FreeRDP equiv keyboard layout
|
||||
elsif ((my $name) = m/^\s*freerdp\s+"(.*)"\s*(?:#.*)?$/) {
|
||||
$freerdp = $name;
|
||||
$keyboard_layout = $name;
|
||||
}
|
||||
|
||||
# keyboard type
|
||||
elsif ((my $name) = m/^\s*keyboard_type\s+"(.*)"\s*(?:#.*)?$/) {
|
||||
$keyboard_type = $name;
|
||||
}
|
||||
|
||||
# keyboard subtype
|
||||
elsif ((my $name) = m/^\s*keyboard_subtype\s+"(.*)"\s*(?:#.*)?$/) {
|
||||
$keyboard_subtype = $name;
|
||||
}
|
||||
|
||||
# keyboard function key
|
||||
elsif ((my $name) = m/^\s*keyboard_function_key\s+"(.*)"\s*(?:#.*)?$/) {
|
||||
$keyboard_function_key = $name;
|
||||
}
|
||||
|
||||
|
||||
# Map
|
||||
elsif ((my $range, my $onto) =
|
||||
@ -241,9 +260,21 @@ for my $filename (@ARGV) {
|
||||
print OUTPUT " .parent = &$parent,\n";
|
||||
}
|
||||
|
||||
# FreeRDP layout (if any)
|
||||
if ($freerdp) {
|
||||
print OUTPUT " .freerdp_keyboard_layout = $freerdp,\n";
|
||||
# Keyboard layout (if any)
|
||||
if ($keyboard_layout) {
|
||||
print OUTPUT " .keyboard_layout = $keyboard_layout,\n";
|
||||
}
|
||||
# Keyboard type (if any)
|
||||
if ($keyboard_type) {
|
||||
print OUTPUT " .keyboard_type = $keyboard_type,\n";
|
||||
}
|
||||
# Keyboard subtype (if any)
|
||||
if ($keyboard_subtype) {
|
||||
print OUTPUT " .keyboard_subtype = $keyboard_subtype,\n";
|
||||
}
|
||||
# Keyboard funtion keys (if any)
|
||||
if ($keyboard_function_key) {
|
||||
print OUTPUT " .keyboard_function_key = $keyboard_function_key,\n";
|
||||
}
|
||||
|
||||
# Desc footer
|
||||
|
||||
@ -19,7 +19,10 @@
|
||||
|
||||
parent "base"
|
||||
name "ja-jp-qwerty"
|
||||
freerdp "KBD_JAPANESE"
|
||||
keyboard_layout "KBD_JAPANESE"
|
||||
keyboard_type "KBD_TYPE_JAPANESE"
|
||||
keyboard_subtype "2"
|
||||
keyboard_function_key "12"
|
||||
|
||||
map -shift 0x02..0x0D 0x7D ~ "1234567890-^\"
|
||||
map -shift 0x10..0x1B ~ "qwertyuiop@["
|
||||
|
||||
@ -1783,7 +1783,16 @@ void guac_rdp_push_settings(guac_client* client,
|
||||
rdp_settings->DesktopWidth = guac_settings->width;
|
||||
rdp_settings->DesktopHeight = guac_settings->height;
|
||||
rdp_settings->AlternateShell = guac_strdup(guac_settings->initial_program);
|
||||
rdp_settings->KeyboardLayout = guac_settings->server_layout->freerdp_keyboard_layout;
|
||||
rdp_settings->KeyboardLayout = guac_settings->server_layout->keyboard_layout;
|
||||
if (guac_settings->server_layout->keyboard_type != 0) {
|
||||
rdp_settings->KeyboardType = guac_settings->server_layout->keyboard_type;
|
||||
}
|
||||
if (guac_settings->server_layout->keyboard_subtype != 0) {
|
||||
rdp_settings->KeyboardSubType = guac_settings->server_layout->keyboard_subtype;
|
||||
}
|
||||
if (guac_settings->server_layout->keyboard_function_key != 0) {
|
||||
rdp_settings->KeyboardFunctionKey = guac_settings->server_layout->keyboard_function_key;
|
||||
}
|
||||
|
||||
/* Performance flags */
|
||||
/* Explicitly set flag value */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user