summaryrefslogtreecommitdiffstats
path: root/xrdp
diff options
context:
space:
mode:
Diffstat (limited to 'xrdp')
-rw-r--r--xrdp/lang.c17
-rw-r--r--xrdp/xrdp_keyboard.ini3
-rw-r--r--xrdp/xrdp_types.h3
3 files changed, 22 insertions, 1 deletions
diff --git a/xrdp/lang.c b/xrdp/lang.c
index 5ffff0eb..a2942599 100644
--- a/xrdp/lang.c
+++ b/xrdp/lang.c
@@ -90,14 +90,26 @@ get_key_info_from_scan_code(int device_flags, int scan_code, int *keys,
rv = &(keymap->keys_noshift[index]);
}
}
+ else if (shift && caps_lock && altgr)
+ {
+ rv = &(keymap->keys_shiftcapslockaltgr[index]);
+ }
else if (shift && caps_lock)
{
rv = &(keymap->keys_shiftcapslock[index]);
}
- else if (shift)
+ else if (shift && altgr)
+ {
+ rv = &(keymap->keys_shiftaltgr[index]);
+ }
+ else if (shift)
{
rv = &(keymap->keys_shift[index]);
}
+ else if (caps_lock && altgr)
+ {
+ rv = &(keymap->keys_capslockaltgr[index]);
+ }
else if (caps_lock)
{
rv = &(keymap->keys_capslock[index]);
@@ -242,8 +254,11 @@ get_keymaps(int keylayout, struct xrdp_keymap *keymap)
km_read_section(fd, "noshift", keymap->keys_noshift);
km_read_section(fd, "shift", keymap->keys_shift);
km_read_section(fd, "altgr", keymap->keys_altgr);
+ km_read_section(fd, "shiftaltgr", keymap->keys_shiftaltgr);
km_read_section(fd, "capslock", keymap->keys_capslock);
+ km_read_section(fd, "capslockaltgr", keymap->keys_capslockaltgr);
km_read_section(fd, "shiftcapslock", keymap->keys_shiftcapslock);
+ km_read_section(fd, "shiftcapslockaltgr", keymap->keys_shiftcapslockaltgr);
if (g_memcmp(lkeymap, keymap, sizeof(struct xrdp_keymap)) != 0)
{
diff --git a/xrdp/xrdp_keyboard.ini b/xrdp/xrdp_keyboard.ini
index bd4e4e68..433d71cf 100644
--- a/xrdp/xrdp_keyboard.ini
+++ b/xrdp/xrdp_keyboard.ini
@@ -66,6 +66,7 @@ rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_pt=0x00000816
rdp_layout_br=0x00000416
+rdp_layout_pl=0x00000415
# <rdp layout name> = <X11 keyboard layout value>
[default_layouts_map]
@@ -78,6 +79,7 @@ rdp_layout_ru=ru
rdp_layout_se=se
rdp_layout_pt=pt
rdp_layout_br=br(abnt2)
+rdp_layout_pl=pl
# if two sections have the same keyboard_type and keyboard_subtype, then
# the latter could override the former.
@@ -103,3 +105,4 @@ rdp_layout_ru=ru
rdp_layout_se=se
rdp_layout_pt=pt
rdp_layout_br=br(abnt2)
+rdp_layout_pl=pl
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 89a7ce93..29aaac84 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -318,8 +318,11 @@ struct xrdp_keymap
struct xrdp_key_info keys_noshift[256];
struct xrdp_key_info keys_shift[256];
struct xrdp_key_info keys_altgr[256];
+ struct xrdp_key_info keys_shiftaltgr[256];
struct xrdp_key_info keys_capslock[256];
+ struct xrdp_key_info keys_capslockaltgr[256];
struct xrdp_key_info keys_shiftcapslock[256];
+ struct xrdp_key_info keys_shiftcapslockaltgr[256];
};
/* the window manager */