diff --git a/.gitmodules b/.gitmodules index d40734d4..52a8a98a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "librfxcodec"] path = librfxcodec url = git://github.com/neutrinolabs/librfxcodec +[submodule "xorgxrdp"] + path = xorgxrdp + url = git://github.com/neutrinolabs/xorgxrdp diff --git a/common/os_calls.c b/common/os_calls.c index ef057497..bfea9031 100644 --- a/common/os_calls.c +++ b/common/os_calls.c @@ -126,8 +126,12 @@ g_mk_temp_dir(const char *app_name) { if (!g_create_dir("/tmp/.xrdp")) { - printf("g_mk_temp_dir: g_create_dir failed\n"); - return 1; + /* if failed, still check if it got created by someone else */ + if (!g_directory_exist("/tmp/.xrdp")) + { + printf("g_mk_temp_dir: g_create_dir failed\n"); + return 1; + } } g_chmod_hex("/tmp/.xrdp", 0x1777); @@ -3172,6 +3176,158 @@ g_time3(void) #endif } +/******************************************************************************/ +/******************************************************************************/ +struct bmp_magic +{ + char magic[2]; +}; + +struct bmp_hdr +{ + unsigned int size; /* file size in bytes */ + unsigned short reserved1; + unsigned short reserved2; + unsigned int offset; /* offset to image data, in bytes */ +}; + +struct dib_hdr +{ + unsigned int hdr_size; + int width; + int height; + unsigned short nplanes; + unsigned short bpp; + unsigned int compress_type; + unsigned int image_size; + int hres; + int vres; + unsigned int ncolors; + unsigned int nimpcolors; + }; + +/******************************************************************************/ +int APP_CC +g_save_to_bmp(const char* filename, char* data, int stride_bytes, + int width, int height, int depth, int bits_per_pixel) +{ + struct bmp_magic bm; + struct bmp_hdr bh; + struct dib_hdr dh; + int bytes; + int fd; + int index; + int i1; + int pixel; + int extra; + int file_stride_bytes; + char* line; + char* line_ptr; + + if ((depth == 24) && (bits_per_pixel == 32)) + { + } + else if ((depth == 32) && (bits_per_pixel == 32)) + { + } + else + { + g_writeln("g_save_to_bpp: unimp"); + return 1; + } + bm.magic[0] = 'B'; + bm.magic[1] = 'M'; + + /* scan lines are 32 bit aligned, bottom 2 bits must be zero */ + file_stride_bytes = width * ((depth + 7) / 8); + extra = file_stride_bytes; + extra = extra & 3; + extra = (4 - extra) & 3; + file_stride_bytes += extra; + + bh.size = sizeof(bm) + sizeof(bh) + sizeof(dh) + height * file_stride_bytes; + bh.reserved1 = 0; + bh.reserved2 = 0; + bh.offset = sizeof(bm) + sizeof(bh) + sizeof(dh); + + dh.hdr_size = sizeof(dh); + dh.width = width; + dh.height = height; + dh.nplanes = 1; + dh.bpp = depth; + dh.compress_type = 0; + dh.image_size = height * file_stride_bytes; + dh.hres = 0xb13; + dh.vres = 0xb13; + dh.ncolors = 0; + dh.nimpcolors = 0; + + fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + if (fd == -1) + { + g_writeln("g_save_to_bpp: open error"); + return 1; + } + bytes = write(fd, &bm, sizeof(bm)); + if (bytes != sizeof(bm)) + { + g_writeln("g_save_to_bpp: write error"); + } + bytes = write(fd, &bh, sizeof(bh)); + if (bytes != sizeof(bh)) + { + g_writeln("g_save_to_bpp: write error"); + } + bytes = write(fd, &dh, sizeof(dh)); + if (bytes != sizeof(dh)) + { + g_writeln("g_save_to_bpp: write error"); + } + data += stride_bytes * height; + data -= stride_bytes; + if ((depth == 24) && (bits_per_pixel == 32)) + { + line = malloc(file_stride_bytes); + memset(line, 0, file_stride_bytes); + for (index = 0; index < height; index++) + { + line_ptr = line; + for (i1 = 0; i1 < width; i1++) + { + pixel = ((int*)data)[i1]; + *(line_ptr++) = (pixel >> 0) & 0xff; + *(line_ptr++) = (pixel >> 8) & 0xff; + *(line_ptr++) = (pixel >> 16) & 0xff; + } + bytes = write(fd, line, file_stride_bytes); + if (bytes != file_stride_bytes) + { + g_writeln("g_save_to_bpp: write error"); + } + data -= stride_bytes; + } + free(line); + } + else if (depth == bits_per_pixel) + { + for (index = 0; index < height; index++) + { + bytes = write(fd, data, width * (bits_per_pixel / 8)); + if (bytes != width * (bits_per_pixel / 8)) + { + g_writeln("g_save_to_bpp: write error"); + } + data -= stride_bytes; + } + } + else + { + g_writeln("g_save_to_bpp: unimp"); + } + close(fd); + return 0; +} + /*****************************************************************************/ /* returns boolean */ int APP_CC diff --git a/common/os_calls.h b/common/os_calls.h index 1805a6a1..d954a075 100644 --- a/common/os_calls.h +++ b/common/os_calls.h @@ -161,6 +161,8 @@ int APP_CC g_check_user_in_group(const char* username, int gid, int* ok); int APP_CC g_time1(void); int APP_CC g_time2(void); int APP_CC g_time3(void); +int APP_CC g_save_to_bmp(const char* filename, char* data, int stride_bytes, + int width, int height, int depth, int bits_per_pixel); int APP_CC g_text2bool(const char *s); void * APP_CC g_shmat(int shmid); int APP_CC g_shmdt(const void *shmaddr); diff --git a/common/xrdp_constants.h b/common/xrdp_constants.h index 2ee034c3..25d9495f 100644 --- a/common/xrdp_constants.h +++ b/common/xrdp_constants.h @@ -457,6 +457,7 @@ Extended order support flags. */ #define XR_ORDERFLAGS_EX_CACHE_BITMAP_REV3_SUPPORT 0x0002 #define XR_ORDERFLAGS_EX_ALTSEC_FRAME_MARKER_SUPPORT 0x0004 +#define XR_ORDERFLAGS_EX_OFFSCREEN_COMPOSITE_SUPPORT 0x0100 /* drawable types */ #define WND_TYPE_BITMAP 0 @@ -548,10 +549,14 @@ #define XR_CODEC_GUID_REMOTEFX \ "\x12\x2F\x77\x76\x72\xBD\x63\x44\xAF\xB3\xB7\x3C\x9C\x6F\x78\x86" -/* CODEC_GUID_JPEG 0x430C9EED1BAF4CE6869ACB8B37B66237*/ +/* CODEC_GUID_JPEG 0x1BAF4CE6 9EED 430C 869ACB8B37B66237 */ #define XR_CODEC_GUID_JPEG \ "\xE6\x4C\xAF\x1B\xED\x9E\x0C\x43\x86\x9A\xCB\x8B\x37\xB6\x62\x37" +/* CODEC_GUID_PNG 0xOE0C858D 28E0 45DB ADAA0F83E57CC560 */ +#define XR_CODEC_GUID_PNG \ + "\x8D\x85\x0C\x0E\xE0\x28\xDB\x45\xAD\xAA\x0F\x83\xE5\x7C\xC5\x60" + #define RDP_CAPSET_SURFCMDS 0x1c #define RDP_CAPLEN_SURFCMDS 0x0c #define RDP_CAPSET_BMPCODECS 0x1d diff --git a/configure.ac b/configure.ac index 85145cfc..c5d22ec0 100644 --- a/configure.ac +++ b/configure.ac @@ -7,6 +7,7 @@ AM_INIT_AUTOMAKE([1.6 foreign]) AC_PROG_CC AC_C_CONST AC_PROG_LIBTOOL +PKG_PROG_PKG_CONFIG AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) @@ -15,46 +16,55 @@ if test "x$with_systemdsystemunitdir" != xno; then fi AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) +AC_ARG_ENABLE(pam, AS_HELP_STRING([--disable-pam], + [Build PAM support (default: yes)]), + [], [enable_pam=yes]) AC_ARG_ENABLE(nopam, AS_HELP_STRING([--enable-nopam], - [Build no PAM support (default: no)]), - [nopam=true], [nopam=false]) -AM_CONDITIONAL(SESMAN_NOPAM, [test x$nopam = xtrue]) + [Build no PAM support (default: no, deprecated)]), + [ + if test "x$enable_nopam" = "xyes" + then + enable_pam=no + AC_MSG_WARN([--enable-nopam option is deprecated. Please use --disable-pam instead.]) + fi + ]) +AM_CONDITIONAL(SESMAN_NOPAM, [test x$enable_pam != xyes]) AC_ARG_ENABLE(kerberos, AS_HELP_STRING([--enable-kerberos], [Build kerberos support (default: no)]), - [kerberos=true], [kerberos=false]) -AM_CONDITIONAL(SESMAN_KERBEROS, [test x$kerberos = xtrue]) + [], [enable_kerberos=no]) +AM_CONDITIONAL(SESMAN_KERBEROS, [test x$enable_kerberos = xyes]) AC_ARG_ENABLE(pamuserpass, AS_HELP_STRING([--enable-pamuserpass], [Build pam userpass support (default: no)]), - [pamuserpass=true], [pamuserpass=false]) -AM_CONDITIONAL(SESMAN_PAMUSERPASS, [test x$pamuserpass = xtrue]) + [], [enable_pamuserpass=no]) +AM_CONDITIONAL(SESMAN_PAMUSERPASS, [test x$enable_pamuserpass = xyes]) AC_ARG_ENABLE(xrdpdebug, AS_HELP_STRING([--enable-xrdpdebug], [Build debug (default: no)]), - [xrdpdebug=true], [xrdpdebug=false]) -AM_CONDITIONAL(XRDP_DEBUG, [test x$xrdpdebug = xtrue]) + [], [enable_xrdpdebug=no]) +AM_CONDITIONAL(XRDP_DEBUG, [test x$enable_xrdpdebug = xyes]) AC_ARG_ENABLE(neutrinordp, AS_HELP_STRING([--enable-neutrinordp], [Build neutrinordp module (default: no)]), - [neutrinordp=true], [neutrinordp=false]) -AM_CONDITIONAL(XRDP_NEUTRINORDP, [test x$neutrinordp = xtrue]) + [], [enable_neutrinordp=no]) +AM_CONDITIONAL(XRDP_NEUTRINORDP, [test x$enable_neutrinordp = xyes]) AC_ARG_ENABLE(jpeg, AS_HELP_STRING([--enable-jpeg], [Build jpeg module (default: no)]), - [jpeg=true], [jpeg=false]) -AM_CONDITIONAL(XRDP_JPEG, [test x$jpeg = xtrue]) + [], [enable_jpeg=no]) +AM_CONDITIONAL(XRDP_JPEG, [test x$enable_jpeg = xyes]) AC_ARG_ENABLE(tjpeg, AS_HELP_STRING([--enable-tjpeg], [Build turbo jpeg module (default: no)]), - [tjpeg=true], [tjpeg=false]) -AM_CONDITIONAL(XRDP_TJPEG, [test x$tjpeg = xtrue]) + [], [enable_tjpeg=no]) +AM_CONDITIONAL(XRDP_TJPEG, [test x$enable_tjpeg = xyes]) AC_ARG_ENABLE(fuse, AS_HELP_STRING([--enable-fuse], [Build fuse(clipboard file / drive redir) (default: no)]), - [fuse=true], [fuse=false]) -AM_CONDITIONAL(XRDP_FUSE, [test x$fuse = xtrue]) + [], [enable_fuse=no]) +AM_CONDITIONAL(XRDP_FUSE, [test x$enable_fuse = xyes]) AC_ARG_ENABLE(xrdpvr, AS_HELP_STRING([--enable-xrdpvr], [Build xrdpvr module (default: no)]), - [xrdpvr=true], [xrdpvr=false]) -AM_CONDITIONAL(XRDP_XRDPVR, [test x$xrdpvr = xtrue]) + [], [enable_xrdpvr=no]) +AM_CONDITIONAL(XRDP_XRDPVR, [test x$enable_xrdpvr = xyes]) AC_ARG_ENABLE(rfxcodec, AS_HELP_STRING([--enable-rfxcodec], [Build using librfxcodec (default: no)]), - [rfxcodec=true], [rfxcodec=false]) -AM_CONDITIONAL(XRDP_RFXCODEC, [test x$rfxcodec = xtrue]) + [], [enable_rfxcodec=no]) +AM_CONDITIONAL(XRDP_RFXCODEC, [test x$enable_rfxcodec = xyes]) AM_CONDITIONAL(GOT_PREFIX, test "x${prefix}" != "xNONE"]) @@ -64,9 +74,9 @@ AC_CHECK_HEADER([openssl/rc4.h], [], [#include ]) # checking if pam should be autodetected. -if test -z "$enable_nopam" +if test "x$enable_pam" = "xyes" then - if test -z "$enable_kerberos" + if test "x$enable_kerberos" != "xyes" then AC_CHECK_HEADER([security/pam_appl.h], [], [AC_MSG_ERROR([please install libpam0g-dev or pam-devel])]) @@ -78,7 +88,7 @@ AC_CHECK_MEMBER([struct in6_addr.s6_addr], [AC_DEFINE(NO_ARPA_INET_H_IP6, 1, [for IPv6])], [#include ]) -if test "x$enable_nopam" = "xyes" +if test "x$enable_pam" != "xyes" then AC_DEFINE([USE_NOPAM],1,[Disable PAM]) fi @@ -86,19 +96,19 @@ fi AS_IF( [test "x$enable_neutrinordp" = "xyes"] , [PKG_CHECK_MODULES(FREERDP, freerdp >= 1.0.0)] ) # checking for libjpeg -if ! test -z "$enable_jpeg" +if test "x$enable_jpeg" = "xyes" then AC_CHECK_HEADER([jpeglib.h], [], [AC_MSG_ERROR([please install libjpeg-dev or libjpeg-devel])]) fi -if ! test -z "$enable_xrdpdebug" +if test "x$enable_xrdpdebug" = "xyes" then CFLAGS="-g -O0" fi # checking for fuse -if ! test -z "$enable_fuse" +if test "x$enable_fuse" = "xyes" then AC_CHECK_HEADER([fuse.h], [], [AC_MSG_ERROR([please install libfuse-dev or fuse-devel])], @@ -106,7 +116,7 @@ then fi # checking for TurboJPEG -if ! test -z "$enable_tjpeg" +if test "x$enable_tjpeg" = "xyes" then if test ! -z "$TURBOJPEG_PATH" then diff --git a/genkeymap/Makefile.am b/genkeymap/Makefile.am index e358c61b..aed72512 100644 --- a/genkeymap/Makefile.am +++ b/genkeymap/Makefile.am @@ -2,7 +2,7 @@ bin_PROGRAMS = \ xrdp-genkeymap -xrdp_genkeymap_SOURCES = genkeymap.c +xrdp_genkeymap_SOURCES = genkeymap.c evdev-map.c xrdp_genkeymap_LDADD = \ -L/usr/X11R6/lib \ diff --git a/genkeymap/dump-keymaps.sh b/genkeymap/dump-keymaps.sh index e0f3b3b2..a78caa95 100755 --- a/genkeymap/dump-keymaps.sh +++ b/genkeymap/dump-keymaps.sh @@ -19,6 +19,10 @@ setxkbmap -model pc104 -layout de setxkbmap -model pc104 -layout it ./xrdp-genkeymap ../instfiles/km-0410.ini +# Polish 'pl' 0x0415 +setxkbmap -model pc104 -layout pl +./xrdp-genkeymap ../instfiles/km-0415.ini + # Russia 'ru' 0x0419 setxkbmap -model pc104 -layout ru ./xrdp-genkeymap ../instfiles/km-0419.ini diff --git a/genkeymap/evdev-map.c b/genkeymap/evdev-map.c new file mode 100644 index 00000000..4610eb69 --- /dev/null +++ b/genkeymap/evdev-map.c @@ -0,0 +1,156 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ +/* + * evdev-map.c + * Copyright (C) Michał Górny 2014 + * + * You may redistribute it and/or modify it under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * main.cc is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with main.cc. If not, write to: + * The Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301, USA + * + * xfree86(base)->evdev keycode mapping + */ + +int xfree86_to_evdev[137-8+1] = { + /* MDSW */ 203, + /* ESC */ 9, + /* AE01 */ 10, + /* AE02 */ 11, + /* AE03 */ 12, + /* AE04 */ 13, + /* AE05 */ 14, + /* AE06 */ 15, + /* AE07 */ 16, + /* AE08 */ 17, + /* AE09 */ 18, + /* AE10 */ 19, + /* AE11 */ 20, + /* AE12 */ 21, + /* BKSP */ 22, + /* TAB */ 23, + /* AD01 */ 24, + /* AD02 */ 25, + /* AD03 */ 26, + /* AD04 */ 27, + /* AD05 */ 28, + /* AD06 */ 29, + /* AD07 */ 30, + /* AD08 */ 31, + /* AD09 */ 32, + /* AD10 */ 33, + /* AD11 */ 34, + /* AD12 */ 35, + /* RTRN */ 36, + /* LCTL */ 37, + /* AC01 */ 38, + /* AC02 */ 39, + /* AC03 */ 40, + /* AC04 */ 41, + /* AC05 */ 42, + /* AC06 */ 43, + /* AC07 */ 44, + /* AC08 */ 45, + /* AC09 */ 46, + /* AC10 */ 47, + /* AC11 */ 48, + /* TLDE */ 49, + /* LFSH */ 50, + /* BKSL */ 51, + /* AB01 */ 52, + /* AB02 */ 53, + /* AB03 */ 54, + /* AB04 */ 55, + /* AB05 */ 56, + /* AB06 */ 57, + /* AB07 */ 58, + /* AB08 */ 59, + /* AB09 */ 60, + /* AB10 */ 61, + /* RTSH */ 62, + /* KPMU */ 63, + /* LALT */ 64, + /* SPCE */ 65, + /* CAPS */ 66, + /* FK01 */ 67, + /* FK02 */ 68, + /* FK03 */ 69, + /* FK04 */ 70, + /* FK05 */ 71, + /* FK06 */ 72, + /* FK07 */ 73, + /* FK08 */ 74, + /* FK09 */ 75, + /* FK10 */ 76, + /* NMLK */ 77, + /* SCLK */ 78, + /* KP7 */ 79, + /* KP8 */ 80, + /* KP9 */ 81, + /* KPSU */ 82, + /* KP4 */ 83, + /* KP5 */ 84, + /* KP6 */ 85, + /* KPAD */ 86, + /* KP1 */ 87, + /* KP2 */ 88, + /* KP3 */ 89, + /* KP0 */ 90, + /* KPDL */ 91, + /* SYRQ */ 107, + /* II5D */ 0, + /* LSGT */ 94, + /* FK11 */ 95, + /* FK12 */ 96, + /* HOME */ 110, + /* UP */ 111, + /* PGUP */ 112, + /* LEFT */ 113, + /* II65 */ 0, + /* RGHT */ 114, + /* END */ 115, + /* DOWN */ 116, + /* PGDN */ 117, + /* INS */ 118, + /* DELE */ 119, + /* KPEN */ 104, + /* RCTL */ 105, + /* PAUS */ 127, + /* PRSC */ 107, + /* KPDV */ 106, + /* RALT */ 108, + /* BRK */ 419, + /* LWIN */ 133, + /* RWIN */ 134, + /* MENU */ 0, + /* FK13 */ 191, + /* FK14 */ 192, + /* FK15 */ 193, + /* FK16 */ 194, + /* FK17 */ 195, + /* KPDC */ 0, + /* LVL3 */ 92, + /* ALT */ 204, + /* KPEQ */ 125, + /* SUPR */ 206, + /* HYPR */ 207, + /* XFER */ 0, + /* I02 */ 0, + /* NFER */ 0, + /* I04 */ 0, + /* AE13 */ 132, + /* I06 */ 0, + /* I07 */ 0, + 0, + 0 +}; diff --git a/genkeymap/genkeymap.c b/genkeymap/genkeymap.c index 91ec9e89..088af748 100644 --- a/genkeymap/genkeymap.c +++ b/genkeymap/genkeymap.c @@ -37,16 +37,19 @@ #include #include #include +#include #include +extern int xfree86_to_evdev[137-8]; + int main(int argc, char **argv) { const char *programname; char text[256]; char *displayname = NULL; char *outfname; - char *sections[6] = {"noshift", "shift", "altgr", "shiftaltgr", "capslock", "shiftcapslock"}; - int states[6] = {0, 1, 0x80, 0x81, 2, 3}; + char *sections[8] = {"noshift", "shift", "altgr", "shiftaltgr", "capslock", "capslockaltgr", "shiftcapslock", "shiftcapslockaltgr"}; + int states[8] = {0, 1, 0x80, 0x81, 2, 0x82, 3, 0x83}; int i; int idx; int char_count; @@ -57,6 +60,9 @@ int main(int argc, char **argv) FILE *outf; XKeyPressedEvent e; wchar_t wtext[256]; + XkbDescPtr kbdesc; + char *symatom; + int is_evdev; setlocale(LC_CTYPE, ""); programname = argv[0]; @@ -78,6 +84,30 @@ int main(int argc, char **argv) return 1; } + /* check whether evdev is used */ + kbdesc = XkbAllocKeyboard(); + if (!kbdesc) + { + fprintf(stderr, "%s: unable to allocate keyboard desc\n", + programname); + XCloseDisplay(dpy); + return 1; + } + + if (XkbGetNames(dpy, XkbKeycodesNameMask, kbdesc) != Success) + { + fprintf(stderr, "%s: unable to obtain keycode name for keyboard\n", + programname); + XkbFreeKeyboard(kbdesc, 0, True); + XCloseDisplay(dpy); + return 1; + } + + symatom = XGetAtomName(dpy, kbdesc->names->keycodes); + is_evdev = !strncmp(symatom, "evdev", 5); + XFree(symatom); + XkbFreeKeyboard(kbdesc, 0, True); + outf = fopen(outfname, "w"); if (outf == NULL) @@ -94,14 +124,17 @@ int main(int argc, char **argv) e.display = dpy; e.same_screen = True; - for (idx = 0; idx < 6; idx++) /* Sections and states */ + for (idx = 0; idx < 8; idx++) /* Sections and states */ { fprintf(outf, "[%s]\n", sections[idx]); e.state = states[idx]; for (i = 8; i <= 137; i++) /* Keycodes */ { - e.keycode = i; + if (is_evdev) + e.keycode = xfree86_to_evdev[i-8]; + else + e.keycode = i; nbytes = XLookupString(&e, text, 255, &ks, NULL); text[nbytes] = 0; char_count = mbstowcs(wtext, text, 255); @@ -115,7 +148,7 @@ int main(int argc, char **argv) fprintf(outf, "Key%d=%d:%d\n", i, (int) ks, unicode); } - if (idx != 4) + if (idx != 7) { fprintf(outf, "\n"); } diff --git a/genkeymap/readme.txt b/genkeymap/readme.txt index d9df684d..b2b3b890 100644 --- a/genkeymap/readme.txt +++ b/genkeymap/readme.txt @@ -7,9 +7,10 @@ km-xxxx.ini where the xxxx is replaced by the hex number of the layout of interest. -The files have 6 sections; +The files have 8 sections; -[noshift], [shift], [altgr], [shiftaltgr], [capslock], [shiftcapslock] +[noshift], [shift], [altgr], [shiftaltgr], [capslock], [capslockaltgr], +[shiftcapslock], [shiftcapslockaltgr] In each section there are multiple lines for each key. diff --git a/instfiles/Makefile.am b/instfiles/Makefile.am index b1c0ebd0..8b303f63 100644 --- a/instfiles/Makefile.am +++ b/instfiles/Makefile.am @@ -22,6 +22,7 @@ startscript_DATA = \ km-0409.ini \ km-040c.ini \ km-0410.ini \ + km-0415.ini \ km-0419.ini \ km-041d.ini \ km-0816.ini diff --git a/instfiles/km-0407.ini b/instfiles/km-0407.ini index 08fdd252..6021211d 100644 --- a/instfiles/km-0407.ini +++ b/instfiles/km-0407.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -105,15 +105,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -131,7 +131,7 @@ Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -187,7 +187,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -237,15 +237,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -263,7 +263,7 @@ Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=185:185 Key11=178:178 @@ -290,33 +290,33 @@ Key31=2301:8594 Key32=248:248 Key33=254:254 Key34=65111:168 -Key35=65107:126 +Key35=126:126 Key36=65293:13 Key37=65507:0 Key38=230:230 -Key39=223:223 +Key39=16777599:383 Key40=240:240 Key41=496:273 Key42=959:331 Key43=689:295 -Key44=106:106 +Key44=65120:0 Key45=930:312 Key46=435:322 Key47=65113:733 Key48=65106:94 -Key49=172:172 +Key49=16785458:8242 Key50=65505:0 -Key51=65104:96 -Key52=171:171 -Key53=187:187 +Key51=2769:8217 +Key52=187:187 +Key53=171:171 Key54=162:162 -Key55=2770:8220 -Key56=2771:8221 -Key57=110:110 +Key55=2814:8222 +Key56=2770:8220 +Key57=2771:8221 Key58=181:181 -Key59=2211:0 -Key60=183:183 -Key61=65120:0 +Key59=183:183 +Key60=16785446:8230 +Key61=2730:8211 Key62=65506:0 Key63=65450:42 Key64=65513:0 @@ -347,8 +347,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -366,18 +366,18 @@ Key107=65535:127 Key108=65421:13 Key109=65508:0 Key110=65299:0 -Key111=0:0 +Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -394,8 +394,140 @@ Key135=0:0 Key136=0:0 Key137=0:0 +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=161:161 +Key11=2755:8539 +Key12=163:163 +Key13=164:164 +Key14=2756:8540 +Key15=2757:8541 +Key16=2758:8542 +Key17=2761:8482 +Key18=177:177 +Key19=176:176 +Key20=191:191 +Key21=65116:731 +Key22=65288:8 +Key23=65056:0 +Key24=2009:937 +Key25=419:321 +Key26=8364:8364 +Key27=174:174 +Key28=940:358 +Key29=165:165 +Key30=2300:8593 +Key31=697:305 +Key32=216:216 +Key33=222:222 +Key34=65112:176 +Key35=175:175 +Key36=65293:13 +Key37=65507:0 +Key38=198:198 +Key39=16785054:7838 +Key40=208:208 +Key41=170:170 +Key42=957:330 +Key43=673:294 +Key44=65110:729 +Key45=38:38 +Key46=419:321 +Key47=65120:0 +Key48=65114:711 +Key49=16785459:8243 +Key50=65505:0 +Key51=65109:728 +Key52=16785466:8250 +Key53=16785465:8249 +Key54=169:169 +Key55=2813:8218 +Key56=2768:8216 +Key57=2769:8217 +Key58=186:186 +Key59=215:215 +Key60=247:247 +Key61=2729:8212 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=166:166 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -407,7 +539,7 @@ Key16=55:55 Key17=56:56 Key18=57:57 Key19=48:48 -Key20=223:223 +Key20=16785054:7838 Key21=65105:180 Key22=65288:8 Key23=65289:9 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -501,15 +633,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -525,9 +657,8 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -583,7 +714,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -633,15 +764,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -657,3 +788,4 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 + diff --git a/instfiles/km-0409.ini b/instfiles/km-0409.ini index 95402483..a565a9b0 100644 --- a/instfiles/km-0409.ini +++ b/instfiles/km-0409.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -105,15 +105,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -131,7 +131,7 @@ Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=64:64 @@ -187,7 +187,7 @@ Key60=62:62 Key61=63:63 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -236,16 +236,16 @@ Key109=65508:0 Key110=65299:0 Key111=65377:0 Key112=65455:47 -Key113=65512:0 -Key114=0:0 +Key113=65032:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -263,7 +263,7 @@ Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -347,8 +347,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -366,18 +366,18 @@ Key107=65535:127 Key108=65421:13 Key109=65508:0 Key110=65299:0 -Key111=0:0 +Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -394,8 +394,140 @@ Key135=0:0 Key136=0:0 Key137=0:0 +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=33:33 +Key11=64:64 +Key12=35:35 +Key13=36:36 +Key14=37:37 +Key15=94:94 +Key16=38:38 +Key17=42:42 +Key18=40:40 +Key19=41:41 +Key20=95:95 +Key21=43:43 +Key22=65288:8 +Key23=65056:0 +Key24=81:81 +Key25=87:87 +Key26=69:69 +Key27=82:82 +Key28=84:84 +Key29=89:89 +Key30=85:85 +Key31=73:73 +Key32=79:79 +Key33=80:80 +Key34=123:123 +Key35=125:125 +Key36=65293:13 +Key37=65507:0 +Key38=65:65 +Key39=83:83 +Key40=68:68 +Key41=70:70 +Key42=71:71 +Key43=72:72 +Key44=74:74 +Key45=75:75 +Key46=76:76 +Key47=58:58 +Key48=34:34 +Key49=126:126 +Key50=65505:0 +Key51=124:124 +Key52=90:90 +Key53=88:88 +Key54=67:67 +Key55=86:86 +Key56=66:66 +Key57=78:78 +Key58=77:77 +Key59=60:60 +Key60=62:62 +Key61=63:63 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65454:46 +Key92=65377:0 +Key93=0:0 +Key94=166:166 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65032:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -501,15 +633,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -525,9 +657,8 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=64:64 @@ -583,7 +714,7 @@ Key60=62:62 Key61=63:63 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -632,16 +763,16 @@ Key109=65508:0 Key110=65299:0 Key111=65377:0 Key112=65455:47 -Key113=65512:0 -Key114=0:0 +Key113=65032:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -657,3 +788,4 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 + diff --git a/instfiles/km-0410.ini b/instfiles/km-0410.ini index 259fc71e..a9723117 100644 --- a/instfiles/km-0410.ini +++ b/instfiles/km-0410.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -105,15 +105,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -131,7 +131,7 @@ Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -187,7 +187,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -237,15 +237,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -263,7 +263,7 @@ Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=185:185 Key11=178:178 @@ -299,7 +299,7 @@ Key40=240:240 Key41=496:273 Key42=959:331 Key43=689:295 -Key44=106:106 +Key44=65121:0 Key45=930:312 Key46=435:322 Key47=64:64 @@ -347,8 +347,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=171:171 Key95=65480:0 Key96=65481:0 @@ -366,18 +366,18 @@ Key107=65535:127 Key108=65421:13 Key109=65508:0 Key110=65299:0 -Key111=0:0 +Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -394,8 +394,140 @@ Key135=0:0 Key136=0:0 Key137=0:0 +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=161:161 +Key11=65113:733 +Key12=65107:126 +Key13=2755:8539 +Key14=2756:8540 +Key15=2757:8541 +Key16=2758:8542 +Key17=2761:8482 +Key18=177:177 +Key19=65116:731 +Key20=191:191 +Key21=65106:94 +Key22=65288:8 +Key23=65056:0 +Key24=2009:937 +Key25=419:321 +Key26=162:162 +Key27=174:174 +Key28=940:358 +Key29=165:165 +Key30=2300:8593 +Key31=697:305 +Key32=216:216 +Key33=222:222 +Key34=123:123 +Key35=125:125 +Key36=65293:13 +Key37=65507:0 +Key38=198:198 +Key39=167:167 +Key40=208:208 +Key41=170:170 +Key42=957:330 +Key43=673:294 +Key44=65122:0 +Key45=38:38 +Key46=419:321 +Key47=65115:184 +Key48=65112:176 +Key49=166:166 +Key50=65505:0 +Key51=65109:728 +Key52=60:60 +Key53=62:62 +Key54=169:169 +Key55=2768:8216 +Key56=2769:8217 +Key57=209:209 +Key58=186:186 +Key59=215:215 +Key60=65111:168 +Key61=247:247 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65454:46 +Key92=65377:0 +Key93=0:0 +Key94=187:187 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -501,15 +633,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -525,9 +657,8 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -583,7 +714,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -633,15 +764,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -657,3 +788,4 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 + diff --git a/instfiles/km-0415.ini b/instfiles/km-0415.ini new file mode 100644 index 00000000..884e534f --- /dev/null +++ b/instfiles/km-0415.ini @@ -0,0 +1,791 @@ +[noshift] +Key8=65406:0 +Key9=65307:27 +Key10=49:49 +Key11=50:50 +Key12=51:51 +Key13=52:52 +Key14=53:53 +Key15=54:54 +Key16=55:55 +Key17=56:56 +Key18=57:57 +Key19=48:48 +Key20=45:45 +Key21=61:61 +Key22=65288:8 +Key23=65289:9 +Key24=113:113 +Key25=119:119 +Key26=101:101 +Key27=114:114 +Key28=116:116 +Key29=121:121 +Key30=117:117 +Key31=105:105 +Key32=111:111 +Key33=112:112 +Key34=91:91 +Key35=93:93 +Key36=65293:13 +Key37=65507:0 +Key38=97:97 +Key39=115:115 +Key40=100:100 +Key41=102:102 +Key42=103:103 +Key43=104:104 +Key44=106:106 +Key45=107:107 +Key46=108:108 +Key47=59:59 +Key48=39:39 +Key49=96:96 +Key50=65505:0 +Key51=92:92 +Key52=122:122 +Key53=120:120 +Key54=99:99 +Key55=118:118 +Key56=98:98 +Key57=110:110 +Key58=109:109 +Key59=44:44 +Key60=46:46 +Key61=47:47 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=65377:0 +Key93=0:0 +Key94=60:60 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + +[shift] +Key8=65406:0 +Key9=65307:27 +Key10=33:33 +Key11=64:64 +Key12=35:35 +Key13=36:36 +Key14=37:37 +Key15=94:94 +Key16=38:38 +Key17=42:42 +Key18=40:40 +Key19=41:41 +Key20=95:95 +Key21=43:43 +Key22=65288:8 +Key23=65056:0 +Key24=81:81 +Key25=87:87 +Key26=69:69 +Key27=82:82 +Key28=84:84 +Key29=89:89 +Key30=85:85 +Key31=73:73 +Key32=79:79 +Key33=80:80 +Key34=123:123 +Key35=125:125 +Key36=65293:13 +Key37=65507:0 +Key38=65:65 +Key39=83:83 +Key40=68:68 +Key41=70:70 +Key42=71:71 +Key43=72:72 +Key44=74:74 +Key45=75:75 +Key46=76:76 +Key47=58:58 +Key48=34:34 +Key49=126:126 +Key50=65505:0 +Key51=124:124 +Key52=90:90 +Key53=88:88 +Key54=67:67 +Key55=86:86 +Key56=66:66 +Key57=78:78 +Key58=77:77 +Key59=60:60 +Key60=62:62 +Key61=63:63 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=62:62 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + +[altgr] +Key8=65406:0 +Key9=65307:27 +Key10=2237:8800 +Key11=178:178 +Key12=179:179 +Key13=162:162 +Key14=8364:8364 +Key15=189:189 +Key16=167:167 +Key17=183:183 +Key18=171:171 +Key19=187:187 +Key20=2730:8211 +Key21=65115:184 +Key22=65288:8 +Key23=65289:9 +Key24=2032:960 +Key25=5053:339 +Key26=490:281 +Key27=169:169 +Key28=223:223 +Key29=2299:8592 +Key30=2302:8595 +Key31=2301:8594 +Key32=243:243 +Key33=254:254 +Key34=65111:168 +Key35=65107:126 +Key36=65293:13 +Key37=65507:0 +Key38=433:261 +Key39=438:347 +Key40=240:240 +Key41=230:230 +Key42=959:331 +Key43=2769:8217 +Key44=16777817:601 +Key45=2734:8230 +Key46=435:322 +Key47=65105:180 +Key48=65106:94 +Key49=172:172 +Key50=65505:0 +Key51=65104:96 +Key52=447:380 +Key53=444:378 +Key54=486:263 +Key55=2814:8222 +Key56=2771:8221 +Key57=497:324 +Key58=181:181 +Key59=2236:8804 +Key60=2238:8805 +Key61=65120:0 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=160:160 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=65377:0 +Key93=0:0 +Key94=124:124 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=161:161 +Key11=191:191 +Key12=163:163 +Key13=188:188 +Key14=16785456:8240 +Key15=2270:8743 +Key16=16785992:8776 +Key17=190:190 +Key18=177:177 +Key19=176:176 +Key20=2729:8212 +Key21=65116:731 +Key22=65288:8 +Key23=65056:0 +Key24=2009:937 +Key25=5052:338 +Key26=458:280 +Key27=174:174 +Key28=2761:8482 +Key29=165:165 +Key30=2300:8593 +Key31=16785812:8596 +Key32=211:211 +Key33=222:222 +Key34=65112:176 +Key35=65108:175 +Key36=65293:13 +Key37=65507:0 +Key38=417:260 +Key39=422:346 +Key40=208:208 +Key41=198:198 +Key42=957:330 +Key43=16785442:8226 +Key44=16777615:399 +Key45=65123:0 +Key46=419:321 +Key47=65113:733 +Key48=65114:711 +Key49=2271:8744 +Key50=65505:0 +Key51=65109:728 +Key52=431:379 +Key53=428:377 +Key54=454:262 +Key55=2768:8216 +Key56=2770:8220 +Key57=465:323 +Key58=2242:8734 +Key59=215:215 +Key60=247:247 +Key61=65110:729 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=160:160 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=166:166 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + +[capslock] +Key8=65406:0 +Key9=65307:27 +Key10=49:49 +Key11=50:50 +Key12=51:51 +Key13=52:52 +Key14=53:53 +Key15=54:54 +Key16=55:55 +Key17=56:56 +Key18=57:57 +Key19=48:48 +Key20=45:45 +Key21=61:61 +Key22=65288:8 +Key23=65289:9 +Key24=81:81 +Key25=87:87 +Key26=69:69 +Key27=82:82 +Key28=84:84 +Key29=89:89 +Key30=85:85 +Key31=73:73 +Key32=79:79 +Key33=80:80 +Key34=91:91 +Key35=93:93 +Key36=65293:13 +Key37=65507:0 +Key38=65:65 +Key39=83:83 +Key40=68:68 +Key41=70:70 +Key42=71:71 +Key43=72:72 +Key44=74:74 +Key45=75:75 +Key46=76:76 +Key47=59:59 +Key48=39:39 +Key49=96:96 +Key50=65505:0 +Key51=92:92 +Key52=90:90 +Key53=88:88 +Key54=67:67 +Key55=86:86 +Key56=66:66 +Key57=78:78 +Key58=77:77 +Key59=44:44 +Key60=46:46 +Key61=47:47 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=65377:0 +Key93=0:0 +Key94=60:60 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 +[shiftcapslock] +Key8=65406:0 +Key9=65307:27 +Key10=33:33 +Key11=64:64 +Key12=35:35 +Key13=36:36 +Key14=37:37 +Key15=94:94 +Key16=38:38 +Key17=42:42 +Key18=40:40 +Key19=41:41 +Key20=95:95 +Key21=43:43 +Key22=65288:8 +Key23=65056:0 +Key24=113:113 +Key25=119:119 +Key26=101:101 +Key27=114:114 +Key28=116:116 +Key29=121:121 +Key30=117:117 +Key31=105:105 +Key32=111:111 +Key33=112:112 +Key34=123:123 +Key35=125:125 +Key36=65293:13 +Key37=65507:0 +Key38=97:97 +Key39=115:115 +Key40=100:100 +Key41=102:102 +Key42=103:103 +Key43=104:104 +Key44=106:106 +Key45=107:107 +Key46=108:108 +Key47=58:58 +Key48=34:34 +Key49=126:126 +Key50=65505:0 +Key51=124:124 +Key52=122:122 +Key53=120:120 +Key54=99:99 +Key55=118:118 +Key56=98:98 +Key57=110:110 +Key58=109:109 +Key59=60:60 +Key60=62:62 +Key61=63:63 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=62:62 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + diff --git a/instfiles/km-0419.ini b/instfiles/km-0419.ini index c53fa959..81395886 100644 --- a/instfiles/km-0419.ini +++ b/instfiles/km-0419.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -52,7 +52,7 @@ Key57=1748:1090 Key58=1752:1100 Key59=1730:1073 Key60=1728:1102 -Key61=47:47 +Key61=46:46 Key62=65506:0 Key63=65450:42 Key64=65513:0 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=47:47 Key95=65480:0 Key96=65481:0 @@ -105,15 +105,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -131,16 +131,16 @@ Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 -Key12=35:35 -Key13=42:42 -Key14=58:58 -Key15=44:44 -Key16=46:46 -Key17=59:59 +Key12=1712:8470 +Key13=59:59 +Key14=37:37 +Key15=58:58 +Key16=63:63 +Key17=42:42 Key18=40:40 Key19=41:41 Key20=95:95 @@ -174,7 +174,7 @@ Key47=1782:1046 Key48=1788:1069 Key49=1715:1025 Key50=65505:0 -Key51=124:124 +Key51=47:47 Key52=1777:1071 Key53=1790:1063 Key54=1779:1057 @@ -184,10 +184,10 @@ Key57=1780:1058 Key58=1784:1068 Key59=1762:1041 Key60=1760:1070 -Key61=63:63 +Key61=44:44 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -236,16 +236,16 @@ Key109=65508:0 Key110=65299:0 Key111=65377:0 Key112=65455:47 -Key113=65512:0 -Key114=0:0 +Key113=65032:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -263,7 +263,7 @@ Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -316,7 +316,7 @@ Key57=1748:1090 Key58=1752:1100 Key59=1730:1073 Key60=1728:1102 -Key61=47:47 +Key61=46:46 Key62=65506:0 Key63=65450:42 Key64=65513:0 @@ -347,8 +347,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -366,18 +366,18 @@ Key107=65535:127 Key108=65421:13 Key109=65508:0 Key110=65299:0 -Key111=0:0 +Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -394,8 +394,140 @@ Key135=0:0 Key136=0:0 Key137=0:0 +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=33:33 +Key11=34:34 +Key12=1712:8470 +Key13=59:59 +Key14=37:37 +Key15=58:58 +Key16=63:63 +Key17=42:42 +Key18=40:40 +Key19=41:41 +Key20=95:95 +Key21=43:43 +Key22=65288:8 +Key23=65056:0 +Key24=1770:1049 +Key25=1763:1062 +Key26=1781:1059 +Key27=1771:1050 +Key28=1765:1045 +Key29=1774:1053 +Key30=1767:1043 +Key31=1787:1064 +Key32=1789:1065 +Key33=1786:1047 +Key34=1768:1061 +Key35=1791:1066 +Key36=65293:13 +Key37=65507:0 +Key38=1766:1060 +Key39=1785:1067 +Key40=1783:1042 +Key41=1761:1040 +Key42=1776:1055 +Key43=1778:1056 +Key44=1775:1054 +Key45=1772:1051 +Key46=1764:1044 +Key47=1782:1046 +Key48=1788:1069 +Key49=1715:1025 +Key50=65505:0 +Key51=47:47 +Key52=1777:1071 +Key53=1790:1063 +Key54=1779:1057 +Key55=1773:1052 +Key56=1769:1048 +Key57=1780:1058 +Key58=1784:1068 +Key59=1762:1041 +Key60=1760:1070 +Key61=44:44 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=166:166 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65032:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -448,7 +580,7 @@ Key57=1780:1058 Key58=1784:1068 Key59=1762:1041 Key60=1760:1070 -Key61=47:47 +Key61=46:46 Key62=65506:0 Key63=65450:42 Key64=65513:0 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=47:47 Key95=65480:0 Key96=65481:0 @@ -501,15 +633,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65514:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -525,18 +657,17 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 -Key12=35:35 -Key13=42:42 -Key14=58:58 -Key15=44:44 -Key16=46:46 -Key17=59:59 +Key12=1712:8470 +Key13=59:59 +Key14=37:37 +Key15=58:58 +Key16=63:63 +Key17=42:42 Key18=40:40 Key19=41:41 Key20=95:95 @@ -570,7 +701,7 @@ Key47=1750:1078 Key48=1756:1101 Key49=1699:1105 Key50=65505:0 -Key51=124:124 +Key51=47:47 Key52=1745:1103 Key53=1758:1095 Key54=1747:1089 @@ -580,10 +711,10 @@ Key57=1748:1090 Key58=1752:1100 Key59=1730:1073 Key60=1728:1102 -Key61=63:63 +Key61=44:44 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -632,16 +763,16 @@ Key109=65508:0 Key110=65299:0 Key111=65377:0 Key112=65455:47 -Key113=65512:0 -Key114=0:0 +Key113=65032:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -657,3 +788,4 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 + diff --git a/instfiles/km-041d.ini b/instfiles/km-041d.ini index 2c40400f..3cf432b2 100644 --- a/instfiles/km-041d.ini +++ b/instfiles/km-041d.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -105,15 +105,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -131,7 +131,7 @@ Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -187,7 +187,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -237,15 +237,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -263,7 +263,7 @@ Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=161:161 Key11=64:64 @@ -299,7 +299,7 @@ Key40=240:240 Key41=496:273 Key42=959:331 Key43=689:295 -Key44=106:106 +Key44=65121:0 Key45=930:312 Key46=435:322 Key47=248:248 @@ -347,8 +347,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=124:124 Key95=65480:0 Key96=65481:0 @@ -366,18 +366,18 @@ Key107=65535:127 Key108=65421:13 Key109=65508:0 Key110=65299:0 -Key111=0:0 +Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -394,8 +394,140 @@ Key135=0:0 Key136=0:0 Key137=0:0 +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=185:185 +Key11=178:178 +Key12=179:179 +Key13=188:188 +Key14=162:162 +Key15=2757:8541 +Key16=247:247 +Key17=171:171 +Key18=187:187 +Key19=176:176 +Key20=191:191 +Key21=172:172 +Key22=65288:8 +Key23=65056:0 +Key24=2009:937 +Key25=419:321 +Key26=162:162 +Key27=174:174 +Key28=222:222 +Key29=165:165 +Key30=2300:8593 +Key31=697:305 +Key32=5052:338 +Key33=222:222 +Key34=65112:176 +Key35=65114:711 +Key36=65293:13 +Key37=65507:0 +Key38=186:186 +Key39=167:167 +Key40=208:208 +Key41=170:170 +Key42=957:330 +Key43=673:294 +Key44=65122:0 +Key45=38:38 +Key46=419:321 +Key47=216:216 +Key48=198:198 +Key49=190:190 +Key50=65505:0 +Key51=215:215 +Key52=60:60 +Key53=62:62 +Key54=169:169 +Key55=2768:8216 +Key56=2769:8217 +Key57=78:78 +Key58=186:186 +Key59=65116:731 +Key60=65110:729 +Key61=65110:729 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=160:160 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65452:44 +Key92=65377:0 +Key93=0:0 +Key94=166:166 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -501,15 +633,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 @@ -525,9 +657,8 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -583,7 +714,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65452:44 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -633,15 +764,15 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 -Key116=65516:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 @@ -657,3 +788,4 @@ Key134=0:0 Key135=0:0 Key136=0:0 Key137=0:0 + diff --git a/instfiles/km-0816.ini b/instfiles/km-0816.ini index bf3def89..3a5801b2 100644 --- a/instfiles/km-0816.ini +++ b/instfiles/km-0816.ini @@ -1,5 +1,5 @@ [noshift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -83,8 +83,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -105,33 +105,33 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 Key116=65312:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 Key126=65469:61 Key127=0:0 Key128=0:0 -Key129=269025170:0 +Key129=0:0 Key130=0:0 Key131=0:0 Key132=0:0 -Key133=269025166:0 +Key133=0:0 Key134=0:0 -Key135=65382:0 -Key136=65381:0 +Key135=0:0 +Key136=0:0 Key137=0:0 [shift] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -187,7 +187,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -200,7 +200,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -215,8 +215,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -237,33 +237,33 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 Key116=65312:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 Key126=65469:61 Key127=65515:0 Key128=65517:0 -Key129=269025170:0 +Key129=0:0 Key130=0:0 Key131=0:0 Key132=0:0 -Key133=269025166:0 +Key133=0:0 Key134=0:0 -Key135=65382:0 -Key136=65381:0 +Key135=0:0 +Key136=0:0 Key137=0:0 [altgr] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=185:185 Key11=64:64 @@ -299,7 +299,7 @@ Key40=240:240 Key41=496:273 Key42=959:331 Key43=689:295 -Key44=106:106 +Key44=65121:0 Key45=930:312 Key46=435:322 Key47=65105:180 @@ -347,9 +347,9 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 -Key94=124:124 +Key92=65377:0 +Key93=0:0 +Key94=92:92 Key95=65480:0 Key96=65481:0 Key97=65360:0 @@ -369,33 +369,165 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 Key116=65312:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 Key126=65469:61 Key127=0:0 Key128=0:0 -Key129=269025170:0 +Key129=0:0 Key130=0:0 Key131=0:0 Key132=0:0 -Key133=269025166:0 +Key133=0:0 Key134=0:0 -Key135=65382:0 -Key136=65381:0 +Key135=0:0 +Key136=0:0 +Key137=0:0 + +[shiftaltgr] +Key8=65406:0 +Key9=65307:27 +Key10=161:161 +Key11=2755:8539 +Key12=163:163 +Key13=36:36 +Key14=2756:8540 +Key15=2757:8541 +Key16=2758:8542 +Key17=2761:8482 +Key18=177:177 +Key19=176:176 +Key20=191:191 +Key21=65116:731 +Key22=65288:8 +Key23=65056:0 +Key24=2009:937 +Key25=419:321 +Key26=162:162 +Key27=174:174 +Key28=940:358 +Key29=165:165 +Key30=2300:8593 +Key31=697:305 +Key32=216:216 +Key33=222:222 +Key34=65112:176 +Key35=65108:175 +Key36=65293:13 +Key37=65507:0 +Key38=198:198 +Key39=167:167 +Key40=208:208 +Key41=170:170 +Key42=957:330 +Key43=673:294 +Key44=65122:0 +Key45=38:38 +Key46=419:321 +Key47=65113:733 +Key48=65114:711 +Key49=172:172 +Key50=65505:0 +Key51=65109:728 +Key52=60:60 +Key53=62:62 +Key54=169:169 +Key55=2768:8216 +Key56=2769:8217 +Key57=78:78 +Key58=186:186 +Key59=215:215 +Key60=247:247 +Key61=65110:729 +Key62=65506:0 +Key63=65450:42 +Key64=65032:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65454:46 +Key92=65377:0 +Key93=0:0 +Key94=92:92 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=269025049:0 +Key115=65515:0 +Key116=65312:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=0:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=0:0 +Key134=0:0 +Key135=0:0 +Key136=0:0 Key137=0:0 [capslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=49:49 Key11=50:50 @@ -479,8 +611,8 @@ Key88=65433:0 Key89=65435:0 Key90=65438:0 Key91=65439:0 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=60:60 Key95=65480:0 Key96=65481:0 @@ -501,33 +633,32 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 Key116=65312:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=0:0 Key126=65469:61 Key127=0:0 Key128=0:0 -Key129=269025170:0 +Key129=0:0 Key130=0:0 Key131=0:0 Key132=0:0 -Key133=269025166:0 +Key133=0:0 Key134=0:0 -Key135=65382:0 -Key136=65381:0 +Key135=0:0 +Key136=0:0 Key137=0:0 - [shiftcapslock] -Key8=0:0 +Key8=65406:0 Key9=65307:27 Key10=33:33 Key11=34:34 @@ -583,7 +714,7 @@ Key60=58:58 Key61=95:95 Key62=65506:0 Key63=65450:42 -Key64=65511:0 +Key64=65032:0 Key65=32:32 Key66=65509:0 Key67=65470:0 @@ -596,7 +727,7 @@ Key73=65476:0 Key74=65477:0 Key75=65478:0 Key76=65479:0 -Key77=65273:0 +Key77=65407:0 Key78=65300:0 Key79=65463:55 Key80=65464:56 @@ -611,8 +742,8 @@ Key88=65458:50 Key89=65459:51 Key90=65456:48 Key91=65454:46 -Key92=0:0 -Key93=65406:0 +Key92=65377:0 +Key93=0:0 Key94=62:62 Key95=65480:0 Key96=65481:0 @@ -633,27 +764,28 @@ Key110=65299:0 Key111=65377:0 Key112=65455:47 Key113=65027:0 -Key114=0:0 +Key114=269025049:0 Key115=65515:0 Key116=65312:0 -Key117=65383:0 -Key118=0:0 -Key119=0:0 -Key120=0:0 -Key121=0:0 -Key122=0:0 +Key117=0:0 +Key118=269025153:0 +Key119=269025093:0 +Key120=269025094:0 +Key121=269025095:0 +Key122=269025096:0 Key123=0:0 Key124=65027:0 Key125=65513:0 Key126=65469:61 Key127=65515:0 Key128=65517:0 -Key129=269025170:0 +Key129=0:0 Key130=0:0 Key131=0:0 Key132=0:0 -Key133=269025166:0 +Key133=0:0 Key134=0:0 -Key135=65382:0 -Key136=65381:0 +Key135=0:0 +Key136=0:0 Key137=0:0 + diff --git a/librfxcodec b/librfxcodec index de6a45cb..61f6e92e 160000 --- a/librfxcodec +++ b/librfxcodec @@ -1 +1 @@ -Subproject commit de6a45cba607b902da704304fa3de8ddd3d15239 +Subproject commit 61f6e92ecdfd057215da7932b6afefcbfa928446 diff --git a/libxrdp/libxrdp.h b/libxrdp/libxrdp.h index 0bda9f45..5f60183d 100644 --- a/libxrdp/libxrdp.h +++ b/libxrdp/libxrdp.h @@ -129,6 +129,7 @@ struct xrdp_sec void *encrypt_fips_info; void *decrypt_fips_info; void *sign_fips_info; + int is_security_header_present; /* boolean */ }; /* channel */ diff --git a/libxrdp/xrdp_mcs.c b/libxrdp/xrdp_mcs.c index 716ad13f..dafbbcd9 100644 --- a/libxrdp/xrdp_mcs.c +++ b/libxrdp/xrdp_mcs.c @@ -906,7 +906,8 @@ xrdp_mcs_send_connect_response(struct xrdp_mcs *self) int APP_CC xrdp_mcs_incoming(struct xrdp_mcs *self) { - int i; + int index; + DEBUG((" in xrdp_mcs_incoming")); if (xrdp_mcs_recv_connect_initial(self) != 0) @@ -945,7 +946,7 @@ xrdp_mcs_incoming(struct xrdp_mcs *self) return 1; } - for (i = 0; i < self->channel_list->count + 2; i++) + for (index = 0; index < self->channel_list->count + 2; index++) { if (xrdp_mcs_recv_cjrq(self) != 0) { @@ -953,7 +954,7 @@ xrdp_mcs_incoming(struct xrdp_mcs *self) } if (xrdp_mcs_send_cjcf(self, self->userid, - self->userid + MCS_USERCHANNEL_BASE + i) != 0) + self->userid + MCS_USERCHANNEL_BASE + index) != 0) { return 1; } diff --git a/libxrdp/xrdp_sec.c b/libxrdp/xrdp_sec.c index 63957a45..561acd1f 100644 --- a/libxrdp/xrdp_sec.c +++ b/libxrdp/xrdp_sec.c @@ -185,8 +185,6 @@ static const tui8 g_fips_ivec[8] = 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; -static int is_security_header_present = 1; /* next packet should contain security header? */ - /*****************************************************************************/ static void APP_CC hex_str_to_bin(char *in, char *out, int out_len) @@ -432,42 +430,44 @@ xrdp_sec_create(struct xrdp_rdp *owner, struct trans *trans) { struct xrdp_sec *self; - DEBUG((" in xrdp_sec_create")); - self = (struct xrdp_sec *) g_malloc(sizeof(struct xrdp_sec), 1); - self->rdp_layer = owner; - self->crypt_method = CRYPT_METHOD_NONE; /* set later */ - self->crypt_level = CRYPT_LEVEL_NONE; - self->mcs_layer = xrdp_mcs_create(self, trans, &(self->client_mcs_data), - &(self->server_mcs_data)); - self->fastpath_layer = xrdp_fastpath_create(self, trans); - self->chan_layer = xrdp_channel_create(self, self->mcs_layer); - DEBUG((" out xrdp_sec_create")); - - return self; + DEBUG((" in xrdp_sec_create")); + self = (struct xrdp_sec *) g_malloc(sizeof(struct xrdp_sec), 1); + self->rdp_layer = owner; + self->crypt_method = CRYPT_METHOD_NONE; /* set later */ + self->crypt_level = CRYPT_LEVEL_NONE; + self->mcs_layer = xrdp_mcs_create(self, trans, &(self->client_mcs_data), + &(self->server_mcs_data)); + self->fastpath_layer = xrdp_fastpath_create(self, trans); + self->chan_layer = xrdp_channel_create(self, self->mcs_layer); + self->is_security_header_present = 1; + DEBUG((" out xrdp_sec_create")); + + return self; } /*****************************************************************************/ void APP_CC -xrdp_sec_delete(struct xrdp_sec *self) { - - if (self == 0) { - g_writeln("xrdp_sec_delete: indata is null"); - return; - } - - xrdp_channel_delete(self->chan_layer); - xrdp_mcs_delete(self->mcs_layer); - xrdp_fastpath_delete(self->fastpath_layer); - ssl_rc4_info_delete(self->decrypt_rc4_info); /* TODO clear all data */ - ssl_rc4_info_delete(self->encrypt_rc4_info); /* TODO clear all data */ - ssl_des3_info_delete(self->decrypt_fips_info); - ssl_des3_info_delete(self->encrypt_fips_info); - ssl_hmac_info_delete(self->sign_fips_info); - g_free(self->client_mcs_data.data); - g_free(self->server_mcs_data.data); - /* Crypto information must always be cleared */ - g_memset(self, 0, sizeof(struct xrdp_sec)); - g_free(self); +xrdp_sec_delete(struct xrdp_sec *self) +{ + if (self == 0) + { + g_writeln("xrdp_sec_delete: self is null"); + return; + } + + xrdp_channel_delete(self->chan_layer); + xrdp_mcs_delete(self->mcs_layer); + xrdp_fastpath_delete(self->fastpath_layer); + ssl_rc4_info_delete(self->decrypt_rc4_info); /* TODO clear all data */ + ssl_rc4_info_delete(self->encrypt_rc4_info); /* TODO clear all data */ + ssl_des3_info_delete(self->decrypt_fips_info); + ssl_des3_info_delete(self->encrypt_fips_info); + ssl_hmac_info_delete(self->sign_fips_info); + g_free(self->client_mcs_data.data); + g_free(self->server_mcs_data.data); + /* Crypto information must always be cleared */ + g_memset(self, 0, sizeof(struct xrdp_sec)); + g_free(self); } /*****************************************************************************/ @@ -490,7 +490,6 @@ xrdp_sec_init(struct xrdp_sec *self, struct stream *s) } else { -// s_push_layer(s, sec_hdr, 4); } return 0; @@ -1209,7 +1208,7 @@ xrdp_sec_recv(struct xrdp_sec *self, struct stream *s, int *chan) } - if (!is_security_header_present) + if (!(self->is_security_header_present)) { return 0; } @@ -1326,7 +1325,8 @@ xrdp_sec_recv(struct xrdp_sec *self, struct stream *s, int *chan) if (self->crypt_level == CRYPT_LEVEL_NONE && self->crypt_method == CRYPT_METHOD_NONE) { - is_security_header_present = 0; /* in tls mode, no more security header from now on */ + /* in tls mode, no more security header from now on */ + self->is_security_header_present = 0; } DEBUG((" out xrdp_sec_recv")); diff --git a/neutrinordp/xrdp-neutrinordp.c b/neutrinordp/xrdp-neutrinordp.c index 6c8b17ac..0b90767d 100644 --- a/neutrinordp/xrdp-neutrinordp.c +++ b/neutrinordp/xrdp-neutrinordp.c @@ -1297,12 +1297,16 @@ lfreerdp_pointer_cached(rdpContext *context, mod->pointer_cache[index].bpp); } -static void DEFAULT_CC lfreerdp_polygon_cb(rdpContext* context, POLYGON_CB_ORDER* polygon_cb) +/******************************************************************************/ +static void DEFAULT_CC +lfreerdp_polygon_cb(rdpContext* context, POLYGON_CB_ORDER* polygon_cb) { LLOGLN(0, ("lfreerdp_polygon_sc called:- not supported!!!!!!!!!!!!!!!!!!!!")); } -static void DEFAULT_CC lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc) +/******************************************************************************/ +static void DEFAULT_CC +lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc) { struct mod *mod; int i, npoints; @@ -1351,7 +1355,9 @@ static void DEFAULT_CC lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER } } -static void DEFAULT_CC lfreerdp_syncronize(rdpContext* context) +/******************************************************************************/ +static void DEFAULT_CC +lfreerdp_syncronize(rdpContext* context) { struct mod *mod; mod = ((struct mod_context *)context)->modi; @@ -1398,17 +1404,41 @@ lfreerdp_pre_connect(freerdp *instance) instance->settings->glyph_cache = true; /* GLYPH_SUPPORT_FULL and GLYPH_SUPPORT_PARTIAL seem to be the same */ instance->settings->glyphSupportLevel = GLYPH_SUPPORT_FULL; - instance->settings->order_support[NEG_GLYPH_INDEX_INDEX] = 1; - instance->settings->order_support[NEG_FAST_GLYPH_INDEX] = 0; - instance->settings->order_support[NEG_FAST_INDEX_INDEX] = 0; - instance->settings->order_support[NEG_SCRBLT_INDEX] = 1; - instance->settings->order_support[NEG_SAVEBITMAP_INDEX] = 0; - instance->settings->bitmap_cache = 1; + instance->settings->order_support[NEG_DSTBLT_INDEX] = 1; /* 0x00 */ + instance->settings->order_support[NEG_PATBLT_INDEX] = 1; + instance->settings->order_support[NEG_SCRBLT_INDEX] = 1; instance->settings->order_support[NEG_MEMBLT_INDEX] = 1; - instance->settings->order_support[NEG_MEMBLT_V2_INDEX] = 1; instance->settings->order_support[NEG_MEM3BLT_INDEX] = 0; + instance->settings->order_support[NEG_ATEXTOUT_INDEX] = 0; + instance->settings->order_support[NEG_AEXTTEXTOUT_INDEX] = 0; + instance->settings->order_support[NEG_DRAWNINEGRID_INDEX] = 0; + instance->settings->order_support[NEG_LINETO_INDEX] = 1; /* 0x08 */ + instance->settings->order_support[NEG_MULTI_DRAWNINEGRID_INDEX] = 0; + instance->settings->order_support[NEG_OPAQUE_RECT_INDEX] = 1; + instance->settings->order_support[NEG_SAVEBITMAP_INDEX] = 0; + instance->settings->order_support[NEG_WTEXTOUT_INDEX] = 0; + instance->settings->order_support[NEG_MEMBLT_V2_INDEX] = 1; instance->settings->order_support[NEG_MEM3BLT_V2_INDEX] = 0; + instance->settings->order_support[NEG_MULTIDSTBLT_INDEX] = 0; + instance->settings->order_support[NEG_MULTIPATBLT_INDEX] = 0; /* 0x10 */ + instance->settings->order_support[NEG_MULTISCRBLT_INDEX] = 0; + instance->settings->order_support[NEG_MULTIOPAQUERECT_INDEX] = 0; + instance->settings->order_support[NEG_FAST_INDEX_INDEX] = 0; + instance->settings->order_support[NEG_POLYGON_SC_INDEX] = 0; + instance->settings->order_support[NEG_POLYGON_CB_INDEX] = 0; + instance->settings->order_support[NEG_POLYLINE_INDEX] = 0; + /* 0x17 missing */ + instance->settings->order_support[NEG_FAST_GLYPH_INDEX] = 0; /* 0x18 */ + instance->settings->order_support[NEG_ELLIPSE_SC_INDEX] = 0; + instance->settings->order_support[NEG_ELLIPSE_CB_INDEX] = 0; + instance->settings->order_support[NEG_GLYPH_INDEX_INDEX] = 1; + instance->settings->order_support[NEG_GLYPH_WEXTTEXTOUT_INDEX] = 0; + instance->settings->order_support[NEG_GLYPH_WLONGTEXTOUT_INDEX] = 0; + instance->settings->order_support[NEG_GLYPH_WLONGEXTTEXTOUT_INDEX] = 0; + /* 0x1F missing*/ + + instance->settings->bitmap_cache = 1; instance->settings->bitmapCacheV2NumCells = 3; // 5; instance->settings->bitmapCacheV2CellInfo[0].numEntries = 600; // 0x78; instance->settings->bitmapCacheV2CellInfo[0].persistent = 0; @@ -1422,12 +1452,6 @@ lfreerdp_pre_connect(freerdp *instance) instance->settings->bitmapCacheV2CellInfo[4].persistent = 0; instance->settings->bitmap_cache_v3 = 1; - instance->settings->order_support[NEG_MULTIDSTBLT_INDEX] = 0; - instance->settings->order_support[NEG_MULTIPATBLT_INDEX] = 0; - instance->settings->order_support[NEG_MULTISCRBLT_INDEX] = 0; - instance->settings->order_support[NEG_MULTIOPAQUERECT_INDEX] = 0; - instance->settings->order_support[NEG_POLYLINE_INDEX] = 0; - instance->settings->username = g_strdup(mod->username); instance->settings->password = g_strdup(mod->password); diff --git a/sesman/chansrv/Makefile.am b/sesman/chansrv/Makefile.am index 81218db1..7a97c136 100644 --- a/sesman/chansrv/Makefile.am +++ b/sesman/chansrv/Makefile.am @@ -9,7 +9,8 @@ EXTRA_DIST = \ rail.h \ sound.h \ xcommon.h \ - mlog.h + mlog.h \ + chansrv_common.h EXTRA_DEFINES = EXTRA_INCLUDES = @@ -48,7 +49,8 @@ xrdp_chansrv_SOURCES = \ drdynvc.c \ chansrv_fuse.c \ irp.c \ - fifo.c + fifo.c \ + chansrv_common.c xrdp_chansrv_LDFLAGS = \ $(EXTRA_FLAGS) diff --git a/sesman/chansrv/chansrv_common.c b/sesman/chansrv/chansrv_common.c new file mode 100644 index 00000000..fd26da7c --- /dev/null +++ b/sesman/chansrv/chansrv_common.c @@ -0,0 +1,73 @@ +/** + * xrdp: A Remote Desktop Protocol server. + * + * Copyright (C) Laxmikant Rashinkar 2009-2014 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "chansrv_common.h" + +/** + * Assemble fragmented incoming packets into one stream + * + * @param src stream that contains partial data + * @param dest stream that contains entire data + * @param chan_flags fragmentation flags + * @param length bytes in this packet + * @param total_length total length of assembled packet + * + * @return 1 when all data has been assembled, 0 otherwise + * + * NOTE: it is the responsibility of the caller to free dest stream + ****************************************************************************/ +int +read_entire_packet(struct stream *src, struct stream **dest, int chan_flags, + int length, int total_length) +{ + struct stream *ls; + + if ((chan_flags & 3) == 3) + { + /* packet not fragmented */ + xstream_new(ls, total_length); + xstream_copyin(ls, src->p, length); + ls->p = ls->data; + *dest = ls; + return 1; + } + + /* is this the first fragmented packet? */ + if (chan_flags & 1) + { + xstream_new(ls, total_length); + *dest = ls; + } + else + { + ls = *dest; + } + + xstream_copyin(ls, src->p, length); + + /* in last packet, chan_flags & 0x02 will be true */ + if (chan_flags & 0x02) + { + /* rewind stream */ + ls->p = ls->data; + return 1; + } + + return 0; +} + diff --git a/sesman/chansrv/chansrv_common.h b/sesman/chansrv/chansrv_common.h new file mode 100644 index 00000000..833e3359 --- /dev/null +++ b/sesman/chansrv/chansrv_common.h @@ -0,0 +1,27 @@ +/** + * xrdp: A Remote Desktop Protocol server. + * + * Copyright (C) Laxmikant Rashinkar 2009-2014 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _CHANSRV_COMMON_H +#define _CHANSRV_COMMON_H + +#include "parse.h" + +int read_entire_packet(struct stream *src, struct stream **dest, int chan_flags, int length, int total_length); + +#endif + diff --git a/sesman/chansrv/pulse/module-xrdp-source.c b/sesman/chansrv/pulse/module-xrdp-source.c index 1c03b069..3d73fd03 100644 --- a/sesman/chansrv/pulse/module-xrdp-source.c +++ b/sesman/chansrv/pulse/module-xrdp-source.c @@ -71,7 +71,7 @@ PA_MODULE_USAGE( #define DEFAULT_SOURCE_NAME "xrdp-source" #define DEFAULT_LATENCY_TIME 10 -#define MAX_LATENCY_USEC (PA_USEC_PER_SEC * 2) +#define MAX_LATENCY_USEC 1000 #define CHANSRV_PORT_STR "/tmp/.xrdp/xrdp_chansrv_audio_in_socket_%d" struct userdata { @@ -144,6 +144,32 @@ static void source_update_requested_latency_cb(pa_source *s) { u->block_usec = pa_source_get_requested_latency_within_thread(s); } +static int lsend(int fd, char *data, int bytes) { + int sent = 0; + int error; + while (sent < bytes) { + error = send(fd, data + sent, bytes - sent, 0); + if (error < 1) { + return error; + } + sent += error; + } + return sent; +} + +static int lrecv(int fd, char *data, int bytes) { + int recved = 0; + int error; + while (recved < bytes) { + error = recv(fd, data + recved, bytes - recved, 0); + if (error < 1) { + return error; + } + recved += error; + } + return recved; +} + static int data_get(struct userdata *u, pa_memchunk *chunk) { int fd; @@ -190,7 +216,7 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { buf[9] = 0; buf[10] = 0; - send(u->fd, buf, 11, 0); + lsend(u->fd, buf, 11); u->want_src_data = 1; pa_log_debug("###### started recording"); } @@ -208,10 +234,10 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { buf[9] = (unsigned char) chunk->length; buf[10] = (unsigned char) ((chunk->length >> 8) & 0xff); - send(u->fd, buf, 11, 0); + lsend(u->fd, buf, 11); /* read length of data available */ - recv(u->fd, ubuf, 2, 0); + lrecv(u->fd, (char *) ubuf, 2); bytes = ((ubuf[1] << 8) & 0xff00) | (ubuf[0] & 0xff); if (bytes == 0) { @@ -220,7 +246,7 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { } /* get data */ - bytes = recv(u->fd, data, bytes, 0); + bytes = lrecv(u->fd, data, bytes); pa_memblock_release(chunk->memblock); @@ -272,7 +298,7 @@ static void thread_func(void *userdata) { buf[9] = 0; buf[10] = 0; - send(u->fd, buf, 11, 0); + lsend(u->fd, buf, 11); u->want_src_data = 0; pa_log_debug("###### stopped recording"); } diff --git a/sesman/chansrv/sound.c b/sesman/chansrv/sound.c index f5e17fef..9943a15b 100644 --- a/sesman/chansrv/sound.c +++ b/sesman/chansrv/sound.c @@ -43,9 +43,11 @@ static struct trans *g_audio_c_trans_in = 0; /* connection */ static int g_training_sent_time = 0; static int g_cBlockNo = 0; static int g_bytes_in_stream = 0; -static FIFO in_fifo; +static FIFO g_in_fifo; +static int g_bytes_in_fifo = 0; static struct stream *g_stream_inp = NULL; +static struct stream *g_stream_incoming_packet = NULL; #define BBUF_SIZE (1024 * 8) char g_buffer[BBUF_SIZE]; @@ -145,23 +147,18 @@ static int g_client_input_format_index = 0; static int g_server_input_format_index = 0; /* microphone related */ -static int APP_CC -sound_send_server_input_formats(void); -static int APP_CC -sound_process_input_format(int aindex, int wFormatTag, +static int APP_CC sound_send_server_input_formats(void); +static int APP_CC sound_process_input_format(int aindex, int wFormatTag, int nChannels, int nSamplesPerSec, int nAvgBytesPerSec, int nBlockAlign, int wBitsPerSample, int cbSize, char *data); -static int APP_CC -sound_process_input_formats(struct stream *s, int size); -static int APP_CC -sound_input_start_recording(void); -static int APP_CC -sound_input_stop_recording(void); -static int APP_CC -sound_process_input_data(struct stream *s, int bytes); -static int DEFAULT_CC -sound_sndsrvr_source_data_in(struct trans *trans); +static int APP_CC sound_process_input_formats(struct stream *s, int size); +static int APP_CC sound_input_start_recording(void); +static int APP_CC sound_input_stop_recording(void); +static int APP_CC sound_process_input_data(struct stream *s, int bytes); +static int DEFAULT_CC sound_sndsrvr_source_data_in(struct trans *trans); +static int APP_CC sound_start_source_listener(); +static int APP_CC sound_start_sink_listener(); /*****************************************************************************/ static int APP_CC @@ -681,36 +678,21 @@ sound_sndsrvr_source_conn_in(struct trans *trans, struct trans *new_trans) int APP_CC sound_init(void) { - char port[256]; - LOG(0, ("sound_init:")); g_memset(g_sent_flag, 0, sizeof(g_sent_flag)); + g_stream_incoming_packet = NULL; /* init sound output */ sound_send_server_output_formats(); - - g_audio_l_trans_out = trans_create(TRANS_MODE_UNIX, 128 * 1024, 8192); - g_audio_l_trans_out->is_term = g_is_term; - g_snprintf(port, 255, CHANSRV_PORT_OUT_STR, g_display_num); - g_audio_l_trans_out->trans_conn_in = sound_sndsrvr_sink_conn_in; - - if (trans_listen(g_audio_l_trans_out, port) != 0) - LOG(0, ("sound_init: trans_listen failed")); + sound_start_sink_listener(); /* init sound input */ sound_send_server_input_formats(); - - g_audio_l_trans_in = trans_create(TRANS_MODE_UNIX, 128 * 1024, 8192); - g_audio_l_trans_in->is_term = g_is_term; - g_snprintf(port, 255, CHANSRV_PORT_IN_STR, g_display_num); - g_audio_l_trans_in->trans_conn_in = sound_sndsrvr_source_conn_in; - - if (trans_listen(g_audio_l_trans_in, port) != 0) - LOG(0, ("sound_init: trans_listen failed")); + sound_start_source_listener(); /* save data from sound_server_source */ - fifo_init(&in_fifo, 100); + fifo_init(&g_in_fifo, 100); return 0; } @@ -744,7 +726,7 @@ sound_deinit(void) g_audio_c_trans_in = 0; } - fifo_deinit(&in_fifo); + fifo_deinit(&g_in_fifo); return 0; } @@ -759,31 +741,39 @@ sound_data_in(struct stream *s, int chan_id, int chan_flags, int length, { int code; int size; + int ok_to_free = 1; - in_uint8(s, code); - in_uint8s(s, 1); - in_uint16_le(s, size); + if (!read_entire_packet(s, &g_stream_incoming_packet, chan_flags, + length, total_length)) + { + return 0; + } + + in_uint8(g_stream_incoming_packet, code); + in_uint8s(g_stream_incoming_packet, 1); + in_uint16_le(g_stream_incoming_packet, size); switch (code) { case SNDC_WAVECONFIRM: - sound_process_wave_confirm(s, size); + sound_process_wave_confirm(g_stream_incoming_packet, size); break; case SNDC_TRAINING: - sound_process_training(s, size); + sound_process_training(g_stream_incoming_packet, size); break; case SNDC_FORMATS: - sound_process_output_formats(s, size); + sound_process_output_formats(g_stream_incoming_packet, size); break; case SNDC_REC_NEGOTIATE: - sound_process_input_formats(s, size); + sound_process_input_formats(g_stream_incoming_packet, size); break; case SNDC_REC_DATA: - sound_process_input_data(s, size); + sound_process_input_data(g_stream_incoming_packet, size); + ok_to_free = 0; break; default: @@ -791,6 +781,12 @@ sound_data_in(struct stream *s, int chan_id, int chan_flags, int length, break; } + if (ok_to_free && g_stream_incoming_packet) + { + xstream_free(g_stream_incoming_packet); + g_stream_incoming_packet = NULL; + } + return 0; } @@ -834,7 +830,6 @@ sound_get_wait_objs(tbus *objs, int *count, int *timeout) int APP_CC sound_check_wait_objs(void) { - if (g_audio_l_trans_out != 0) { if (trans_check_wait_objs(g_audio_l_trans_out) != 0) @@ -852,6 +847,7 @@ sound_check_wait_objs(void) LOG(10, ("sound_check_wait_objs: g_audio_c_trans_out returned non-zero")); trans_delete(g_audio_c_trans_out); g_audio_c_trans_out = 0; + sound_start_sink_listener(); } } @@ -872,6 +868,7 @@ sound_check_wait_objs(void) LOG(10, ("sound_check_wait_objs: g_audio_c_trans_in returned non-zero")); trans_delete(g_audio_c_trans_in); g_audio_c_trans_in = 0; + sound_start_source_listener(); } } @@ -1045,9 +1042,12 @@ sound_input_start_recording(void) { struct stream* s; + LOG(10, ("sound_input_start_recording:")); + /* if there is any data in FIFO, discard it */ - while ((s = (struct stream *) fifo_remove(&in_fifo)) != NULL) + while ((s = (struct stream *) fifo_remove(&g_in_fifo)) != NULL) xstream_free(s); + g_bytes_in_fifo = 0; xstream_new(s, 1024); @@ -1079,6 +1079,8 @@ sound_input_stop_recording(void) { struct stream* s; + LOG(10, ("sound_input_stop_recording:")); + xstream_new(s, 1024); /* @@ -1102,19 +1104,25 @@ sound_input_stop_recording(void) * Process data: xrdp <- client *****************************************************************************/ -static unsigned char data = 0; - static int APP_CC sound_process_input_data(struct stream *s, int bytes) { struct stream *ls; + LOG(0, ("sound_process_input_data: bytes %d g_bytes_in_fifo %d", + bytes, g_bytes_in_fifo)); + + /* cap data in fifo */ + if (g_bytes_in_fifo > 8 * 1024) + { + return 0; + } xstream_new(ls, bytes); - memcpy(ls->data, s->p, bytes); + g_memcpy(ls->data, s->p, bytes); ls->p += bytes; s_mark_end(ls); - - fifo_insert(&in_fifo, (void *) ls); + fifo_insert(&g_in_fifo, (void *) ls); + g_bytes_in_fifo += bytes; return 0; } @@ -1147,6 +1155,7 @@ sound_sndsrvr_source_data_in(struct trans *trans) ts->p = ts->data + 8; in_uint8(ts, cmd); in_uint16_le(ts, bytes_req); + LOG(10, ("sound_sndsrvr_source_data_in: bytes_req %d", bytes_req)); xstream_new(s, bytes_req + 2); @@ -1158,7 +1167,14 @@ sound_sndsrvr_source_data_in(struct trans *trans) while (bytes_read < bytes_req) { if (g_stream_inp == NULL) - g_stream_inp = (struct stream *) fifo_remove(&in_fifo); + { + g_stream_inp = (struct stream *) fifo_remove(&g_in_fifo); + if (g_stream_inp != NULL) + { + g_bytes_in_fifo -= g_stream_inp->size; + LOG(10, (" g_bytes_in_fifo %d", g_bytes_in_fifo)); + } + } if (g_stream_inp == NULL) { @@ -1212,3 +1228,38 @@ sound_sndsrvr_source_data_in(struct trans *trans) return 0; } + +/** + * Start a listener for microphone redirection connections + *****************************************************************************/ +static int APP_CC +sound_start_source_listener() +{ + char port[1024]; + + g_audio_l_trans_in = trans_create(TRANS_MODE_UNIX, 128 * 1024, 8192); + g_audio_l_trans_in->is_term = g_is_term; + g_snprintf(port, 255, CHANSRV_PORT_IN_STR, g_display_num); + g_audio_l_trans_in->trans_conn_in = sound_sndsrvr_source_conn_in; + if (trans_listen(g_audio_l_trans_in, port) != 0) + LOG(0, ("trans_listen failed")); + return 0; +} + +/** + * Start a listener for speaker redirection connections + *****************************************************************************/ +static int APP_CC +sound_start_sink_listener() +{ + char port[1024]; + + g_audio_l_trans_out = trans_create(TRANS_MODE_UNIX, 128 * 1024, 8192); + g_audio_l_trans_out->is_term = g_is_term; + g_snprintf(port, 255, CHANSRV_PORT_OUT_STR, g_display_num); + g_audio_l_trans_out->trans_conn_in = sound_sndsrvr_sink_conn_in; + if (trans_listen(g_audio_l_trans_out, port) != 0) + LOG(0, ("trans_listen failed")); + return 0; +} + diff --git a/sesman/session.c b/sesman/session.c index 856c969e..4ea48d35 100644 --- a/sesman/session.c +++ b/sesman/session.c @@ -460,6 +460,7 @@ session_start_fork(int width, int height, int bpp, char *username, char screen[32]; char text[256]; char passwd_file[256]; + char *pfile; char **pp1 = (char **)NULL; struct session_chain *temp = (struct session_chain *)NULL; struct list *xserver_params = (struct list *)NULL; @@ -633,10 +634,14 @@ session_start_fork(int width, int height, int bpp, char *username, } else if (xpid == 0) /* child */ { - env_set_user(username, passwd_file, display, + pfile = 0; + if (type == SESMAN_SESSION_TYPE_XVNC) + { + pfile = passwd_file; + } + env_set_user(username, pfile, display, g_cfg->session_variables1, g_cfg->session_variables2); - env_check_password_file(passwd_file, password); g_snprintf(text, 255, "%d", g_cfg->sess.max_idle_time); g_setenv("XRDP_SESMAN_MAX_IDLE_TIME", text, 1); @@ -676,6 +681,7 @@ session_start_fork(int width, int height, int bpp, char *username, } else if (type == SESMAN_SESSION_TYPE_XVNC) { + env_check_password_file(passwd_file, password); xserver_params = list_create(); xserver_params->auto_free = 1; diff --git a/sesman/verify_user.c b/sesman/verify_user.c index 98d3dd32..49c475c6 100644 --- a/sesman/verify_user.c +++ b/sesman/verify_user.c @@ -51,6 +51,7 @@ long DEFAULT_CC auth_userpass(char *user, char *pass, int *errorcode) { const char *encr; + const char *epass; struct passwd *spw; struct spwd *stp; @@ -84,8 +85,12 @@ auth_userpass(char *user, char *pass, int *errorcode) /* old system with only passwd */ encr = spw->pw_passwd; } - - return (strcmp(encr, crypt(pass, encr)) == 0); + epass = crypt(pass, encr); + if (epass == 0) + { + return 0; + } + return (strcmp(encr, epass) == 0); } /******************************************************************************/ diff --git a/sesman/verify_user_pam.c b/sesman/verify_user_pam.c index eec12c66..a2b3f93a 100644 --- a/sesman/verify_user_pam.c +++ b/sesman/verify_user_pam.c @@ -118,22 +118,31 @@ auth_userpass(char *user, char *pass, int *errorcode) if (error != PAM_SUCCESS) { - if(errorcode!=NULL){ - *errorcode = error ; - } + if (errorcode != NULL) + { + *errorcode = error; + } g_printf("pam_start failed: %s\r\n", pam_strerror(auth_info->ph, error)); pam_end(auth_info->ph, error); g_free(auth_info); return 0; } + error = pam_set_item(auth_info->ph, PAM_TTY, service_name); + if (error != PAM_SUCCESS) + { + g_printf("pam_set_item failed: %s\r\n", + pam_strerror(auth_info->ph, error)); + } + error = pam_authenticate(auth_info->ph, 0); if (error != PAM_SUCCESS) { - if(errorcode!=NULL){ - *errorcode = error ; - } + if (errorcode != NULL) + { + *errorcode = error; + } g_printf("pam_authenticate failed: %s\r\n", pam_strerror(auth_info->ph, error)); pam_end(auth_info->ph, error); @@ -150,9 +159,10 @@ auth_userpass(char *user, char *pass, int *errorcode) if (error != PAM_SUCCESS) { - if(errorcode!=NULL){ - *errorcode = error ; - } + if (errorcode != NULL) + { + *errorcode = error; + } g_printf("pam_acct_mgmt failed: %s\r\n", pam_strerror(auth_info->ph, error)); pam_end(auth_info->ph, error); diff --git a/vnc/vnc.c b/vnc/vnc.c index e50dd70f..bb04726d 100644 --- a/vnc/vnc.c +++ b/vnc/vnc.c @@ -979,6 +979,13 @@ lib_mod_connect(struct vnc *v) v->sck_obj = g_create_wait_obj_from_socket(v->sck, 0); v->sck_closed = 0; + if (v->delay_ms > 0) + { + g_sprintf(text, "Waiting %d ms for VNC to start...", v->delay_ms); + v->server_msg(v, text, 0); + g_sleep(v->delay_ms); + } + g_sprintf(text, "VNC connecting to %s %s", v->ip, con_port); v->server_msg(v, text, 0); error = g_tcp_connect(v->sck, v->ip, con_port); @@ -1331,6 +1338,10 @@ lib_mod_set_param(struct vnc *v, char *name, char *value) { v->keylayout = g_atoi(value); } + else if (g_strcasecmp(name, "delay_ms") == 0) + { + v->delay_ms = g_atoi(value); + } return 0; } diff --git a/vnc/vnc.h b/vnc/vnc.h index 947b521f..6d265beb 100644 --- a/vnc/vnc.h +++ b/vnc/vnc.h @@ -115,4 +115,5 @@ struct vnc char* clip_data; int clip_data_size; tbus sck_obj; + int delay_ms; }; diff --git a/xorg/server/Makefile b/xorg/server/Makefile deleted file mode 100644 index 793334c7..00000000 --- a/xorg/server/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -moduledir := $(shell pkg-config xorg-server --variable moduledir) - -all: allmake - -allmake: - cd module; $(MAKE) $(MFLAGS) - cd xrdpdev; $(MAKE) $(MFLAGS) - cd xrdpkeyb; $(MAKE) $(MFLAGS) - cd xrdpmouse; $(MAKE) $(MFLAGS) - -clean: allclean - -allclean: - cd module; $(MAKE) clean - cd xrdpdev; $(MAKE) clean - cd xrdpkeyb; $(MAKE) clean - cd xrdpmouse; $(MAKE) clean - -xinstall: - strip module/libxorgxrdp.so - strip xrdpdev/xrdpdev_drv.so - strip xrdpmouse/xrdpmouse_drv.so - strip xrdpkeyb/xrdpkeyb_drv.so - - mkdir -p $(HOME)/xorg-modules/drivers $(HOME)/xorg-modules/input - cp module/libxorgxrdp.so $(HOME)/xorg-modules/ - cp xrdpdev/xrdpdev_drv.so $(HOME)/xorg-modules/drivers/ - cp xrdpmouse/xrdpmouse_drv.so $(HOME)/xorg-modules/input/ - cp xrdpkeyb/xrdpkeyb_drv.so $(HOME)/xorg-modules/input/ - -install: - install --directory $(DESTDIR)$(moduledir) $(DESTDIR)$(moduledir)/drivers $(DESTDIR)$(moduledir)/input - install --mode=0644 --strip module/libxorgxrdp.so $(DESTDIR)$(moduledir) - install --mode=0644 --strip xrdpdev/xrdpdev_drv.so $(DESTDIR)$(moduledir)/drivers/ - install --mode=0644 --strip xrdpmouse/xrdpmouse_drv.so $(DESTDIR)$(moduledir)/input/ - install --mode=0644 --strip xrdpkeyb/xrdpkeyb_drv.so $(DESTDIR)$(moduledir)/input/ diff --git a/xorg/server/Makefile.am b/xorg/server/Makefile.am new file mode 100644 index 00000000..bee2ef75 --- /dev/null +++ b/xorg/server/Makefile.am @@ -0,0 +1,7 @@ +EXTRA_DIST = bootstrap readme.txt + +SUBDIRS = \ + module \ + xrdpdev \ + xrdpkeyb \ + xrdpmouse diff --git a/xorg/server/bootstrap b/xorg/server/bootstrap new file mode 100755 index 00000000..ec344d3d --- /dev/null +++ b/xorg/server/bootstrap @@ -0,0 +1,36 @@ +#!/bin/sh + +which autoconf +if ! test $? -eq 0 +then + echo "error, install autoconf" + exit 1 +fi + +which automake +if ! test $? -eq 0 +then + echo "error, install automake" + exit 1 +fi + +which libtool +if ! test $? -eq 0 +then + echo "error, install libtool" + exit 1 +fi + +which pkg-config +if ! test $? -eq 0 +then + echo "error, install pkg-config" + exit 1 +fi + +touch configure.ac +touch NEWS +touch AUTHORS +touch README +touch ChangeLog +autoreconf -fvi diff --git a/xorg/server/configure.ac b/xorg/server/configure.ac new file mode 100644 index 00000000..cb78dccf --- /dev/null +++ b/xorg/server/configure.ac @@ -0,0 +1,35 @@ +# Process this file with autoconf to produce a configure script + +AC_PREREQ(2.59) +AC_INIT([xrdpmod], [0.1.0], [xrdp-devel@lists.sourceforge.net]) +AC_CONFIG_HEADERS(config_ac.h:config_ac-h.in) +AM_INIT_AUTOMAKE([1.6 foreign]) +AC_PROG_CC +AC_C_CONST +AC_PROG_LIBTOOL + +AM_CONDITIONAL(GOT_PREFIX, test "x${prefix}" != "xNONE"]) + +AC_CHECK_HEADER([xorg/xorg-server.h], [], + [AC_MSG_ERROR([please install xserver-xorg-dev or xorg-x11-server-sdk])]) + +PKG_CHECK_MODULES([XORG_SERVER], [xorg-server >= 0]) +AC_SUBST([XORG_SERVER_CFLAGS]) +AC_SUBST([XORG_SERVER_LIBS]) + +moduledir=`pkg-config xorg-server --variable=moduledir` +AC_SUBST([moduledir]) + +if test "x${prefix}" = "xNONE" ; then +sysconfdir="/etc"; +fi + +AC_CONFIG_FILES([Makefile + module/Makefile + xrdpdev/Makefile + xrdpkeyb/Makefile + xrdpmouse/Makefile +]) + +AC_OUTPUT + diff --git a/xorg/server/module/Makefile b/xorg/server/module/Makefile deleted file mode 100644 index 8f1560d6..00000000 --- a/xorg/server/module/Makefile +++ /dev/null @@ -1,60 +0,0 @@ - -OBJS = rdpDraw.o rdpPri.o rdpGC.o rdpFillSpans.o rdpSetSpans.o rdpPutImage.o \ -rdpCopyArea.o rdpCopyPlane.o rdpPolyPoint.o rdpPolylines.o rdpPolySegment.o \ -rdpPolyRectangle.o rdpPolyArc.o rdpFillPolygon.o rdpPolyFillRect.o \ -rdpPolyFillArc.o rdpPolyText8.o rdpPolyText16.o rdpImageText8.o \ -rdpImageText16.o rdpImageGlyphBlt.o rdpPolyGlyphBlt.o rdpPushPixels.o \ -rdpCursor.o rdpMain.o rdpRandR.o rdpMisc.o rdpReg.o \ -rdpComposite.o rdpGlyphs.o rdpPixmap.o rdpInput.o rdpClientCon.o rdpCapture.o \ -rdpTrapezoids.o rdpXv.o rdpSimd.o - -;OBJS += cpuid_x86.o i420_to_rgb32_x86_sse2.o yv12_to_rgb32_x86_sse2.o yuy2_to_rgb32_x86_sse2.o uyvy_to_rgb32_x86_sse2.o -;OBJS += cpuid_amd64.o i420_to_rgb32_amd64_sse2.o yv12_to_rgb32_amd64_sse2.o yuy2_to_rgb32_amd64_sse2.o uyvy_to_rgb32_amd64_sse2.o - -CFLAGS = -g -O2 -Wall -fPIC -I/usr/include/xorg -I/usr/include/pixman-1 \ --I../../../common - -;CFLAGS += -DSIMD_USE_ACCEL=1 - -LDFLAGS = - -LIBS = - -all: libxorgxrdp.so - -libxorgxrdp.so: $(OBJS) Makefile - $(CC) -shared -o libxorgxrdp.so $(LDFLAGS) $(OBJS) $(LIBS) - -clean: - rm -f $(OBJS) libxorgxrdp.so - -cpuid_x86.o: x86/cpuid_x86.asm - yasm -f elf32 -g dwarf2 x86/cpuid_x86.asm - -i420_to_rgb32_x86_sse2.o: x86/i420_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/i420_to_rgb32_x86_sse2.asm - -yv12_to_rgb32_x86_sse2.o: x86/yv12_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/yv12_to_rgb32_x86_sse2.asm - -yuy2_to_rgb32_x86_sse2.o: x86/yuy2_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/yuy2_to_rgb32_x86_sse2.asm - -uyvy_to_rgb32_x86_sse2.o: x86/uyvy_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/uyvy_to_rgb32_x86_sse2.asm - -cpuid_amd64.o: amd64/cpuid_amd64.asm - yasm -f elf64 -g dwarf2 amd64/cpuid_amd64.asm - -i420_to_rgb32_amd64_sse2.o: amd64/i420_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/i420_to_rgb32_amd64_sse2.asm - -yv12_to_rgb32_amd64_sse2.o: amd64/yv12_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/yv12_to_rgb32_amd64_sse2.asm - -yuy2_to_rgb32_amd64_sse2.o: amd64/yuy2_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/yuy2_to_rgb32_amd64_sse2.asm - -uyvy_to_rgb32_amd64_sse2.o: amd64/uyvy_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/uyvy_to_rgb32_amd64_sse2.asm - diff --git a/xorg/server/module/Makefile.am b/xorg/server/module/Makefile.am new file mode 100644 index 00000000..07b24edc --- /dev/null +++ b/xorg/server/module/Makefile.am @@ -0,0 +1,22 @@ +EXTRA_DIST = + +AM_CFLAGS = \ + $(XORG_SERVER_CFLAGS) \ + -I../../../common + +libxorgxrdp_la_LTLIBRARIES = libxorgxrdp.la + +libxorgxrdp_la_LDFLAGS = -module -avoid-version + +libxorgxrdp_ladir = $(moduledir) + +libxorgxrdp_la_SOURCES = rdpDraw.c rdpPri.c rdpGC.c rdpFillSpans.c \ +rdpSetSpans.c rdpPutImage.c rdpCopyArea.c rdpCopyPlane.c rdpPolyPoint.c \ +rdpPolylines.c rdpPolySegment.c rdpPolyRectangle.c rdpPolyArc.c \ +rdpFillPolygon.c rdpPolyFillRect.c rdpPolyFillArc.c rdpPolyText8.c \ +rdpPolyText16.c rdpImageText8.c rdpImageText16.c rdpImageGlyphBlt.c \ +rdpPolyGlyphBlt.c rdpPushPixels.c rdpCursor.c rdpMain.c rdpRandR.c \ +rdpMisc.c rdpReg.c rdpComposite.c rdpGlyphs.c rdpPixmap.c rdpInput.c \ +rdpClientCon.c rdpCapture.c rdpTrapezoids.c rdpXv.c rdpSimd.c + +libxorgxrdp_la_LIBADD = diff --git a/xorg/server/module/rdp.h b/xorg/server/module/rdp.h index 8a4d58c4..711750a2 100644 --- a/xorg/server/module/rdp.h +++ b/xorg/server/module/rdp.h @@ -23,6 +23,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define _RDP_H #include +#include +#include + #include #include #include @@ -197,6 +200,10 @@ struct _rdpCounts typedef int (*yuv_to_rgb32_proc)(unsigned char *yuvs, int width, int height, int *rgbs); +typedef int (*copy_box_proc)(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); + /* move this to common header */ struct _rdpRec { @@ -209,6 +216,7 @@ struct _rdpRec int bitsPerPixel; int Bpp; int Bpp_mask; + char *pfbMemory_alloc; char *pfbMemory; ScreenPtr pScreen; rdpDevPrivateKey privateKeyRecGC; @@ -277,6 +285,8 @@ struct _rdpRec int xv_timer_schedualed; OsTimerPtr xv_timer; + copy_box_proc a8r8g8b8_to_a8b8g8r8_box; + }; typedef struct _rdpRec rdpRec; typedef struct _rdpRec * rdpPtr; diff --git a/xorg/server/module/rdpCapture.c b/xorg/server/module/rdpCapture.c index 5163e6ae..72b95535 100644 --- a/xorg/server/module/rdpCapture.c +++ b/xorg/server/module/rdpCapture.c @@ -24,6 +24,7 @@ /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ #include "rdpClientCon.h" #include "rdpReg.h" #include "rdpMisc.h" +#include "rdpCapture.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ @@ -63,7 +65,8 @@ rdpLimitRects(RegionPtr reg, int max_rects, BoxPtr *rects) /******************************************************************************/ /* copy rects with no error checking */ static int -rdpCopyBox_a8r8g8b8_to_a8r8g8b8(void *src, int src_stride, int srcx, int srcy, +rdpCopyBox_a8r8g8b8_to_a8r8g8b8(rdpClientCon *clientCon, + void *src, int src_stride, int srcx, int srcy, void *dst, int dst_stride, int dstx, int dsty, BoxPtr rects, int num_rects) { @@ -87,7 +90,7 @@ rdpCopyBox_a8r8g8b8_to_a8r8g8b8(void *src, int src_stride, int srcx, int srcy, height = box->y2 - box->y1; for (jndex = 0; jndex < height; jndex++) { - memcpy(d8, s8, bytes); + g_memcpy(d8, s8, bytes); d8 += dst_stride; s8 += src_stride; } @@ -101,7 +104,7 @@ rdpFillBox_yuvalp(int ax, int ay, void *dst, int dst_stride) { dst = ((char *) dst) + (ay << 8) * (dst_stride >> 8) + (ax << 8); - memset(dst, 0, 64 * 64 * 4); + g_memset(dst, 0, 64 * 64 * 4); return 0; } @@ -174,13 +177,14 @@ rdpCopyBox_a8r8g8b8_to_yuvalp(int ax, int ay, y = (r * 19595 + g * 38470 + b * 7471) >> 16; u = (r * -11071 + g * -21736 + b * 32807) >> 16; v = (r * 32756 + g * -27429 + b * -5327) >> 16; - y = y - 128; - y = max(y, -128); - u = max(u, -128); - v = max(v, -128); - y = min(y, 127); - u = min(u, 127); - v = min(v, 127); + u = u + 128; + v = v + 128; + y = max(y, 0); + u = max(u, 0); + v = max(v, 0); + y = min(y, 255); + u = min(u, 255); + v = min(v, 255); *(yptr++) = y; *(uptr++) = u; *(vptr++) = v; @@ -194,53 +198,67 @@ rdpCopyBox_a8r8g8b8_to_yuvalp(int ax, int ay, return 0; } +/******************************************************************************/ +int +a8r8g8b8_to_a8b8g8r8_box(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height) +{ + int index; + int jndex; + int red; + int green; + int blue; + unsigned int *s32; + unsigned int *d32; + + for (index = 0; index < height; index++) + { + s32 = (unsigned int *) s8; + d32 = (unsigned int *) d8; + for (jndex = 0; jndex < width; jndex++) + { + SPLITCOLOR32(red, green, blue, *s32); + *d32 = COLOR24(red, green, blue); + s32++; + d32++; + } + d8 += dst_stride; + s8 += src_stride; + } + return 0; +} + /******************************************************************************/ /* copy rects with no error checking */ static int -rdpCopyBox_a8r8g8b8_to_a8b8g8r8(void *src, int src_stride, - void *dst, int dst_stride, +rdpCopyBox_a8r8g8b8_to_a8b8g8r8(rdpClientCon *clientCon, + void *src, int src_stride, int srcx, int srcy, + void *dst, int dst_stride, int dstx, int dsty, BoxPtr rects, int num_rects) { char *s8; char *d8; int index; - int jndex; - int kndex; int bytes; int width; int height; - int red; - int green; - int blue; BoxPtr box; - unsigned int *s32; - unsigned int *d32; + copy_box_proc copy_box; + copy_box = clientCon->dev->a8r8g8b8_to_a8b8g8r8_box; for (index = 0; index < num_rects; index++) { box = rects + index; - s8 = ((char *) src) + box->y1 * src_stride; - s8 += box->x1 * 4; - d8 = ((char *) dst) + box->y1 * dst_stride; - d8 += box->x1 * 4; + s8 = ((char *) src) + (box->y1 - srcy) * src_stride; + s8 += (box->x1 - srcx) * 4; + d8 = ((char *) dst) + (box->y1 - dsty) * dst_stride; + d8 += (box->x1 - dstx) * 4; bytes = box->x2 - box->x1; bytes *= 4; width = box->x2 - box->x1; height = box->y2 - box->y1; - for (jndex = 0; jndex < height; jndex++) - { - s32 = (unsigned int *) s8; - d32 = (unsigned int *) d8; - for (kndex = 0; kndex < width; kndex++) - { - SPLITCOLOR32(red, green, blue, *s32); - *d32 = COLOR24(red, green, blue); - s32++; - d32++; - } - d8 += dst_stride; - s8 += src_stride; - } + copy_box(s8, src_stride, d8, dst_stride, width, height); } return 0; } @@ -283,8 +301,8 @@ rdpCapture0(rdpClientCon *clientCon, rect.x1 = 0; rect.y1 = 0; - rect.x2 = min(dst_width, src_width); - rect.y2 = min(dst_height, src_height); + rect.x2 = RDPMIN(dst_width, src_width); + rect.y2 = RDPMIN(dst_height, src_height); rdpRegionInit(®, &rect, 0); rdpRegionIntersect(®, in_reg, ®); @@ -307,14 +325,16 @@ rdpCapture0(rdpClientCon *clientCon, if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_a8r8g8b8)) { - rdpCopyBox_a8r8g8b8_to_a8r8g8b8(src, src_stride, 0, 0, + rdpCopyBox_a8r8g8b8_to_a8r8g8b8(clientCon, + src, src_stride, 0, 0, dst, dst_stride, 0, 0, psrc_rects, num_rects); } else if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_a8b8g8r8)) { - rdpCopyBox_a8r8g8b8_to_a8b8g8r8(src, src_stride, - dst, dst_stride, + rdpCopyBox_a8r8g8b8_to_a8b8g8r8(clientCon, + src, src_stride, 0, 0, + dst, dst_stride, 0, 0, psrc_rects, num_rects); } else if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_r5g6b5)) @@ -739,6 +759,7 @@ rdpCapture(rdpClientCon *clientCon, int dst_stride, int dst_format, int mode) { LLOGLN(10, ("rdpCapture:")); + LLOGLN(10, ("rdpCapture: src %p dst %p", src, dst)); switch (mode) { case 0: diff --git a/xorg/server/module/rdpCapture.h b/xorg/server/module/rdpCapture.h index 4dff1eea..c138947a 100644 --- a/xorg/server/module/rdpCapture.h +++ b/xorg/server/module/rdpCapture.h @@ -18,10 +18,24 @@ * Routines to copy regions from framebuffer to shared memory */ -Bool +#ifndef __RDPCAPTURE_H +#define __RDPCAPTURE_H + +#include +#include +#include + +extern _X_EXPORT Bool rdpCapture(rdpClientCon *clientCon, RegionPtr in_reg, BoxPtr *out_rects, int *num_out_rects, void *src, int src_width, int src_height, int src_stride, int src_format, void *dst, int dst_width, int dst_height, int dst_stride, int dst_format, int mode); + +extern _X_EXPORT int +a8r8g8b8_to_a8b8g8r8_box(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); + +#endif diff --git a/xorg/server/module/rdpClientCon.c b/xorg/server/module/rdpClientCon.c index 35369063..21df291f 100644 --- a/xorg/server/module/rdpClientCon.c +++ b/xorg/server/module/rdpClientCon.c @@ -31,6 +31,7 @@ Client connection to xrdp /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include diff --git a/xorg/server/module/rdpClientCon.h b/xorg/server/module/rdpClientCon.h index a66abbcd..954e3ab0 100644 --- a/xorg/server/module/rdpClientCon.h +++ b/xorg/server/module/rdpClientCon.h @@ -21,6 +21,10 @@ Client connection to xrdp */ +#include +#include +#include + /* in xrdp/common */ #include "xrdp_client_info.h" #include "xrdp_constants.h" @@ -108,55 +112,55 @@ struct _rdpClientCon struct _rdpClientCon *next; }; -int +extern _X_EXPORT int rdpClientConBeginUpdate(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConEndUpdate(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConSetFgcolor(rdpPtr dev, rdpClientCon *clientCon, int fgcolor); -void +extern _X_EXPORT void rdpClientConSendArea(rdpPtr dev, rdpClientCon *clientCon, struct image_data *id, int x, int y, int w, int h); -int +extern _X_EXPORT int rdpClientConFillRect(rdpPtr dev, rdpClientCon *clientCon, short x, short y, int cx, int cy); -int +extern _X_EXPORT int rdpClientConCheck(ScreenPtr pScreen); -int +extern _X_EXPORT int rdpClientConInit(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConDeinit(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConDeleteOsSurface(rdpPtr dev, rdpClientCon *clientCon, int rdpindex); -int +extern _X_EXPORT int rdpClientConRemoveOsBitmap(rdpPtr dev, rdpClientCon *clientCon, int rdpindex); -void +extern _X_EXPORT void rdpClientConScheduleDeferredUpdate(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConCheckDirtyScreen(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConAddDirtyScreenReg(rdpPtr dev, rdpClientCon *clientCon, RegionPtr reg); -int +extern _X_EXPORT int rdpClientConAddDirtyScreenBox(rdpPtr dev, rdpClientCon *clientCon, BoxPtr box); -int +extern _X_EXPORT int rdpClientConAddDirtyScreen(rdpPtr dev, rdpClientCon *clientCon, int x, int y, int cx, int cy); -void +extern _X_EXPORT void rdpClientConGetScreenImageRect(rdpPtr dev, rdpClientCon *clientCon, struct image_data *id); -int +extern _X_EXPORT int rdpClientConAddAllReg(rdpPtr dev, RegionPtr reg, DrawablePtr pDrawable); -int +extern _X_EXPORT int rdpClientConAddAllBox(rdpPtr dev, BoxPtr box, DrawablePtr pDrawable); -int +extern _X_EXPORT int rdpClientConSetCursor(rdpPtr dev, rdpClientCon *clientCon, short x, short y, char *cur_data, char *cur_mask); -int +extern _X_EXPORT int rdpClientConSetCursorEx(rdpPtr dev, rdpClientCon *clientCon, short x, short y, char *cur_data, char *cur_mask, int bpp); diff --git a/xorg/server/module/rdpComposite.c b/xorg/server/module/rdpComposite.c index 7535d6c3..8c65ff1b 100644 --- a/xorg/server/module/rdpComposite.c +++ b/xorg/server/module/rdpComposite.c @@ -27,6 +27,7 @@ composite(alpha blending) calls /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include diff --git a/xorg/server/module/rdpComposite.h b/xorg/server/module/rdpComposite.h index 017cb41d..1c052ed8 100644 --- a/xorg/server/module/rdpComposite.h +++ b/xorg/server/module/rdpComposite.h @@ -24,7 +24,11 @@ composite(alpha blending) calls #ifndef _RDPCOMPOSITE_H #define _RDPCOMPOSITE_H -void +#include +#include +#include + +extern _X_EXPORT void rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height); diff --git a/xorg/server/module/rdpCopyArea.c b/xorg/server/module/rdpCopyArea.c index 708891f6..f135af6e 100644 --- a/xorg/server/module/rdpCopyArea.c +++ b/xorg/server/module/rdpCopyArea.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpCopyArea.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpCopyArea.h b/xorg/server/module/rdpCopyArea.h index 654b6edc..881a8714 100644 --- a/xorg/server/module/rdpCopyArea.h +++ b/xorg/server/module/rdpCopyArea.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPCOPYAREA_H #define __RDPCOPYAREA_H +#include +#include +#include + RegionPtr rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int w, int h, int dstx, int dsty); diff --git a/xorg/server/module/rdpCopyPlane.c b/xorg/server/module/rdpCopyPlane.c index 9ccf4c0a..3ce3d558 100644 --- a/xorg/server/module/rdpCopyPlane.c +++ b/xorg/server/module/rdpCopyPlane.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpCopyPlane.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpCopyPlane.h b/xorg/server/module/rdpCopyPlane.h index 6abd0293..66b372c9 100644 --- a/xorg/server/module/rdpCopyPlane.h +++ b/xorg/server/module/rdpCopyPlane.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPCOPYPLANE_H #define __RDPCOPYPLANE_H +#include +#include +#include + RegionPtr rdpCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, int srcx, int srcy, int width, int height, diff --git a/xorg/server/module/rdpCursor.c b/xorg/server/module/rdpCursor.c index d4862df7..f85999de 100644 --- a/xorg/server/module/rdpCursor.c +++ b/xorg/server/module/rdpCursor.c @@ -27,6 +27,7 @@ cursor /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -45,6 +46,7 @@ cursor #include "rdpMain.h" #include "rdpDraw.h" #include "rdpClientCon.h" +#include "rdpCursor.h" #ifndef X_BYTE_ORDER #warning X_BYTE_ORDER not defined diff --git a/xorg/server/module/rdpCursor.h b/xorg/server/module/rdpCursor.h index 10a57d70..1be09f61 100644 --- a/xorg/server/module/rdpCursor.h +++ b/xorg/server/module/rdpCursor.h @@ -25,20 +25,21 @@ misc draw calls #define __RDPCURSOR_H #include +#include #include -Bool +extern _X_EXPORT Bool rdpSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs); -Bool +extern _X_EXPORT Bool rdpSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs); -void +extern _X_EXPORT void rdpSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs, int x, int y); -void +extern _X_EXPORT void rdpSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScr, int x, int y); -Bool +extern _X_EXPORT Bool rdpSpriteDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScr); -void +extern _X_EXPORT void rdpSpriteDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScr); #endif diff --git a/xorg/server/module/rdpDraw.h b/xorg/server/module/rdpDraw.h index af65b46c..583ac7d1 100644 --- a/xorg/server/module/rdpDraw.h +++ b/xorg/server/module/rdpDraw.h @@ -65,29 +65,29 @@ do { \ extern GCOps g_rdpGCOps; /* in rdpGC.c */ -int +extern _X_EXPORT int rdpDrawGetClip(rdpPtr dev, RegionPtr pRegion, DrawablePtr pDrawable, GCPtr pGC); -void +extern _X_EXPORT void GetTextBoundingBox(DrawablePtr pDrawable, FontPtr font, int x, int y, int n, BoxPtr pbox); -int +extern _X_EXPORT int rdpDrawItemAdd(rdpPtr dev, rdpPixmapRec *priv, struct rdp_draw_item *di); -int +extern _X_EXPORT int rdpDrawItemRemove(rdpPtr dev, rdpPixmapRec *priv, struct rdp_draw_item *di); -int +extern _X_EXPORT int rdpDrawItemRemoveAll(rdpPtr dev, rdpPixmapRec *priv); -void +extern _X_EXPORT void rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion); #if XRDP_CLOSESCR == 1 -Bool +extern _X_EXPORT Bool rdpCloseScreen(int index, ScreenPtr pScreen); #else -Bool +extern _X_EXPORT Bool rdpCloseScreen(ScreenPtr pScreen); #endif -WindowPtr +extern _X_EXPORT WindowPtr rdpGetRootWindowPtr(ScreenPtr pScreen); -rdpPtr +extern _X_EXPORT rdpPtr rdpGetDevFromScreen(ScreenPtr pScreen); #endif diff --git a/xorg/server/module/rdpFillPolygon.c b/xorg/server/module/rdpFillPolygon.c index 34fe4096..fdcc3472 100644 --- a/xorg/server/module/rdpFillPolygon.c +++ b/xorg/server/module/rdpFillPolygon.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpFillPolygon.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpFillPolygon.h b/xorg/server/module/rdpFillPolygon.h index cdbfb13a..6c929dd9 100644 --- a/xorg/server/module/rdpFillPolygon.h +++ b/xorg/server/module/rdpFillPolygon.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPFILLPOLYGON_H #define __RDPFILLPOLYGON_H -void +#include +#include +#include + +extern _X_EXPORT void rdpFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, int count, DDXPointPtr pPts); diff --git a/xorg/server/module/rdpFillSpans.c b/xorg/server/module/rdpFillSpans.c index 8e98940a..0afb664d 100644 --- a/xorg/server/module/rdpFillSpans.c +++ b/xorg/server/module/rdpFillSpans.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -32,6 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpFillSpans.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpFillSpans.h b/xorg/server/module/rdpFillSpans.h index 5c1db533..ed1f6331 100644 --- a/xorg/server/module/rdpFillSpans.h +++ b/xorg/server/module/rdpFillSpans.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPFILLSPANS_H #define __RDPFILLSPANS_H +#include +#include +#include + void rdpFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nInit, DDXPointPtr pptInit, int* pwidthInit, int fSorted); diff --git a/xorg/server/module/rdpGC.c b/xorg/server/module/rdpGC.c index f2668f3d..db5983e2 100644 --- a/xorg/server/module/rdpGC.c +++ b/xorg/server/module/rdpGC.c @@ -27,6 +27,7 @@ GC related calls /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -59,6 +60,7 @@ GC related calls #include "rdpPolyGlyphBlt.h" #include "rdpPushPixels.h" #include "rdpDraw.h" +#include "rdpGC.h" /******************************************************************************/ #define LOG_LEVEL 1 diff --git a/xorg/server/module/rdpGC.h b/xorg/server/module/rdpGC.h index fcdd201d..11b0ef8b 100644 --- a/xorg/server/module/rdpGC.h +++ b/xorg/server/module/rdpGC.h @@ -24,7 +24,11 @@ GC related calls #ifndef _RDPGC_H #define _RDPGC_H -Bool +#include +#include +#include + +extern _X_EXPORT Bool rdpCreateGC(GCPtr pGC); #endif diff --git a/xorg/server/module/rdpGlyphs.c b/xorg/server/module/rdpGlyphs.c index e6fcbb30..1f97c3f1 100644 --- a/xorg/server/module/rdpGlyphs.c +++ b/xorg/server/module/rdpGlyphs.c @@ -27,6 +27,7 @@ gylph(font) calls /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include diff --git a/xorg/server/module/rdpGlyphs.h b/xorg/server/module/rdpGlyphs.h index 0128fe7c..cbb2ca8b 100644 --- a/xorg/server/module/rdpGlyphs.h +++ b/xorg/server/module/rdpGlyphs.h @@ -24,6 +24,10 @@ gylph(font) calls #ifndef _RDPGLYPHS_H #define _RDPGLYPHS_H +#include +#include +#include + struct rdp_font_char { int offset; /* x */ @@ -51,9 +55,9 @@ struct rdp_text struct rdp_text* next; }; -int +extern _X_EXPORT int rdpGlyphDeleteRdpText(struct rdp_text* rtext); -void +extern _X_EXPORT void rdpGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists, diff --git a/xorg/server/module/rdpImageGlyphBlt.c b/xorg/server/module/rdpImageGlyphBlt.c index 74693fd9..0d1a7d6e 100644 --- a/xorg/server/module/rdpImageGlyphBlt.c +++ b/xorg/server/module/rdpImageGlyphBlt.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageGlyphBlt.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageGlyphBlt.h b/xorg/server/module/rdpImageGlyphBlt.h index b71e5730..6857ee1b 100644 --- a/xorg/server/module/rdpImageGlyphBlt.h +++ b/xorg/server/module/rdpImageGlyphBlt.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGEGLYPHBLT_H #define __RDPIMAGEGLYPHBLT_H -void +#include +#include +#include + +extern _X_EXPORT void rdpImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr* ppci, pointer pglyphBase); diff --git a/xorg/server/module/rdpImageText16.c b/xorg/server/module/rdpImageText16.c index 7ad8012b..d1038912 100644 --- a/xorg/server/module/rdpImageText16.c +++ b/xorg/server/module/rdpImageText16.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageText16.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageText16.h b/xorg/server/module/rdpImageText16.h index b7d0a861..e2f2b03e 100644 --- a/xorg/server/module/rdpImageText16.h +++ b/xorg/server/module/rdpImageText16.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGETEXT16_H #define __RDPIMAGETEXT16_H -void +#include +#include +#include + +extern _X_EXPORT void rdpImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short* chars); diff --git a/xorg/server/module/rdpImageText8.c b/xorg/server/module/rdpImageText8.c index abcfbff0..068f6d6d 100644 --- a/xorg/server/module/rdpImageText8.c +++ b/xorg/server/module/rdpImageText8.c @@ -25,7 +25,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include - +#include + /* all driver need this */ #include #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageText8.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageText8.h b/xorg/server/module/rdpImageText8.h index cf7dd1bb..fbc67a10 100644 --- a/xorg/server/module/rdpImageText8.h +++ b/xorg/server/module/rdpImageText8.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGETEXT8_H #define __RDPIMAGETEXT8_H -void +#include +#include +#include + +extern _X_EXPORT void rdpImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char* chars); diff --git a/xorg/server/module/rdpInput.c b/xorg/server/module/rdpInput.c index f19b2947..baf1ff3c 100644 --- a/xorg/server/module/rdpInput.c +++ b/xorg/server/module/rdpInput.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -53,6 +54,7 @@ static struct input_proc_list g_input_proc[MAX_INPUT_PROC]; int rdpRegisterInputCallback(int type, rdpInputEventProcPtr proc) { + LLOGLN(0, ("rdpRegisterInputCallback: type %d proc %p", type, proc)); if (type == 0) { g_input_proc[0].proc = proc; @@ -73,12 +75,22 @@ int rdpUnregisterInputCallback(rdpInputEventProcPtr proc) { int index; + char text[256]; + LLOGLN(0, ("rdpUnregisterInputCallback: proc %p", proc)); for (index = 0; index < MAX_INPUT_PROC; index++) { if (g_input_proc[index].proc == proc) { - g_input_proc[index].proc = 0; + if (index == 0) + { + /* hack to cleanup + remove when xrdpdevTearDown is working */ + g_sprintf(text, "/tmp/.xrdp/xrdp_display_%s", display); + LLOGLN(0, ("rdpUnregisterInputCallback: deleting file %s", text)); + unlink(text); + } + g_input_proc[index].proc = 0; return 0; } } diff --git a/xorg/server/module/rdpInput.h b/xorg/server/module/rdpInput.h index c0991ace..98a0c239 100644 --- a/xorg/server/module/rdpInput.h +++ b/xorg/server/module/rdpInput.h @@ -24,23 +24,27 @@ input #ifndef _RDPINPUT_H #define _RDPINPUT_H +#include +#include +#include + typedef int (*rdpInputEventProcPtr)(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpRegisterInputCallback(int type, rdpInputEventProcPtr proc); -int +extern _X_EXPORT int rdpUnregisterInputCallback(rdpInputEventProcPtr proc); -int +extern _X_EXPORT int rdpInputKeyboardEvent(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpInputMouseEvent(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpInputInit(void); #endif diff --git a/xorg/server/module/rdpMain.c b/xorg/server/module/rdpMain.c index 2f6db7c7..835be9db 100644 --- a/xorg/server/module/rdpMain.c +++ b/xorg/server/module/rdpMain.c @@ -27,6 +27,7 @@ rdp module main /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -41,6 +42,7 @@ rdp module main #include "rdpInput.h" #include "rdpDraw.h" #include "rdpClientCon.h" +#include "rdpMain.h" /******************************************************************************/ #define LOG_LEVEL 1 diff --git a/xorg/server/module/rdpMain.h b/xorg/server/module/rdpMain.h index 2d2cfbe1..33fc0e04 100644 --- a/xorg/server/module/rdpMain.h +++ b/xorg/server/module/rdpMain.h @@ -24,7 +24,11 @@ rdp module main #ifndef __RDPMAIN_H #define __RDPMAIN_H -void +#include +#include +#include + +extern _X_EXPORT void xorgxrdpDownDown(ScreenPtr pScreen); #endif diff --git a/xorg/server/module/rdpMisc.c b/xorg/server/module/rdpMisc.c index 653342fe..c7a61fc8 100644 --- a/xorg/server/module/rdpMisc.c +++ b/xorg/server/module/rdpMisc.c @@ -36,11 +36,14 @@ the rest /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include #include +#include "rdpMisc.h" + /******************************************************************************/ int rdpBitsPerPixel(int depth) diff --git a/xorg/server/module/rdpMisc.h b/xorg/server/module/rdpMisc.h index 58f6bd31..07c6ec0d 100644 --- a/xorg/server/module/rdpMisc.h +++ b/xorg/server/module/rdpMisc.h @@ -24,59 +24,63 @@ the rest #ifndef __RDPMISC_H #define __RDPMISC_H +#include +#include +#include + #include -int +extern _X_EXPORT int rdpBitsPerPixel(int depth); -int +extern _X_EXPORT int g_sck_can_recv(int sck, int millis); -int +extern _X_EXPORT int g_sck_recv(int sck, void *ptr, int len, int flags); -void +extern _X_EXPORT void g_sck_close(int sck); -int +extern _X_EXPORT int g_sck_last_error_would_block(int sck); -void +extern _X_EXPORT void g_sleep(int msecs); -int +extern _X_EXPORT int g_sck_send(int sck, void *ptr, int len, int flags); -void * +extern _X_EXPORT void * g_malloc(int size, int zero); -void +extern _X_EXPORT void g_free(void *ptr); -void +extern _X_EXPORT void g_sprintf(char *dest, char *format, ...); -int +extern _X_EXPORT int g_sck_tcp_socket(void); -int +extern _X_EXPORT int g_sck_local_socket_dgram(void); -int +extern _X_EXPORT int g_sck_local_socket_stream(void); -void +extern _X_EXPORT void g_memcpy(void *d_ptr, const void *s_ptr, int size); -void +extern _X_EXPORT void g_memset(void *d_ptr, const unsigned char chr, int size); -int +extern _X_EXPORT int g_sck_tcp_set_no_delay(int sck); -int +extern _X_EXPORT int g_sck_set_non_blocking(int sck); -int +extern _X_EXPORT int g_sck_accept(int sck); -int +extern _X_EXPORT int g_sck_select(int sck1, int sck2, int sck3); -int +extern _X_EXPORT int g_sck_tcp_bind(int sck, char *port); -int +extern _X_EXPORT int g_sck_local_bind(int sck, char *port); -int +extern _X_EXPORT int g_sck_listen(int sck); -int +extern _X_EXPORT int g_create_dir(const char *dirname); -int +extern _X_EXPORT int g_directory_exist(const char *dirname); -int +extern _X_EXPORT int g_chmod_hex(const char *filename, int flags); -void +extern _X_EXPORT void g_hexdump(void *p, long len); #if defined(X_BYTE_ORDER) diff --git a/xorg/server/module/rdpPixmap.h b/xorg/server/module/rdpPixmap.h index 7fce3186..e1c7c7ac 100644 --- a/xorg/server/module/rdpPixmap.h +++ b/xorg/server/module/rdpPixmap.h @@ -26,6 +26,7 @@ pixmap calls #include #include +#include #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 5, 0, 0, 0) /* 1.1, 1.2, 1.3, 1.4 */ @@ -36,16 +37,16 @@ pixmap calls #endif #if XRDP_PIX == 2 -PixmapPtr +extern _X_EXPORT PixmapPtr rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, unsigned usage_hint); #else -PixmapPtr +extern _X_EXPORT PixmapPtr rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth); #endif -Bool +extern _X_EXPORT Bool rdpDestroyPixmap(PixmapPtr pPixmap); -Bool +extern _X_EXPORT Bool rdpModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, int bitsPerPixel, int devKind, pointer pPixData); diff --git a/xorg/server/module/rdpPolyArc.c b/xorg/server/module/rdpPolyArc.c index 9a701dd8..8db3cffe 100644 --- a/xorg/server/module/rdpPolyArc.c +++ b/xorg/server/module/rdpPolyArc.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyArc.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyArc.h b/xorg/server/module/rdpPolyArc.h index 7ebadc35..9af6566f 100644 --- a/xorg/server/module/rdpPolyArc.h +++ b/xorg/server/module/rdpPolyArc.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYARC_H #define __RDPPOLYARC_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc* parcs); #endif diff --git a/xorg/server/module/rdpPolyFillArc.c b/xorg/server/module/rdpPolyFillArc.c index 437929ae..2ba49854 100644 --- a/xorg/server/module/rdpPolyFillArc.c +++ b/xorg/server/module/rdpPolyFillArc.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyFillArc.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyFillArc.h b/xorg/server/module/rdpPolyFillArc.h index 9a9846e1..708f8eae 100644 --- a/xorg/server/module/rdpPolyFillArc.h +++ b/xorg/server/module/rdpPolyFillArc.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYFILLARC_H #define __RDPPOLYFILLARC_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc* parcs); #endif diff --git a/xorg/server/module/rdpPolyFillRect.c b/xorg/server/module/rdpPolyFillRect.c index f61202b2..1b99b1e8 100644 --- a/xorg/server/module/rdpPolyFillRect.c +++ b/xorg/server/module/rdpPolyFillRect.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyFillRect.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyFillRect.h b/xorg/server/module/rdpPolyFillRect.h index 94ac4b59..ab2c3c5f 100644 --- a/xorg/server/module/rdpPolyFillRect.h +++ b/xorg/server/module/rdpPolyFillRect.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYFILLRECT_H #define __RDPPOLYFILLRECT_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle* prectInit); diff --git a/xorg/server/module/rdpPolyGlyphBlt.c b/xorg/server/module/rdpPolyGlyphBlt.c index e43e676b..df48dcd4 100644 --- a/xorg/server/module/rdpPolyGlyphBlt.c +++ b/xorg/server/module/rdpPolyGlyphBlt.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyGlyphBlt.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyGlyphBlt.h b/xorg/server/module/rdpPolyGlyphBlt.h index 46ce1ac2..92b2dfbe 100644 --- a/xorg/server/module/rdpPolyGlyphBlt.h +++ b/xorg/server/module/rdpPolyGlyphBlt.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYGLYPHBLT_H #define __RDPPOLYGLYPHBLT_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr* ppci, pointer pglyphBase); diff --git a/xorg/server/module/rdpPolyPoint.c b/xorg/server/module/rdpPolyPoint.c index 5dfac5ef..9624f829 100644 --- a/xorg/server/module/rdpPolyPoint.c +++ b/xorg/server/module/rdpPolyPoint.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyPoint.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyPoint.h b/xorg/server/module/rdpPolyPoint.h index 06d1d428..9acc4d10 100644 --- a/xorg/server/module/rdpPolyPoint.h +++ b/xorg/server/module/rdpPolyPoint.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYPOINT_H #define __RDPPOLYPOINT_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr in_pts); diff --git a/xorg/server/module/rdpPolyRectangle.c b/xorg/server/module/rdpPolyRectangle.c index 18311907..946e798a 100644 --- a/xorg/server/module/rdpPolyRectangle.c +++ b/xorg/server/module/rdpPolyRectangle.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyRectangle.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyRectangle.h b/xorg/server/module/rdpPolyRectangle.h index d09446d5..6cd190d9 100644 --- a/xorg/server/module/rdpPolyRectangle.h +++ b/xorg/server/module/rdpPolyRectangle.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYRECTANGLE_H #define __RDPPOLYRECTANGLE_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nrects, xRectangle* rects); diff --git a/xorg/server/module/rdpPolySegment.c b/xorg/server/module/rdpPolySegment.c index 98e4eb1f..ad01bda1 100644 --- a/xorg/server/module/rdpPolySegment.c +++ b/xorg/server/module/rdpPolySegment.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolySegment.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolySegment.h b/xorg/server/module/rdpPolySegment.h index 104fc37d..37756ae1 100644 --- a/xorg/server/module/rdpPolySegment.h +++ b/xorg/server/module/rdpPolySegment.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYSEGMENT_H #define __RDPPOLYSEGMENT_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment* pSegs); #endif diff --git a/xorg/server/module/rdpPolyText16.c b/xorg/server/module/rdpPolyText16.c index 90d68a8c..eaa34323 100644 --- a/xorg/server/module/rdpPolyText16.c +++ b/xorg/server/module/rdpPolyText16.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyText16.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyText16.h b/xorg/server/module/rdpPolyText16.h index 9719a890..c94a8fd9 100644 --- a/xorg/server/module/rdpPolyText16.h +++ b/xorg/server/module/rdpPolyText16.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYTEXT16_H #define __RDPPOLYTEXT16_H -int +#include +#include +#include + +extern _X_EXPORT int rdpPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short* chars); diff --git a/xorg/server/module/rdpPolyText8.c b/xorg/server/module/rdpPolyText8.c index 630bc04e..aa744b59 100644 --- a/xorg/server/module/rdpPolyText8.c +++ b/xorg/server/module/rdpPolyText8.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyText8.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyText8.h b/xorg/server/module/rdpPolyText8.h index 621251b9..64ce2f3e 100644 --- a/xorg/server/module/rdpPolyText8.h +++ b/xorg/server/module/rdpPolyText8.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYTEXT8_H #define __RDPPOLYTEXT8_H +#include +#include +#include + int rdpPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char* chars); diff --git a/xorg/server/module/rdpPolylines.c b/xorg/server/module/rdpPolylines.c index da979e9f..cd87ecf3 100644 --- a/xorg/server/module/rdpPolylines.c +++ b/xorg/server/module/rdpPolylines.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolylines.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolylines.h b/xorg/server/module/rdpPolylines.h index 56b66a77..db11d69c 100644 --- a/xorg/server/module/rdpPolylines.h +++ b/xorg/server/module/rdpPolylines.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYLINES_H #define __RDPPOLYLINES_H +#include +#include +#include + void rdpPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit); diff --git a/xorg/server/module/rdpPri.h b/xorg/server/module/rdpPri.h index 97e570f5..f312c88c 100644 --- a/xorg/server/module/rdpPri.h +++ b/xorg/server/module/rdpPri.h @@ -24,24 +24,28 @@ to deal with privates changing in xorg versions #ifndef _XRDPPRI_H #define _XRDPPRI_H +#include +#include +#include + #include #include typedef void* rdpDevPrivateKey; -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocateGCPrivate(ScreenPtr pScreen, int bytes); -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocatePixmapPrivate(ScreenPtr pScreen, int bytes); -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocateWindowPrivate(ScreenPtr pScreen, int bytes); -void* +extern _X_EXPORT void* rdpGetGCPrivate(GCPtr pGC, rdpDevPrivateKey key); -void* +extern _X_EXPORT void* rdpGetPixmapPrivate(PixmapPtr pPixmap, rdpDevPrivateKey key); -void* +extern _X_EXPORT void* rdpGetWindowPrivate(WindowPtr pWindow, rdpDevPrivateKey key); -int +extern _X_EXPORT int rdpPrivateInit(void); #endif diff --git a/xorg/server/module/rdpPushPixels.c b/xorg/server/module/rdpPushPixels.c index 8ab046b8..902b4251 100644 --- a/xorg/server/module/rdpPushPixels.c +++ b/xorg/server/module/rdpPushPixels.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -32,13 +33,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpPushPixels.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ do { if (_level < LOG_LEVEL) { ErrorF _args ; ErrorF("\n"); } } while (0) /******************************************************************************/ -void +static void rdpPushPixelsOrg(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y) { diff --git a/xorg/server/module/rdpPushPixels.h b/xorg/server/module/rdpPushPixels.h index a3e49482..afc336de 100644 --- a/xorg/server/module/rdpPushPixels.h +++ b/xorg/server/module/rdpPushPixels.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPUSHPIXELS_H #define __RDPPUSHPIXELS_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y); diff --git a/xorg/server/module/rdpPutImage.c b/xorg/server/module/rdpPutImage.c index b7134479..39bf284e 100644 --- a/xorg/server/module/rdpPutImage.c +++ b/xorg/server/module/rdpPutImage.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPutImage.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPutImage.h b/xorg/server/module/rdpPutImage.h index f50a9528..2df9a801 100644 --- a/xorg/server/module/rdpPutImage.h +++ b/xorg/server/module/rdpPutImage.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPUTIMAGE_H #define __RDPPUTIMAGE_H -void +#include +#include +#include + +extern _X_EXPORT void rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, int w, int h, int leftPad, int format, char* pBits); diff --git a/xorg/server/module/rdpRandR.c b/xorg/server/module/rdpRandR.c index 37577645..049aafab 100644 --- a/xorg/server/module/rdpRandR.c +++ b/xorg/server/module/rdpRandR.c @@ -42,6 +42,7 @@ RandR draw calls #include "rdpDraw.h" #include "rdpReg.h" #include "rdpMisc.h" +#include "rdpRandR.h" /******************************************************************************/ #define LOG_LEVEL 1 @@ -119,8 +120,9 @@ rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height, pScreen->mmWidth = mmWidth; pScreen->mmHeight = mmHeight; screenPixmap = pScreen->GetScreenPixmap(pScreen); - g_free(dev->pfbMemory); - dev->pfbMemory = (char *) g_malloc(dev->sizeInBytes, 1); + g_free(dev->pfbMemory_alloc); + dev->pfbMemory_alloc = (char *) g_malloc(dev->sizeInBytes + 16, 1); + dev->pfbMemory = (char *) RDPALIGN(dev->pfbMemory_alloc, 16); if (screenPixmap != 0) { pScreen->ModifyPixmapHeader(screenPixmap, width, height, diff --git a/xorg/server/module/rdpRandR.h b/xorg/server/module/rdpRandR.h index caadf336..ab31e345 100644 --- a/xorg/server/module/rdpRandR.h +++ b/xorg/server/module/rdpRandR.h @@ -22,38 +22,42 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _RDPRANDR_H #define _RDPRANDR_H -Bool +#include +#include +#include + +extern _X_EXPORT Bool rdpRRRegisterSize(ScreenPtr pScreen, int width, int height); -Bool +extern _X_EXPORT Bool rdpRRGetInfo(ScreenPtr pScreen, Rotation* pRotations); -Bool +extern _X_EXPORT Bool rdpRRSetConfig(ScreenPtr pScreen, Rotation rotateKind, int rate, RRScreenSizePtr pSize); -Bool +extern _X_EXPORT Bool rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight); -Bool +extern _X_EXPORT Bool rdpRRCrtcSet(ScreenPtr pScreen, RRCrtcPtr crtc, RRModePtr mode, int x, int y, Rotation rotation, int numOutputs, RROutputPtr* outputs); -Bool +extern _X_EXPORT Bool rdpRRCrtcSetGamma(ScreenPtr pScreen, RRCrtcPtr crtc); -Bool +extern _X_EXPORT Bool rdpRRCrtcGetGamma(ScreenPtr pScreen, RRCrtcPtr crtc); -Bool +extern _X_EXPORT Bool rdpRROutputSetProperty(ScreenPtr pScreen, RROutputPtr output, Atom property, RRPropertyValuePtr value); -Bool +extern _X_EXPORT Bool rdpRROutputValidateMode(ScreenPtr pScreen, RROutputPtr output, RRModePtr mode); -void +extern _X_EXPORT void rdpRRModeDestroy(ScreenPtr pScreen, RRModePtr mode); -Bool +extern _X_EXPORT Bool rdpRROutputGetProperty(ScreenPtr pScreen, RROutputPtr output, Atom property); -Bool +extern _X_EXPORT Bool rdpRRGetPanning(ScreenPtr pScrn, RRCrtcPtr crtc, BoxPtr totalArea, BoxPtr trackingArea, INT16* border); -Bool +extern _X_EXPORT Bool rdpRRSetPanning(ScreenPtr pScrn, RRCrtcPtr crtc, BoxPtr totalArea, BoxPtr trackingArea, INT16* border); diff --git a/xorg/server/module/rdpReg.c b/xorg/server/module/rdpReg.c index 8ff7d79d..30b13438 100644 --- a/xorg/server/module/rdpReg.c +++ b/xorg/server/module/rdpReg.c @@ -33,6 +33,8 @@ to deal with regions changing in xorg versions #include #include +#include "rdpReg.h" + /* miRegionCopy -> RegionCopy miTranslateRegion -> RegionTranslate diff --git a/xorg/server/module/rdpReg.h b/xorg/server/module/rdpReg.h index a5cd73bf..053cf6dd 100644 --- a/xorg/server/module/rdpReg.h +++ b/xorg/server/module/rdpReg.h @@ -24,41 +24,45 @@ to deal with regions changing in xorg versions #ifndef __RDPREG_H #define __RDPREG_H -Bool +#include +#include +#include + +extern _X_EXPORT Bool rdpRegionCopy(RegionPtr dst, RegionPtr src); -void +extern _X_EXPORT void rdpRegionTranslate(RegionPtr pReg, int x, int y); -Bool +extern _X_EXPORT Bool rdpRegionNotEmpty(RegionPtr pReg); -Bool +extern _X_EXPORT Bool rdpRegionIntersect(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -int +extern _X_EXPORT int rdpRegionContainsRect(RegionPtr region, BoxPtr prect); -void +extern _X_EXPORT void rdpRegionInit(RegionPtr pReg, BoxPtr rect, int size); -void +extern _X_EXPORT void rdpRegionUninit(RegionPtr pReg); -RegionPtr +extern _X_EXPORT RegionPtr rdpRegionFromRects(int nrects, xRectanglePtr prect, int ctype); -void +extern _X_EXPORT void rdpRegionDestroy(RegionPtr pReg); -RegionPtr +extern _X_EXPORT RegionPtr rdpRegionCreate(BoxPtr rect, int size); -Bool +extern _X_EXPORT Bool rdpRegionUnion(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -Bool +extern _X_EXPORT Bool rdpRegionSubtract(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -Bool +extern _X_EXPORT Bool rdpRegionInverse(RegionPtr newReg, RegionPtr reg1, BoxPtr invRect); -BoxPtr +extern _X_EXPORT BoxPtr rdpRegionExtents(RegionPtr pReg); -void +extern _X_EXPORT void rdpRegionReset(RegionPtr pReg, BoxPtr pBox); -Bool +extern _X_EXPORT Bool rdpRegionBreak(RegionPtr pReg); -void +extern _X_EXPORT void rdpRegionUnionRect(RegionPtr pReg, BoxPtr prect); -int +extern _X_EXPORT int rdpRegionPixelCount(RegionPtr pReg); #endif diff --git a/xorg/server/module/rdpSetSpans.c b/xorg/server/module/rdpSetSpans.c index e31ec6d4..3cb30321 100644 --- a/xorg/server/module/rdpSetSpans.c +++ b/xorg/server/module/rdpSetSpans.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -32,6 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpSetSpans.h" #define LDEBUG 0 diff --git a/xorg/server/module/rdpSetSpans.h b/xorg/server/module/rdpSetSpans.h index c6f73642..3b277f92 100644 --- a/xorg/server/module/rdpSetSpans.h +++ b/xorg/server/module/rdpSetSpans.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPSETSPANS_H #define __RDPSETSPANS_H -void +#include +#include +#include + +extern _X_EXPORT void rdpSetSpans(DrawablePtr pDrawable, GCPtr pGC, char* psrc, DDXPointPtr ppt, int* pwidth, int nspans, int fSorted); diff --git a/xorg/server/module/rdpSimd.c b/xorg/server/module/rdpSimd.c index 7215bf86..be4bc736 100644 --- a/xorg/server/module/rdpSimd.c +++ b/xorg/server/module/rdpSimd.c @@ -35,6 +35,8 @@ SIMD function asign #include "rdp.h" #include "rdpXv.h" +#include "rdpCapture.h" +#include "rdpSimd.h" /* use simd, run time */ int g_simd_use_accel = 1; @@ -65,6 +67,11 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev = XRDPPTR(pScrn); /* assign functions */ LLOGLN(0, ("rdpSimdInit: assigning yuv functions")); + dev->yv12_to_rgb32 = YV12_to_RGB32; + dev->i420_to_rgb32 = I420_to_RGB32; + dev->yuy2_to_rgb32 = YUY2_to_RGB32; + dev->uyvy_to_rgb32 = UYVY_to_RGB32; + dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box; #if SIMD_USE_ACCEL if (g_simd_use_accel) { @@ -81,14 +88,6 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev->uyvy_to_rgb32 = uyvy_to_rgb32_amd64_sse2; LLOGLN(0, ("rdpSimdInit: sse2 amd64 yuv functions assigned")); } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } #elif defined(__x86__) || defined(_M_IX86) || defined(__i386__) int ax, bx, cx, dx; cpuid_x86(1, 0, &ax, &bx, &cx, &dx); @@ -100,38 +99,11 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev->i420_to_rgb32 = i420_to_rgb32_x86_sse2; dev->yuy2_to_rgb32 = yuy2_to_rgb32_x86_sse2; dev->uyvy_to_rgb32 = uyvy_to_rgb32_x86_sse2; + dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box_x86_sse2; LLOGLN(0, ("rdpSimdInit: sse2 x86 yuv functions assigned")); } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } -#else - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); #endif } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } -#else - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); #endif return 1; } diff --git a/xorg/server/module/rdpSimd.h b/xorg/server/module/rdpSimd.h index 73bf1ba5..f73e110f 100644 --- a/xorg/server/module/rdpSimd.h +++ b/xorg/server/module/rdpSimd.h @@ -28,7 +28,7 @@ SIMD function asign #include #include -Bool +extern _X_EXPORT Bool rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn); #endif diff --git a/xorg/server/module/rdpTrapezoids.c b/xorg/server/module/rdpTrapezoids.c index 212780ce..41304a71 100644 --- a/xorg/server/module/rdpTrapezoids.c +++ b/xorg/server/module/rdpTrapezoids.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include diff --git a/xorg/server/module/rdpTrapezoids.h b/xorg/server/module/rdpTrapezoids.h index 77738dc4..a98cacd3 100644 --- a/xorg/server/module/rdpTrapezoids.h +++ b/xorg/server/module/rdpTrapezoids.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _RDPTRAPEZOIDS_H #define _RDPTRAPEZOIDS_H -void +#include +#include +#include + +extern _X_EXPORT void rdpTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps); diff --git a/xorg/server/module/rdpXv.c b/xorg/server/module/rdpXv.c index 1557f892..15375720 100644 --- a/xorg/server/module/rdpXv.c +++ b/xorg/server/module/rdpXv.c @@ -43,6 +43,7 @@ XVideo #include "rdpMisc.h" #include "rdpReg.h" #include "rdpClientCon.h" +#include "rdpXv.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ @@ -502,6 +503,7 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, rgbend32 = rgborg32 + width * height; rgbend32 = (int *) RDPALIGN(rgbend32, 16); error = 0; + switch (format) { case FOURCC_YV12: @@ -528,12 +530,21 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, { return Success; } - error = stretch_RGB32_RGB32(rgborg32, width, height, - src_x, src_y, src_w, src_h, - rgbend32, drw_w, drw_h); - if (error != 0) + if ((width == drw_w) && (height == drw_h)) { - return Success; + LLOGLN(10, ("xrdpVidPutImage: strech skip")); + rgbend32 = rgborg32; + } + else + { + error = stretch_RGB32_RGB32(rgborg32, width, height, + src_x, src_y, src_w, src_h, + rgbend32, drw_w, drw_h); + if (error != 0) + { + return Success; + } + } tempGC = GetScratchGC(dst->depth, pScrn->pScreen); @@ -542,7 +553,8 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, ValidateGC(dst, tempGC); (*tempGC->ops->PutImage)(dst, tempGC, 24, drw_x - dst->x, drw_y - dst->y, - drw_w, drw_h, 0, ZPixmap, (char*)rgbend32); + drw_w, drw_h, 0, ZPixmap, + (char *) rgbend32); FreeScratchGC(tempGC); } diff --git a/xorg/server/module/rdpXv.h b/xorg/server/module/rdpXv.h index 9cf28700..2dbbc729 100644 --- a/xorg/server/module/rdpXv.h +++ b/xorg/server/module/rdpXv.h @@ -28,16 +28,15 @@ XVideo #include #include -Bool +extern _X_EXPORT Bool rdpXvInit(ScreenPtr pScreen, ScrnInfoPtr pScrn); - -int +extern _X_EXPORT int YV12_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int I420_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int YUY2_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int UYVY_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); #endif diff --git a/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm b/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm new file mode 100644 index 00000000..72563214 --- /dev/null +++ b/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm @@ -0,0 +1,174 @@ +; +;Copyright 2014 Jay Sorg +; +;Permission to use, copy, modify, distribute, and sell this software and its +;documentation for any purpose is hereby granted without fee, provided that +;the above copyright notice appear in all copies and that both that +;copyright notice and this permission notice appear in supporting +;documentation. +; +;The above copyright notice and this permission notice shall be included in +;all copies or substantial portions of the Software. +; +;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +;OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +;AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +;CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +; +;ARGB to ABGR +;x86 SSE2 32 bit +; + +SECTION .data +align 16 +c1 times 4 dd 0xFF00FF00 +c2 times 4 dd 0x00FF0000 +c3 times 4 dd 0x000000FF + +SECTION .text + +%macro PROC 1 + align 16 + global %1 + %1: +%endmacro + +;int +;a8r8g8b8_to_a8b8g8r8_box_x86_sse2(char *s8, int src_stride, +; char *d8, int dst_stride, +; int width, int height); +PROC a8r8g8b8_to_a8b8g8r8_box_x86_sse2 + push ebx + push esi + push edi + push ebp + + movdqa xmm4, [c1] + movdqa xmm5, [c2] + movdqa xmm6, [c3] + + mov esi, [esp + 20] ; src + mov edi, [esp + 28] ; dst + +loop_y: + mov ecx, [esp + 36] ; width + +loop_xpre: + mov eax, esi ; look for aligned + and eax, 0x0F ; we can jump to next + mov ebx, eax + mov eax, edi + and eax, 0x0F + or eax, ebx + cmp eax, 0 + je done_loop_xpre + cmp ecx, 1 + jl done_loop_x ; all done with this row + mov eax, [esi] + lea esi, [esi + 4] + mov edx, eax ; a and g + and edx, 0xFF00FF00 + mov ebx, eax ; r + and ebx, 0x00FF0000 + shr ebx, 16 + or edx, ebx + mov ebx, eax ; b + and ebx, 0x000000FF + shl ebx, 16 + or edx, ebx + mov [edi], edx + lea edi, [edi + 4] + dec ecx + jmp loop_xpre; +done_loop_xpre: + + prefetchnta [esi] + +; A R G B A R G B A R G B A R G B to +; A B G R A B G R A B G R A B G R + +loop_x8: + cmp ecx, 8 + jl done_loop_x8 + + prefetchnta [esi + 32] + + movdqa xmm0, [esi] + lea esi, [esi + 16] + movdqa xmm3, xmm0 ; a and g + pand xmm3, xmm4 + movdqa xmm1, xmm0 ; r + pand xmm1, xmm5 + psrld xmm1, 16 + por xmm3, xmm1 + movdqa xmm1, xmm0 ; b + pand xmm1, xmm6 + pslld xmm1, 16 + por xmm3, xmm1 + movdqa [edi], xmm3 + lea edi, [edi + 16] + sub ecx, 4 + + movdqa xmm0, [esi] + lea esi, [esi + 16] + movdqa xmm3, xmm0 ; a and g + pand xmm3, xmm4 + movdqa xmm1, xmm0 ; r + pand xmm1, xmm5 + psrld xmm1, 16 + por xmm3, xmm1 + movdqa xmm1, xmm0 ; b + pand xmm1, xmm6 + pslld xmm1, 16 + por xmm3, xmm1 + movdqa [edi], xmm3 + lea edi, [edi + 16] + sub ecx, 4 + + jmp loop_x8; +done_loop_x8: + +loop_x: + cmp ecx, 1 + jl done_loop_x + mov eax, [esi] + lea esi, [esi + 4] + mov edx, eax ; a and g + and edx, 0xFF00FF00 + mov ebx, eax ; r + and ebx, 0x00FF0000 + shr ebx, 16 + or edx, ebx + mov ebx, eax ; b + and ebx, 0x000000FF + shl ebx, 16 + or edx, ebx + mov [edi], edx + lea edi, [edi + 4] + dec ecx + jmp loop_x; +done_loop_x: + + mov esi, [esp + 20] + add esi, [esp + 24] + mov [esp + 20], esi + + mov edi, [esp + 28] + add edi, [esp + 32] + mov [esp + 28], edi + + mov ecx, [esp + 40] ; height + dec ecx + mov [esp + 40], ecx + jnz loop_y + + mov eax, 0 ; return value + pop ebp + pop edi + pop esi + pop ebx + ret + align 16 + diff --git a/xorg/server/module/x86/funcs_x86.h b/xorg/server/module/x86/funcs_x86.h index 00724e62..775dd12d 100644 --- a/xorg/server/module/x86/funcs_x86.h +++ b/xorg/server/module/x86/funcs_x86.h @@ -34,6 +34,10 @@ int yuy2_to_rgb32_x86_sse2(unsigned char *yuvs, int width, int height, int *rgbs); int uyvy_to_rgb32_x86_sse2(unsigned char *yuvs, int width, int height, int *rgbs); +int +a8r8g8b8_to_a8b8g8r8_box_x86_sse2(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); #endif diff --git a/xorg/server/readme.txt b/xorg/server/readme.txt index 28bbc692..13fd064e 100644 --- a/xorg/server/readme.txt +++ b/xorg/server/readme.txt @@ -1,4 +1,46 @@ +------------------------------------------------------ +11/01/2014 +------------------------------------------------------ + +There are four modules built for the Xorg driver model and one configuration file +This works best with newer Xorg installs, xserver 1.10 +, example Debian 7 +, Ubuntu 12.04 + + +To see what version you have, run +xdpyinfo | grep version: +or +dpkg -l | grep xserver-xorg-core +or +yum list | grep xorg-x11-server-Xorg + +It should compile with older version and may run but may be problems. +Usually, the problems are related to startup / login. + +autotools should build and install them + +./bootstrap +./configure +make +sudo make install + +This should install the following... + +libxorgxrdp.so goes in /usr/lib/xorg/modules/ +xrdpdev_drv.so goes in /usr/lib/xorg/modules/drivers/ +xrdpkeyb_drv.so goes in /usr/lib/xorg/modules/input/ +xrdpmouse_drv.so goes in /usr/lib/xorg/modules/input/ +xorg.conf goes in /etc/X11/xrdp/ + +with all these components in place, you can start Xorg with the xrdp modules with +Xorg -config xrdp/xorg.conf -logfile /tmp/Xtmp.log -noreset -ac :10 +or +Xorg -config xrdp/xorg.conf -logfile /dev/null -noreset -ac :10 + + + + +older notes + ------------------------------------------------------ Notes for building xrdpdev_drv.so and libxorgxrdp.so ------------------------------------------------------ diff --git a/xorg/server/xrdpdev/Makefile b/xorg/server/xrdpdev/Makefile deleted file mode 100644 index bd17699f..00000000 --- a/xorg/server/xrdpdev/Makefile +++ /dev/null @@ -1,17 +0,0 @@ - -OBJS = xrdpdev.o - -CFLAGS = -g -O2 -Wall -fPIC -I/usr/include/xorg -I/usr/include/pixman-1 \ --I../module -I../../../common - -LDFLAGS = - -LIBS = - -all: xrdpdev_drv.so - -xrdpdev_drv.so: $(OBJS) Makefile - $(CC) -shared -o xrdpdev_drv.so $(LDFLAGS) $(OBJS) $(LIBS) - -clean: - rm -f $(OBJS) xrdpdev_drv.so diff --git a/xorg/server/xrdpdev/Makefile.am b/xorg/server/xrdpdev/Makefile.am new file mode 100644 index 00000000..be7f3689 --- /dev/null +++ b/xorg/server/xrdpdev/Makefile.am @@ -0,0 +1,17 @@ +EXTRA_DIST = \ + xorg.conf + +AM_CFLAGS = \ + $(XORG_SERVER_CFLAGS) \ + -I../module \ + -I../../../common + +xrdpdev_drv_la_LTLIBRARIES = xrdpdev_drv.la + +xrdpdev_drv_la_LDFLAGS = -module -avoid-version + +xrdpdev_drv_ladir = $(moduledir)/drivers + +xrdpdev_drv_la_SOURCES = xrdpdev.c + +xrdpdev_drv_la_LIBADD = diff --git a/xorg/server/xrdpdev/xrdpdev.c b/xorg/server/xrdpdev/xrdpdev.c index 5a863f00..29de4688 100644 --- a/xorg/server/xrdpdev/xrdpdev.c +++ b/xorg/server/xrdpdev/xrdpdev.c @@ -322,7 +322,7 @@ rdpDeferredRandR(OsTimerPtr timer, CARD32 now, pointer arg) pScreen = (ScreenPtr) arg; dev = rdpGetDevFromScreen(pScreen); - LLOGLN(10, ("rdpDeferredRandR:")); + LLOGLN(0, ("rdpDeferredRandR:")); pRRScrPriv = rrGetScrPriv(pScreen); if (pRRScrPriv == 0) { @@ -436,7 +436,9 @@ rdpScreenInit(ScreenPtr pScreen, int argc, char **argv) dev->bitsPerPixel = rdpBitsPerPixel(dev->depth); dev->sizeInBytes = dev->paddedWidthInBytes * dev->height; LLOGLN(0, ("rdpScreenInit: pfbMemory bytes %d", dev->sizeInBytes)); - dev->pfbMemory = (char *) g_malloc(dev->sizeInBytes, 1); + dev->pfbMemory_alloc = (char *) g_malloc(dev->sizeInBytes + 16, 1); + dev->pfbMemory = (char*) RDPALIGN(dev->pfbMemory_alloc, 16); + LLOGLN(0, ("rdpScreenInit: pfbMemory %p", dev->pfbMemory)); if (!fbScreenInit(pScreen, dev->pfbMemory, pScrn->virtualX, pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, @@ -619,6 +621,17 @@ rdpValidMode(ScrnInfoPtr a, DisplayModePtr b, Bool c, int d) return 0; } +/*****************************************************************************/ +static void +#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) +rdpFreeScreen(int a, int b) +#else +rdpFreeScreen(ScrnInfoPtr a) +#endif +{ + LLOGLN(0, ("rdpFreeScreen:")); +} + /*****************************************************************************/ static Bool rdpProbe(DriverPtr drv, int flags) @@ -670,7 +683,7 @@ rdpProbe(DriverPtr drv, int flags) pscrn->EnterVT = rdpEnterVT; pscrn->LeaveVT = rdpLeaveVT; pscrn->ValidMode = rdpValidMode; - + pscrn->FreeScreen = rdpFreeScreen; xf86DrvMsg(pscrn->scrnIndex, X_INFO, "%s", "using default device\n"); } } diff --git a/xorg/server/xrdpkeyb/Makefile b/xorg/server/xrdpkeyb/Makefile deleted file mode 100644 index 8c81fcee..00000000 --- a/xorg/server/xrdpkeyb/Makefile +++ /dev/null @@ -1,17 +0,0 @@ - -OBJS = rdpKeyboard.o - -CFLAGS = -g -O2 -Wall -fPIC -I/usr/include/xorg -I/usr/include/pixman-1 \ --I../module -I../../../common - -LDFLAGS = - -LIBS = - -all: xrdpkeyb_drv.so - -xrdpkeyb_drv.so: $(OBJS) Makefile - $(CC) -shared -o xrdpkeyb_drv.so $(LDFLAGS) $(OBJS) $(LIBS) - -clean: - rm -f $(OBJS) xrdpkeyb_drv.so diff --git a/xorg/server/xrdpkeyb/Makefile.am b/xorg/server/xrdpkeyb/Makefile.am new file mode 100644 index 00000000..f79f7af2 --- /dev/null +++ b/xorg/server/xrdpkeyb/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = + +AM_CFLAGS = \ + $(XORG_SERVER_CFLAGS) \ + -I../module \ + -I../../../common + +xrdpkeyb_drv_la_LTLIBRARIES = xrdpkeyb_drv.la + +xrdpkeyb_drv_la_LDFLAGS = -module -avoid-version + +xrdpkeyb_drv_ladir = $(moduledir)/input + +xrdpkeyb_drv_la_SOURCES = rdpKeyboard.c + +xrdpkeyb_drv_la_LIBADD = diff --git a/xorg/server/xrdpkeyb/rdpKeyboard.c b/xorg/server/xrdpkeyb/rdpKeyboard.c index 0157de21..8c8a7c27 100644 --- a/xorg/server/xrdpkeyb/rdpKeyboard.c +++ b/xorg/server/xrdpkeyb/rdpKeyboard.c @@ -27,6 +27,7 @@ xrdp keyboard module /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -674,6 +675,7 @@ rdpkeybUnInit(InputDriverPtr drv, InputInfoPtr info, int flags) { LLOGLN(0, ("rdpkeybUnInit: drv %p info %p, flags 0x%x", drv, info, flags)); + rdpUnregisterInputCallback(rdpInputKeyboard); } /******************************************************************************/ diff --git a/xorg/server/xrdpmouse/Makefile b/xorg/server/xrdpmouse/Makefile deleted file mode 100644 index 905308ad..00000000 --- a/xorg/server/xrdpmouse/Makefile +++ /dev/null @@ -1,17 +0,0 @@ - -OBJS = rdpMouse.o - -CFLAGS = -g -O2 -Wall -fPIC -I/usr/include/xorg -I/usr/include/pixman-1 \ --I../module -I../../../common - -LDFLAGS = - -LIBS = - -all: xrdpmouse_drv.so - -xrdpmouse_drv.so: $(OBJS) Makefile - $(CC) -shared -o xrdpmouse_drv.so $(LDFLAGS) $(OBJS) $(LIBS) - -clean: - rm -f $(OBJS) xrdpmouse_drv.so diff --git a/xorg/server/xrdpmouse/Makefile.am b/xorg/server/xrdpmouse/Makefile.am new file mode 100644 index 00000000..367342a4 --- /dev/null +++ b/xorg/server/xrdpmouse/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = + +AM_CFLAGS = \ + $(XORG_SERVER_CFLAGS) \ + -I../module \ + -I../../../common + +xrdpmouse_drv_la_LTLIBRARIES = xrdpmouse_drv.la + +xrdpmouse_drv_la_LDFLAGS = -module -avoid-version + +xrdpmouse_drv_ladir = $(moduledir)/input + +xrdpmouse_drv_la_SOURCES = rdpMouse.c + +xrdpmouse_drv_la_LIBADD = diff --git a/xorg/server/xrdpmouse/rdpMouse.c b/xorg/server/xrdpmouse/rdpMouse.c index d64e9233..bb70e8a7 100644 --- a/xorg/server/xrdpmouse/rdpMouse.c +++ b/xorg/server/xrdpmouse/rdpMouse.c @@ -27,6 +27,7 @@ xrdp mouse module /* this should be before all X11 .h files */ #include +#include /* all driver need this */ #include @@ -309,6 +310,7 @@ rdpmouseUnInit(InputDriverPtr drv, InputInfoPtr info, int flags) { LLOGLN(0, ("rdpmouseUnInit: drv %p info %p, flags 0x%x", drv, info, flags)); + rdpUnregisterInputCallback(rdpInputMouse); } /******************************************************************************/ diff --git a/xorgxrdp b/xorgxrdp new file mode 160000 index 00000000..7c4d6735 --- /dev/null +++ b/xorgxrdp @@ -0,0 +1 @@ +Subproject commit 7c4d67356db815a9b4b003fca06394f43aaf7f82 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.ini b/xrdp/xrdp.ini index 59122a00..34adb077 100644 --- a/xrdp/xrdp.ini +++ b/xrdp/xrdp.ini @@ -50,6 +50,9 @@ grey=dedede # when true, userid/password *must* be passed on cmd line # require_credentials=yes +# set a default entry for autorun if the client send login and pass directly +autorun=xrdp1 + bulk_compression=yes # You can set the PAM error text in a gateway setup (MAX 256 chars) @@ -153,6 +156,7 @@ username=ask password=ask ip=127.0.0.1 port=-1 +#delay_ms=2000 [xrdp3] name=console @@ -161,6 +165,7 @@ ip=127.0.0.1 port=5900 username=na password=ask +#delay_ms=2000 [xrdp4] name=vnc-any @@ -172,6 +177,7 @@ password=ask #pamusername=asksame #pampassword=asksame #pamsessionmng=127.0.0.1 +#delay_ms=2000 [xrdp5] name=sesman-any @@ -180,6 +186,7 @@ ip=ask port=-1 username=ask password=ask +#delay_ms=2000 [xrdp6] name=rdp-any 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 # = [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 */