mirror of https://github.com/neutrinolabs/xrdp
Merge pull request #3138 from matt335672/update_scancode_processing
Update scancode processing
This commit is contained in:
commit
8fd941632d
|
@ -20,6 +20,7 @@ include_HEADERS = \
|
||||||
xrdp_client_info.h \
|
xrdp_client_info.h \
|
||||||
xrdp_constants.h \
|
xrdp_constants.h \
|
||||||
xrdp_rail.h \
|
xrdp_rail.h \
|
||||||
|
xrdp_scancode_defs.h \
|
||||||
xrdp_sockets.h
|
xrdp_sockets.h
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
AM_CPPFLAGS = \
|
||||||
|
|
|
@ -480,13 +480,10 @@
|
||||||
#define RDP_INPUT_MOUSEX 0x8002
|
#define RDP_INPUT_MOUSEX 0x8002
|
||||||
|
|
||||||
/* Keyboard Event: keyboardFlags (2.2.8.1.1.3.1.1.1) */
|
/* Keyboard Event: keyboardFlags (2.2.8.1.1.3.1.1.1) */
|
||||||
/* TODO: to be renamed */
|
#define KBDFLAGS_EXTENDED 0x0100
|
||||||
#define KBD_FLAG_RIGHT 0x0001
|
#define KBDFLAGS_EXTENDED1 0x0200
|
||||||
#define KBD_FLAG_EXT 0x0100 /* KBDFLAGS_EXTENDED */
|
#define KBDFLAGS_DOWN 0x4000
|
||||||
#define KBD_FLAG_EXT1 0x0200 /* KBDFLAGS_EXTENDED1 */
|
#define KBDFLAGS_RELEASE 0x8000
|
||||||
#define KBD_FLAG_QUIET 0x1000
|
|
||||||
#define KBD_FLAG_DOWN 0x4000
|
|
||||||
#define KBD_FLAG_UP 0x8000
|
|
||||||
|
|
||||||
/* Mouse Event: pointerFlags (2.2.8.1.1.3.1.1.3) */
|
/* Mouse Event: pointerFlags (2.2.8.1.1.3.1.1.3) */
|
||||||
#define PTRFLAGS_HWHEEL 0x0400
|
#define PTRFLAGS_HWHEEL 0x0400
|
||||||
|
@ -505,10 +502,9 @@
|
||||||
#define PTRXFLAGS_BUTTON2 0x0002
|
#define PTRXFLAGS_BUTTON2 0x0002
|
||||||
|
|
||||||
/* Synchronize Event: toggleFlags (2.2.8.1.1.3.1.1.5) */
|
/* Synchronize Event: toggleFlags (2.2.8.1.1.3.1.1.5) */
|
||||||
/* TODO: to be renamed */
|
#define TS_SYNC_SCROLL_LOCK 0x0001
|
||||||
#define KBD_FLAG_SCROLL 0x0001 /* TS_SYNC_SCROLL_LOCK */
|
#define TS_SYNC_NUM_LOCK 0x0002
|
||||||
#define KBD_FLAG_NUMLOCK 0x0002
|
#define TS_SYNC_CAPS_LOCK 0x0004
|
||||||
#define KBD_FLAG_CAPITAL 0x0004
|
|
||||||
#define TS_SYNC_KANA_LOCK 0x0008
|
#define TS_SYNC_KANA_LOCK 0x0008
|
||||||
|
|
||||||
/* Client Fast-Path Input Event PDU 2.2.8.1.2 */
|
/* Client Fast-Path Input Event PDU 2.2.8.1.2 */
|
||||||
|
|
|
@ -137,6 +137,7 @@ static const struct scancode_to_keycode
|
||||||
{ 0x079, 100 }, // - HENK
|
{ 0x079, 100 }, // - HENK
|
||||||
{ 0x07b, 102 }, // VK_OEM_PA1 MUHE
|
{ 0x07b, 102 }, // VK_OEM_PA1 MUHE
|
||||||
{ 0x07d, 132 }, // - AE13
|
{ 0x07d, 132 }, // - AE13
|
||||||
|
{ 0x07e, 129 }, // VK_ABNT_C2 KPPT (Brazil ABNT2)
|
||||||
{ 0x110, 173 }, // VK_MEDIA_PREV_TRACK I173 (KEY_PREVIOUSSONG)
|
{ 0x110, 173 }, // VK_MEDIA_PREV_TRACK I173 (KEY_PREVIOUSSONG)
|
||||||
{ 0x119, 171 }, // VK_MEDIA_NEXT_TRACK I171 (KEY_NEXTSONG)
|
{ 0x119, 171 }, // VK_MEDIA_NEXT_TRACK I171 (KEY_NEXTSONG)
|
||||||
{ 0x11c, 104 }, // VK_RETURN KPEN
|
{ 0x11c, 104 }, // VK_RETURN KPEN
|
||||||
|
@ -167,7 +168,8 @@ static const struct scancode_to_keycode
|
||||||
{ 0x165, 225 }, // VK_BROWSER_SEARCH I225 (KEY_SEARCH)
|
{ 0x165, 225 }, // VK_BROWSER_SEARCH I225 (KEY_SEARCH)
|
||||||
{ 0x166, 164 }, // VK_BROWSER_FAVORITES I164 (KEY_BOOKMARKS)
|
{ 0x166, 164 }, // VK_BROWSER_FAVORITES I164 (KEY_BOOKMARKS)
|
||||||
{ 0x16b, 165 }, // VK_LAUNCH_APP1 I165 (KEY_COMPUTER)
|
{ 0x16b, 165 }, // VK_LAUNCH_APP1 I165 (KEY_COMPUTER)
|
||||||
{ 0x16c, 163 } // VK_LAUNCH_MAIL I163 (KEY_MAIL)
|
{ 0x16c, 163 }, // VK_LAUNCH_MAIL I163 (KEY_MAIL)
|
||||||
|
{ 0x21d, 127 } // VK_PAUSE PAUS (KEY_PAUSE)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sources:-
|
// Sources:-
|
||||||
|
@ -271,6 +273,7 @@ static const struct scancode_to_keycode
|
||||||
{ 0x079, 129 }, // - XFER
|
{ 0x079, 129 }, // - XFER
|
||||||
{ 0x07b, 131 }, // VK_OEM_PA1 NFER
|
{ 0x07b, 131 }, // VK_OEM_PA1 NFER
|
||||||
{ 0x07d, 133 }, // - AE13
|
{ 0x07d, 133 }, // - AE13
|
||||||
|
{ 0x07e, 134 }, // VK_ABNT_C2 KPPT (Brazil ABNT2)
|
||||||
{ 0x11c, 108 }, // VK_RETURN KPEN
|
{ 0x11c, 108 }, // VK_RETURN KPEN
|
||||||
{ 0x11d, 109 }, // VK_RCONTROL RCTL
|
{ 0x11d, 109 }, // VK_RCONTROL RCTL
|
||||||
{ 0x120, 141 }, // VK_VOLUME_MUTE MUTE
|
{ 0x120, 141 }, // VK_VOLUME_MUTE MUTE
|
||||||
|
@ -291,7 +294,8 @@ static const struct scancode_to_keycode
|
||||||
{ 0x153, 107 }, // VK_DELETE DELE
|
{ 0x153, 107 }, // VK_DELETE DELE
|
||||||
{ 0x15b, 115 }, // VK_LWIN LWIN
|
{ 0x15b, 115 }, // VK_LWIN LWIN
|
||||||
{ 0x15c, 116 }, // VK_RWIN RWIN
|
{ 0x15c, 116 }, // VK_RWIN RWIN
|
||||||
{ 0x15d, 117 } // VK_APPS COMP
|
{ 0x15d, 117 }, // VK_APPS COMP
|
||||||
|
{ 0x21d, 110 } // VK_PAUSE PAUS (KEY_PAUSE)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct map_settings
|
struct map_settings
|
||||||
|
@ -326,9 +330,63 @@ const struct map_settings global_settings[] =
|
||||||
// Default mapping set is "evdev"
|
// Default mapping set is "evdev"
|
||||||
const struct map_settings *settings = &global_settings[SI_EVDEV];
|
const struct map_settings *settings = &global_settings[SI_EVDEV];
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
int
|
||||||
|
scancode_to_index(unsigned short scancode)
|
||||||
|
{
|
||||||
|
if (scancode <= 0x7f)
|
||||||
|
{
|
||||||
|
return scancode;
|
||||||
|
}
|
||||||
|
if (scancode <= 0xff)
|
||||||
|
{
|
||||||
|
// 0x80 - 0xff : Invalid code
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (scancode <= 0x177)
|
||||||
|
{
|
||||||
|
// 01x100 - 0x177 : Move bit 9 to bit 8
|
||||||
|
return (scancode & 0x7f) | 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scancode == SCANCODE_PAUSE_KEY)
|
||||||
|
{
|
||||||
|
return SCANCODE_INDEX_PAUSE_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This leaves the following which are all rejected
|
||||||
|
// 0x178 - 0x17f (currently unused). These would map to indexes 0xf8
|
||||||
|
// to 0xff which we are reserving for extended1 keys.
|
||||||
|
// 0x180 - 0x1ff Illegal format
|
||||||
|
// >0x200 Anything not mentioned explicitly above (e.g.
|
||||||
|
// SCANCODE_PAUSE_KEY)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
unsigned short
|
unsigned short
|
||||||
scancode_to_keycode(unsigned short scancode)
|
scancode_from_index(int index)
|
||||||
|
{
|
||||||
|
index &= 0xff;
|
||||||
|
unsigned short result;
|
||||||
|
if (index == SCANCODE_INDEX_PAUSE_KEY)
|
||||||
|
{
|
||||||
|
result = SCANCODE_PAUSE_KEY;
|
||||||
|
}
|
||||||
|
else if (index < 0x80)
|
||||||
|
{
|
||||||
|
result = index;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = (index & 0x7f) | 0x100;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
unsigned short
|
||||||
|
scancode_to_x11_keycode(unsigned short scancode)
|
||||||
{
|
{
|
||||||
unsigned int min = 0;
|
unsigned int min = 0;
|
||||||
unsigned int max = settings->size;
|
unsigned int max = settings->size;
|
||||||
|
@ -419,3 +477,12 @@ scancode_get_keycode_set(void)
|
||||||
{
|
{
|
||||||
return settings->name;
|
return settings->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
const char *
|
||||||
|
scancode_get_xkb_rules(void)
|
||||||
|
{
|
||||||
|
// Currently supported keycods map directly to the same name for
|
||||||
|
// the rules which use them.
|
||||||
|
return settings->name;
|
||||||
|
}
|
||||||
|
|
|
@ -18,13 +18,32 @@
|
||||||
* @file common/scancode.h
|
* @file common/scancode.h
|
||||||
* @brief Scancode handling
|
* @brief Scancode handling
|
||||||
*
|
*
|
||||||
* Convert between RDP scancodes and X11 keycodes.
|
* This module provides functionality for the following:-
|
||||||
|
* 1) Mapping from TS_KEYBOARD_EVENT PDU values to an 'RDP scancode'
|
||||||
|
* 2) Handling RDP scancodes
|
||||||
|
* 3) Convert between RDP scancodes and X11 keycodes.
|
||||||
*
|
*
|
||||||
* RDP scancodes are largely the same as Windows scancodes. These are
|
* The values received in TS_KEYBOARD_EVENT PDUs are largely the same as
|
||||||
* indirectly documented in the Microsoft "Keyboard Scan Code Specification",
|
* Windows scancodes. These are indirectly documented in the Microsoft
|
||||||
* Rev 1.3a (March 16th 2000) and are otherwise known as "Scan code set
|
* "Keyboard Scan Code Specification", Rev 1.3a (March 16th 2000) and
|
||||||
* 1" scancodes. This document no longer appears to be available directly from
|
* are otherwise known as "Scan code set 1" scancodes. This document no
|
||||||
* the Microsoft website.
|
* longer appears to be available directly from the Microsoft website.
|
||||||
|
*
|
||||||
|
* A TS_KEYBOARD_EVENT_PDU contains two important values:-
|
||||||
|
* 1) key_code This is not unique. For example, left-shift and
|
||||||
|
* right-shift share a key_code of 0x2a
|
||||||
|
* 2) keyboard_flags Among other flags, contains KBDFLAGS_EXTENDED and
|
||||||
|
* KBDFLAGS_EXTENDED1. These combine with the key_code
|
||||||
|
* to allow a specific key to be determined.
|
||||||
|
*
|
||||||
|
* An 'RDP scancode' as defined by this module is a mapping of the
|
||||||
|
* Windows key_code and keyboard_flags into a single value which
|
||||||
|
* represents a unique key. For example:-
|
||||||
|
* Left control : key_code=0x1d, KBDFLAGS_EXTENDED=0 scancode = 0x1d
|
||||||
|
* Right control : key_code=0x1d, KBDFLAGS_EXTENDED=1 scancode = 0x11d
|
||||||
|
*
|
||||||
|
* This model of unique keys more closely maps what X11 does with its
|
||||||
|
* own keycodes.
|
||||||
*
|
*
|
||||||
* X11 keycodes are the X11 equivalent of RDP scancodes. In general, these
|
* X11 keycodes are the X11 equivalent of RDP scancodes. In general, these
|
||||||
* are specific to an X server. In practice however, these are nowadays
|
* are specific to an X server. In practice however, these are nowadays
|
||||||
|
@ -39,15 +58,69 @@
|
||||||
#if !defined(SCANCODE_H)
|
#if !defined(SCANCODE_H)
|
||||||
#define SCANCODE_H
|
#define SCANCODE_H
|
||||||
|
|
||||||
|
#include "xrdp_scancode_defs.h"
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Scancodes for keys used in the code are defined in the global
|
||||||
|
* file xrdp_scancode_defs.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scancode indexes for some of the keys in xrdp_scancode_defs.h
|
||||||
|
*/
|
||||||
|
SCANCODE_INDEX_LSHIFT_KEY = SCANCODE_LSHIFT_KEY,
|
||||||
|
SCANCODE_INDEX_RSHIFT_KEY = SCANCODE_RSHIFT_KEY,
|
||||||
|
SCANCODE_INDEX_RALT_KEY = (SCANCODE_RALT_KEY & 0x7f) | 0x80,
|
||||||
|
SCANCODE_INDEX_PAUSE_KEY = 0xf8,
|
||||||
|
// 0xf9 - 0xff reserved for future extended1 mappings
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum value returned by scancode_to_index()
|
||||||
|
*/
|
||||||
|
SCANCODE_MAX_INDEX = 255
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks up an RDP scancode
|
* Convert a scancode to an index
|
||||||
|
* @param scancode scancode in the range 0x00 - 0x2ff
|
||||||
|
* @return index in the range 0..SCANCODE_MAX_INDEX (inclusive) or -1
|
||||||
|
*
|
||||||
|
* This function converts a 10-bit scancode into an 8-bit array index,
|
||||||
|
* independent of the currently loaded keymap
|
||||||
|
*
|
||||||
|
* This is possible as the scancodes from 0x80 - 0x2ff are sparsely allocated.
|
||||||
|
*
|
||||||
|
* For scancodes in the range 0x00 - 0x7f, the index is identical to the
|
||||||
|
* scancode. This includes scancodes for all the keys affected by
|
||||||
|
* numlock.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scancode_to_index(unsigned short scancode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an index back to a scancode.
|
||||||
|
* @param index in the range 0..SCANCODE_MAX_INDEX
|
||||||
|
*
|
||||||
|
* @result scancode which is mapped to the index value
|
||||||
|
*
|
||||||
|
* The result is always a valid scancode, even if the index is
|
||||||
|
* not valid.
|
||||||
|
*/
|
||||||
|
unsigned short
|
||||||
|
scancode_from_index(int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Looks up an RDP scancode and converts to an x11 keycode
|
||||||
*
|
*
|
||||||
* @param scancode Scancode. Extended scancodes have bit 9 set
|
* @param scancode Scancode. Extended scancodes have bit 9 set
|
||||||
* (i.e. are in 0x100 - 0x1ff)
|
* (i.e. are in 0x100 - 0x1ff). Extended1 scancodes
|
||||||
|
* (currently just the pause key) are in the range 0x200-0x2ff
|
||||||
* @return keycode, or 0 for no keycode
|
* @return keycode, or 0 for no keycode
|
||||||
*/
|
*/
|
||||||
unsigned short
|
unsigned short
|
||||||
scancode_to_keycode(unsigned short scancode);
|
scancode_to_x11_keycode(unsigned short scancode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the next valid scancode from the list of valid scancodes
|
* Gets the next valid scancode from the list of valid scancodes
|
||||||
|
@ -84,4 +157,13 @@ scancode_set_keycode_set(const char *kk_set);
|
||||||
const char *
|
const char *
|
||||||
scancode_get_keycode_set(void);
|
scancode_get_keycode_set(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the XKB rules set which can be used to access the currently
|
||||||
|
* loaded keycode set
|
||||||
|
*
|
||||||
|
* @result "evdev", or "base"
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
scancode_get_xkb_rules(void);
|
||||||
|
|
||||||
#endif /* SCANCODE_H */
|
#endif /* SCANCODE_H */
|
||||||
|
|
|
@ -200,6 +200,11 @@ struct xrdp_client_info
|
||||||
char layout[16];
|
char layout[16];
|
||||||
char variant[16];
|
char variant[16];
|
||||||
char options[256];
|
char options[256];
|
||||||
|
char xkb_rules[32];
|
||||||
|
// A few x11 keycodes are needed by the xup module
|
||||||
|
int x11_keycode_caps_lock;
|
||||||
|
int x11_keycode_num_lock;
|
||||||
|
int x11_keycode_scroll_lock;
|
||||||
|
|
||||||
/* ==================================================================== */
|
/* ==================================================================== */
|
||||||
/* Private to xrdp below this line */
|
/* Private to xrdp below this line */
|
||||||
|
@ -269,6 +274,6 @@ enum xrdp_encoder_flags
|
||||||
|
|
||||||
/* yyyymmdd of last incompatible change to xrdp_client_info */
|
/* yyyymmdd of last incompatible change to xrdp_client_info */
|
||||||
/* also used for changes to all the xrdp installed headers */
|
/* also used for changes to all the xrdp installed headers */
|
||||||
#define CLIENT_INFO_CURRENT_VERSION 20240514
|
#define CLIENT_INFO_CURRENT_VERSION 20240805
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -63,9 +63,6 @@
|
||||||
#define XRDP_MAX_BITMAP_CACHE_IDX 2000
|
#define XRDP_MAX_BITMAP_CACHE_IDX 2000
|
||||||
#define XRDP_BITMAP_CACHE_ENTRIES 2048
|
#define XRDP_BITMAP_CACHE_ENTRIES 2048
|
||||||
|
|
||||||
#define XR_MIN_KEY_CODE 8
|
|
||||||
#define XR_MAX_KEY_CODE 256
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Constants come from ITU-T Recommendations
|
* Constants come from ITU-T Recommendations
|
||||||
*/
|
*/
|
||||||
|
@ -288,12 +285,6 @@
|
||||||
|
|
||||||
#define FASTPATH_MAX_PACKET_SIZE 0x3fff
|
#define FASTPATH_MAX_PACKET_SIZE 0x3fff
|
||||||
|
|
||||||
#define XR_RDP_SCAN_LSHIFT 42
|
|
||||||
#define XR_RDP_SCAN_ALT 56
|
|
||||||
// scancodes affected by numlock
|
|
||||||
#define XR_RDP_SCAN_MIN_NUMLOCK 71 // KP7
|
|
||||||
#define XR_RDP_SCAN_MAX_NUMLOCK 83 // KPDL
|
|
||||||
|
|
||||||
// Since we're not guaranteed to have pixman, copy these directives.
|
// Since we're not guaranteed to have pixman, copy these directives.
|
||||||
#define XRDP_PIXMAN_TYPE_ARGB 2
|
#define XRDP_PIXMAN_TYPE_ARGB 2
|
||||||
#define XRDP_PIXMAN_TYPE_ABGR 3
|
#define XRDP_PIXMAN_TYPE_ABGR 3
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2024 Matt Burt, all xrdp contributors
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file common/xrdp_scancode_defs.h
|
||||||
|
* @brief Scancode global definitions, shared with xorgxrdp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(XRDP_SCANCODE_DEFS_H)
|
||||||
|
#define XRDP_SCANCODE_DEFS_H
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Scancodes for keys received from the RDP client
|
||||||
|
*/
|
||||||
|
SCANCODE_LSHIFT_KEY = 0x2a,
|
||||||
|
SCANCODE_RSHIFT_KEY = 0x36,
|
||||||
|
SCANCODE_LCTRL_KEY = 0x1d,
|
||||||
|
SCANCODE_RCTRL_KEY = 0x11d,
|
||||||
|
SCANCODE_CAPS_KEY = 0x3a,
|
||||||
|
SCANCODE_NUMLOCK_KEY = 0x45,
|
||||||
|
SCANCODE_SCROLL_KEY = 0x46, // Scroll lock
|
||||||
|
SCANCODE_LALT_KEY = 0x38,
|
||||||
|
SCANCODE_RALT_KEY = 0x138,
|
||||||
|
SCANCODE_LWIN_KEY = 0x15b,
|
||||||
|
SCANCODE_RWIN_KEY = 0x15c,
|
||||||
|
SCANCODE_MENU_KEY = 0x15d,
|
||||||
|
|
||||||
|
SCANCODE_ESC_KEY = 0x01,
|
||||||
|
SCANCODE_BACKSPACE_KEY = 0x0e,
|
||||||
|
SCANCODE_ENTER_KEY = 0x1c,
|
||||||
|
SCANCODE_TAB_KEY = 0x0f,
|
||||||
|
SCANCODE_PAUSE_KEY = 0x21d,
|
||||||
|
|
||||||
|
SCANCODE_KP_ENTER_KEY = 0x11c,
|
||||||
|
SCANCODE_KP_DEL_KEY = 0x53,
|
||||||
|
SCANCODE_KP_1_KEY = 0x4f,
|
||||||
|
SCANCODE_KP_2_KEY = 0x50,
|
||||||
|
SCANCODE_KP_4_KEY = 0x4b,
|
||||||
|
SCANCODE_KP_6_KEY = 0x4d,
|
||||||
|
SCANCODE_KP_7_KEY = 0x47,
|
||||||
|
SCANCODE_KP_8_KEY = 0x48,
|
||||||
|
|
||||||
|
SCANCODE_LEFT_ARROW_KEY = 0x14b,
|
||||||
|
SCANCODE_RIGHT_ARROW_KEY = 0x14d,
|
||||||
|
SCANCODE_UP_ARROW_KEY = 0x148,
|
||||||
|
SCANCODE_DOWN_ARROW_KEY = 0x150,
|
||||||
|
|
||||||
|
SCANCODE_HOME_KEY = 0x147,
|
||||||
|
SCANCODE_DEL_KEY = 0x153,
|
||||||
|
SCANCODE_END_KEY = 0x14f,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keys affected by numlock
|
||||||
|
* (this is not the whole keypad)
|
||||||
|
*/
|
||||||
|
SCANCODE_MIN_NUMLOCK = SCANCODE_KP_7_KEY,
|
||||||
|
SCANCODE_MAX_NUMLOCK = SCANCODE_KP_DEL_KEY
|
||||||
|
};
|
||||||
|
|
||||||
|
// Convert key_code and flags values received from a TS_KEYBOARD_EVENT
|
||||||
|
// into a value suitable for use by this module
|
||||||
|
#define SCANCODE_FROM_KBD_EVENT(key_code,keyboard_flags) \
|
||||||
|
(((key_code) & 0x7f) | ((keyboard_flags) & 0x300))
|
||||||
|
|
||||||
|
// Convert a scancode used by this module back into a
|
||||||
|
// TS_KEYBOARD_EVENT keyCode value
|
||||||
|
#define SCANCODE_TO_KBD_EVENT_KEY_CODE(scancode) ((scancode) & 0x7f)
|
||||||
|
|
||||||
|
// Convert a scancode used by this module back into a
|
||||||
|
// TS_KEYBOARD_EVENT keyboardFlags value
|
||||||
|
#define SCANCODE_TO_KBD_EVENT_KBD_FLAGS(scancode) ((scancode) & 0x300)
|
||||||
|
|
||||||
|
#endif /* XRDP_SCANCODE_DEFS_H */
|
|
@ -390,6 +390,11 @@ use of \fBxrdp\-chansrv\fR facilities in the VNC session.
|
||||||
The first form of this setting is recommended, replacing \fIn\fR with the
|
The first form of this setting is recommended, replacing \fIn\fR with the
|
||||||
X11 display number of the session.
|
X11 display number of the session.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\fBkeycode_set\fR=\fI<string>\fR
|
||||||
|
[Xorg only] Asks for the specified keycode set to be used by the X server.
|
||||||
|
Normally "evdev" or "base". The default should be correct for your system.
|
||||||
|
|
||||||
.SH "EXAMPLES"
|
.SH "EXAMPLES"
|
||||||
This is an example \fBxrdp.ini\fR:
|
This is an example \fBxrdp.ini\fR:
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
|
|
||||||
// Scancodes affected by numlock
|
// Scancodes affected by numlock
|
||||||
#define IS_KEYPAD_SCANCODE(s) \
|
#define IS_KEYPAD_SCANCODE(s) \
|
||||||
((s) >= XR_RDP_SCAN_MIN_NUMLOCK && (s) <= XR_RDP_SCAN_MAX_NUMLOCK)
|
((s) >= SCANCODE_MIN_NUMLOCK && (s) <= SCANCODE_MAX_NUMLOCK)
|
||||||
|
|
||||||
#define MAX_COMMENTS 10
|
#define MAX_COMMENTS 10
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ output_file_section(FILE *outf,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
e.keycode = scancode_to_keycode(scancode);
|
e.keycode = scancode_to_x11_keycode(scancode);
|
||||||
nbytes = XLookupString(&e, text, 255, &ks, NULL);
|
nbytes = XLookupString(&e, text, 255, &ks, NULL);
|
||||||
if (ks == NoSymbol)
|
if (ks == NoSymbol)
|
||||||
{
|
{
|
||||||
|
@ -299,7 +299,11 @@ output_file_section(FILE *outf,
|
||||||
unicode = wtext[0];
|
unicode = wtext[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scancode > 0xff)
|
if (scancode > 0x1ff)
|
||||||
|
{
|
||||||
|
fputs("E1_", outf);
|
||||||
|
}
|
||||||
|
else if (scancode > 0xff)
|
||||||
{
|
{
|
||||||
fputs("E0_", outf);
|
fputs("E0_", outf);
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -706,6 +716,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -737,6 +748,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -828,6 +840,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -859,6 +872,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -950,6 +964,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -981,6 +996,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -707,6 +717,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -738,6 +749,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -829,6 +841,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -860,6 +873,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -951,6 +965,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -982,6 +997,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -340,6 +344,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -371,6 +376,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -459,6 +465,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -490,6 +497,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -581,6 +589,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -612,6 +621,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -701,6 +711,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -732,6 +743,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -823,6 +835,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -854,6 +867,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -942,6 +956,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -973,6 +988,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -826,6 +838,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -857,6 +870,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -948,6 +962,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -979,6 +994,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -99,6 +99,7 @@ version=2
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="165:U+00A5" # yen
|
7D="165:U+00A5" # yen
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -130,6 +131,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -223,6 +225,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="124:U+007C" # bar
|
7D="124:U+007C" # bar
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -254,6 +257,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -347,6 +351,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="165:U+00A5" # yen
|
7D="165:U+00A5" # yen
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -378,6 +383,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -471,6 +477,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="124:U+007C" # bar
|
7D="124:U+007C" # bar
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -502,6 +509,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -595,6 +603,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="165:U+00A5" # yen
|
7D="165:U+00A5" # yen
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -626,6 +635,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -719,6 +729,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="165:U+00A5" # yen
|
7D="165:U+00A5" # yen
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -750,6 +761,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -843,6 +855,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="124:U+007C" # bar
|
7D="124:U+007C" # bar
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -874,6 +887,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -967,6 +981,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
7D="124:U+007C" # bar
|
7D="124:U+007C" # bar
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -998,6 +1013,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -707,6 +717,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -738,6 +749,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -829,6 +841,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -860,6 +873,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -951,6 +965,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -982,6 +997,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -218,6 +220,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -249,6 +252,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -338,6 +342,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -368,6 +373,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -459,6 +465,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -490,6 +497,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -581,6 +589,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -612,6 +621,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -699,6 +709,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -729,6 +740,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -819,6 +831,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -850,6 +863,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -941,6 +955,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -972,6 +987,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -98,6 +98,7 @@ version=2
|
||||||
73="47:U+002F" # slash
|
73="47:U+002F" # slash
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -129,6 +130,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -221,6 +223,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="63:U+003F" # question
|
73="63:U+003F" # question
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -252,6 +255,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -344,6 +348,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="176:U+00B0" # degree
|
73="176:U+00B0" # degree
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -375,6 +380,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -467,6 +473,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="191:U+00BF" # questiondown
|
73="191:U+00BF" # questiondown
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -498,6 +505,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -590,6 +598,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="47:U+002F" # slash
|
73="47:U+002F" # slash
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -621,6 +630,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -711,6 +721,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="176:U+00B0" # degree
|
73="176:U+00B0" # degree
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -742,6 +753,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -834,6 +846,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="63:U+003F" # question
|
73="63:U+003F" # question
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -865,6 +878,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -956,6 +970,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
73="191:U+00BF" # questiondown
|
73="191:U+00BF" # questiondown
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -987,6 +1002,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -462,6 +468,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -493,6 +500,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -584,6 +592,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -615,6 +624,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -706,6 +716,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -737,6 +748,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -828,6 +840,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -859,6 +872,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -218,6 +220,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -249,6 +252,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -338,6 +342,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -368,6 +373,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -459,6 +465,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -490,6 +497,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -580,6 +588,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -611,6 +620,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -699,6 +709,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -729,6 +740,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -819,6 +831,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -850,6 +863,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -941,6 +955,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -972,6 +987,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -584,6 +592,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -615,6 +624,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -463,6 +469,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -494,6 +501,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -585,6 +593,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -616,6 +625,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -705,6 +715,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -736,6 +747,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -827,6 +839,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -858,6 +871,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -341,6 +345,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -372,6 +377,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -462,6 +468,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -493,6 +500,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -584,6 +592,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -615,6 +624,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -706,6 +716,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -737,6 +748,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -828,6 +840,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -859,6 +872,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -949,6 +963,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -980,6 +995,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65463:U+0037" # KP_7
|
47="65463:U+0037" # KP_7
|
||||||
|
|
|
@ -97,6 +97,7 @@ version=2
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -128,6 +129,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shift]
|
[shift]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -219,6 +221,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -250,6 +253,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[altgr]
|
[altgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -338,6 +342,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -369,6 +374,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftaltgr]
|
[shiftaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -449,6 +455,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -480,6 +487,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslock]
|
[capslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -571,6 +579,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -602,6 +611,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[capslockaltgr]
|
[capslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -684,6 +694,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -715,6 +726,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslock]
|
[shiftcapslock]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -806,6 +818,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -837,6 +850,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[shiftcapslockaltgr]
|
[shiftcapslockaltgr]
|
||||||
01="65307:U+001B" # Escape
|
01="65307:U+001B" # Escape
|
||||||
|
@ -923,6 +937,7 @@ E0_6C="269025049" # XF86Mail
|
||||||
70="65319" # Hiragana_Katakana
|
70="65319" # Hiragana_Katakana
|
||||||
79="65315" # Henkan_Mode
|
79="65315" # Henkan_Mode
|
||||||
7B="65314" # Muhenkan
|
7B="65314" # Muhenkan
|
||||||
|
7E="65454:U+002E" # KP_Decimal
|
||||||
E0_10="269025046" # XF86AudioPrev
|
E0_10="269025046" # XF86AudioPrev
|
||||||
E0_19="269025047" # XF86AudioNext
|
E0_19="269025047" # XF86AudioNext
|
||||||
E0_1C="65421:U+000D" # KP_Enter
|
E0_1C="65421:U+000D" # KP_Enter
|
||||||
|
@ -954,6 +969,7 @@ E0_65="269025051" # XF86Search
|
||||||
E0_66="269025072" # XF86Favorites
|
E0_66="269025072" # XF86Favorites
|
||||||
E0_6B="269025075" # XF86MyComputer
|
E0_6B="269025075" # XF86MyComputer
|
||||||
E0_6C="269025049" # XF86Mail
|
E0_6C="269025049" # XF86Mail
|
||||||
|
E1_1D="65299" # Pause
|
||||||
|
|
||||||
[numlock]
|
[numlock]
|
||||||
47="65457:U+0031" # KP_1
|
47="65457:U+0031" # KP_1
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit c6b41afa6986d5e6df18778a342b407cae40e1b5
|
Subproject commit e8208bfc0b9d122b1c393a659427fbb135e9cd75
|
|
@ -151,6 +151,38 @@ xrdp_fastpath_send(struct xrdp_fastpath *self, struct stream *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Converts the fastpath keyboard event flags to slowpath event flags
|
||||||
|
* @param Faspath flags
|
||||||
|
* @return slowpath flags
|
||||||
|
*
|
||||||
|
* See [MMS-RDPBCGR] 2.2.8.1.1.3.1.1.1 and 2.2.8.1.2.2.1
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
get_slowpath_keyboard_event_flags(int fp_flags)
|
||||||
|
{
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
|
if (fp_flags & FASTPATH_INPUT_KBDFLAGS_RELEASE)
|
||||||
|
{
|
||||||
|
// Assume the key was down prior to this event - the fastpath
|
||||||
|
// message doesn't have a separate flag which maps to
|
||||||
|
// KBDFLAGS_DOWN
|
||||||
|
flags |= KBDFLAGS_DOWN | KBDFLAGS_RELEASE;
|
||||||
|
}
|
||||||
|
if (fp_flags & FASTPATH_INPUT_KBDFLAGS_EXTENDED)
|
||||||
|
{
|
||||||
|
flags |= KBDFLAGS_EXTENDED;
|
||||||
|
}
|
||||||
|
if (fp_flags & FASTPATH_INPUT_KBDFLAGS_EXTENDED1)
|
||||||
|
{
|
||||||
|
flags |= KBDFLAGS_EXTENDED1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* FASTPATH_INPUT_EVENT_SCANCODE */
|
/* FASTPATH_INPUT_EVENT_SCANCODE */
|
||||||
static int
|
static int
|
||||||
|
@ -159,7 +191,6 @@ xrdp_fastpath_process_EVENT_SCANCODE(struct xrdp_fastpath *self,
|
||||||
{
|
{
|
||||||
int flags;
|
int flags;
|
||||||
int code;
|
int code;
|
||||||
flags = 0;
|
|
||||||
|
|
||||||
if (!s_check_rem_and_log(s, 1, "Parsing [MS-RDPBCGR] TS_FP_KEYBOARD_EVENT"))
|
if (!s_check_rem_and_log(s, 1, "Parsing [MS-RDPBCGR] TS_FP_KEYBOARD_EVENT"))
|
||||||
{
|
{
|
||||||
|
@ -170,24 +201,7 @@ xrdp_fastpath_process_EVENT_SCANCODE(struct xrdp_fastpath *self,
|
||||||
"eventHeader.eventFlags 0x%2.2x, eventHeader.eventCode (ignored), "
|
"eventHeader.eventFlags 0x%2.2x, eventHeader.eventCode (ignored), "
|
||||||
"keyCode %d", eventFlags, code);
|
"keyCode %d", eventFlags, code);
|
||||||
|
|
||||||
if ((eventFlags & FASTPATH_INPUT_KBDFLAGS_RELEASE))
|
flags = get_slowpath_keyboard_event_flags(eventFlags);
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_UP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_DOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((eventFlags & FASTPATH_INPUT_KBDFLAGS_EXTENDED))
|
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_EXT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((eventFlags & FASTPATH_INPUT_KBDFLAGS_EXTENDED1))
|
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_EXT1;
|
|
||||||
}
|
|
||||||
|
|
||||||
xrdp_fastpath_session_callback(self, RDP_INPUT_SCANCODE,
|
xrdp_fastpath_session_callback(self, RDP_INPUT_SCANCODE,
|
||||||
code, 0, flags, 0);
|
code, 0, flags, 0);
|
||||||
|
@ -296,7 +310,6 @@ xrdp_fastpath_process_EVENT_UNICODE(struct xrdp_fastpath *self,
|
||||||
int flags;
|
int flags;
|
||||||
int code;
|
int code;
|
||||||
|
|
||||||
flags = 0;
|
|
||||||
if (!s_check_rem_and_log(s, 2, "Parsing [MS-RDPBCGR] TS_FP_UNICODE_KEYBOARD_EVENT"))
|
if (!s_check_rem_and_log(s, 2, "Parsing [MS-RDPBCGR] TS_FP_UNICODE_KEYBOARD_EVENT"))
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -307,18 +320,8 @@ xrdp_fastpath_process_EVENT_UNICODE(struct xrdp_fastpath *self,
|
||||||
"unicodeCode %d",
|
"unicodeCode %d",
|
||||||
eventFlags, code);
|
eventFlags, code);
|
||||||
|
|
||||||
if (eventFlags & FASTPATH_INPUT_KBDFLAGS_RELEASE)
|
flags = get_slowpath_keyboard_event_flags(eventFlags);
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_UP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_DOWN;
|
|
||||||
}
|
|
||||||
if (eventFlags & FASTPATH_INPUT_KBDFLAGS_EXTENDED)
|
|
||||||
{
|
|
||||||
flags |= KBD_FLAG_EXT;
|
|
||||||
}
|
|
||||||
xrdp_fastpath_session_callback(self, RDP_INPUT_UNICODE,
|
xrdp_fastpath_session_callback(self, RDP_INPUT_UNICODE,
|
||||||
code, 0, flags, 0);
|
code, 0, flags, 0);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -155,246 +155,6 @@ hex_str_to_bin(char *in, char *out, int out_len)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
static void
|
|
||||||
xrdp_load_keyboard_layout(struct xrdp_client_info *client_info)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
int index = 0;
|
|
||||||
int bytes;
|
|
||||||
struct list *names = (struct list *)NULL;
|
|
||||||
struct list *items = (struct list *)NULL;
|
|
||||||
struct list *values = (struct list *)NULL;
|
|
||||||
char *item = (char *)NULL;
|
|
||||||
char *value = (char *)NULL;
|
|
||||||
char *q = (char *)NULL;
|
|
||||||
char keyboard_cfg_file[256] = { 0 };
|
|
||||||
char rdp_layout[256] = { 0 };
|
|
||||||
|
|
||||||
const struct xrdp_keyboard_overrides *ko =
|
|
||||||
&client_info->xrdp_keyboard_overrides;
|
|
||||||
|
|
||||||
LOG(LOG_LEVEL_INFO, "xrdp_load_keyboard_layout: Keyboard information sent"
|
|
||||||
" by the RDP client, keyboard_type:[0x%02X], keyboard_subtype:[0x%02X],"
|
|
||||||
" keylayout:[0x%08X]",
|
|
||||||
client_info->keyboard_type, client_info->keyboard_subtype,
|
|
||||||
client_info->keylayout);
|
|
||||||
|
|
||||||
if (ko->type != -1)
|
|
||||||
{
|
|
||||||
LOG(LOG_LEVEL_INFO, "overrode keyboard_type 0x%02X"
|
|
||||||
" with 0x%02X", client_info->keyboard_type, ko->type);
|
|
||||||
client_info->keyboard_type = ko->type;
|
|
||||||
}
|
|
||||||
if (ko->subtype != -1)
|
|
||||||
{
|
|
||||||
LOG(LOG_LEVEL_INFO, "overrode keyboard_subtype 0x%02X"
|
|
||||||
" with 0x%02X", client_info->keyboard_subtype,
|
|
||||||
ko->subtype);
|
|
||||||
client_info->keyboard_subtype = ko->subtype;
|
|
||||||
}
|
|
||||||
if (ko->layout != -1)
|
|
||||||
{
|
|
||||||
LOG(LOG_LEVEL_INFO, "overrode keylayout 0x%08X"
|
|
||||||
" with 0x%08X", client_info->keylayout, ko->layout);
|
|
||||||
client_info->keylayout = ko->layout;
|
|
||||||
}
|
|
||||||
/* infer model/variant */
|
|
||||||
/* TODO specify different X11 keyboard models/variants */
|
|
||||||
g_memset(client_info->model, 0, sizeof(client_info->model));
|
|
||||||
g_memset(client_info->variant, 0, sizeof(client_info->variant));
|
|
||||||
g_strncpy(client_info->layout, "us", sizeof(client_info->layout) - 1);
|
|
||||||
if (client_info->keyboard_subtype == 3)
|
|
||||||
{
|
|
||||||
/* macintosh keyboard */
|
|
||||||
bytes = sizeof(client_info->variant);
|
|
||||||
g_strncpy(client_info->variant, "mac", bytes - 1);
|
|
||||||
}
|
|
||||||
else if (client_info->keyboard_subtype == 0)
|
|
||||||
{
|
|
||||||
/* default - standard subtype */
|
|
||||||
client_info->keyboard_subtype = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_snprintf(keyboard_cfg_file, 255, "%s/xrdp_keyboard.ini", XRDP_CFG_PATH);
|
|
||||||
LOG(LOG_LEVEL_DEBUG, "keyboard_cfg_file %s", keyboard_cfg_file);
|
|
||||||
|
|
||||||
fd = g_file_open_ro(keyboard_cfg_file);
|
|
||||||
|
|
||||||
if (fd >= 0)
|
|
||||||
{
|
|
||||||
int section_found = -1;
|
|
||||||
char section_rdp_layouts[256] = { 0 };
|
|
||||||
char section_layouts_map[256] = { 0 };
|
|
||||||
|
|
||||||
names = list_create();
|
|
||||||
names->auto_free = 1;
|
|
||||||
items = list_create();
|
|
||||||
items->auto_free = 1;
|
|
||||||
values = list_create();
|
|
||||||
values->auto_free = 1;
|
|
||||||
|
|
||||||
file_read_sections(fd, names);
|
|
||||||
for (index = 0; index < names->count; index++)
|
|
||||||
{
|
|
||||||
q = (char *)list_get_item(names, index);
|
|
||||||
if (g_strncasecmp("default", q, 8) != 0)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
file_read_section(fd, q, items, values);
|
|
||||||
|
|
||||||
for (i = 0; i < items->count; i++)
|
|
||||||
{
|
|
||||||
item = (char *)list_get_item(items, i);
|
|
||||||
value = (char *)list_get_item(values, i);
|
|
||||||
LOG(LOG_LEVEL_DEBUG, "xrdp_load_keyboard_layout: item %s value %s",
|
|
||||||
item, value);
|
|
||||||
if (g_strcasecmp(item, "keyboard_type") == 0)
|
|
||||||
{
|
|
||||||
int v = g_atoi(value);
|
|
||||||
if (v == client_info->keyboard_type)
|
|
||||||
{
|
|
||||||
section_found = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "keyboard_subtype") == 0)
|
|
||||||
{
|
|
||||||
int v = g_atoi(value);
|
|
||||||
if (v != client_info->keyboard_subtype &&
|
|
||||||
section_found == index)
|
|
||||||
{
|
|
||||||
section_found = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "rdp_layouts") == 0)
|
|
||||||
{
|
|
||||||
if (section_found != -1 && section_found == index)
|
|
||||||
{
|
|
||||||
g_strncpy(section_rdp_layouts, value, 255);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "layouts_map") == 0)
|
|
||||||
{
|
|
||||||
if (section_found != -1 && section_found == index)
|
|
||||||
{
|
|
||||||
g_strncpy(section_layouts_map, value, 255);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "model") == 0)
|
|
||||||
{
|
|
||||||
if (section_found != -1 && section_found == index)
|
|
||||||
{
|
|
||||||
bytes = sizeof(client_info->model);
|
|
||||||
g_memset(client_info->model, 0, bytes);
|
|
||||||
g_strncpy(client_info->model, value, bytes - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "variant") == 0)
|
|
||||||
{
|
|
||||||
if (section_found != -1 && section_found == index)
|
|
||||||
{
|
|
||||||
bytes = sizeof(client_info->variant);
|
|
||||||
g_memset(client_info->variant, 0, bytes);
|
|
||||||
g_strncpy(client_info->variant, value, bytes - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "options") == 0)
|
|
||||||
{
|
|
||||||
if (section_found != -1 && section_found == index)
|
|
||||||
{
|
|
||||||
bytes = sizeof(client_info->options);
|
|
||||||
g_memset(client_info->options, 0, bytes);
|
|
||||||
g_strncpy(client_info->options, value, bytes - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* mixing items from different sections will result in
|
|
||||||
* skipping over current section.
|
|
||||||
*/
|
|
||||||
LOG(LOG_LEVEL_DEBUG, "xrdp_load_keyboard_layout: skipping "
|
|
||||||
"configuration item - %s, continuing to next "
|
|
||||||
"section", item);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list_clear(items);
|
|
||||||
list_clear(values);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (section_found == -1)
|
|
||||||
{
|
|
||||||
g_memset(section_rdp_layouts, 0, sizeof(char) * 256);
|
|
||||||
g_memset(section_layouts_map, 0, sizeof(char) * 256);
|
|
||||||
// read default section
|
|
||||||
file_read_section(fd, "default", items, values);
|
|
||||||
for (index = 0; index < items->count; index++)
|
|
||||||
{
|
|
||||||
item = (char *)list_get_item(items, index);
|
|
||||||
value = (char *)list_get_item(values, index);
|
|
||||||
if (g_strcasecmp(item, "rdp_layouts") == 0)
|
|
||||||
{
|
|
||||||
g_strncpy(section_rdp_layouts, value, 255);
|
|
||||||
}
|
|
||||||
else if (g_strcasecmp(item, "layouts_map") == 0)
|
|
||||||
{
|
|
||||||
g_strncpy(section_layouts_map, value, 255);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list_clear(items);
|
|
||||||
list_clear(values);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* load the map */
|
|
||||||
file_read_section(fd, section_rdp_layouts, items, values);
|
|
||||||
for (index = 0; index < items->count; index++)
|
|
||||||
{
|
|
||||||
int rdp_layout_id;
|
|
||||||
item = (char *)list_get_item(items, index);
|
|
||||||
value = (char *)list_get_item(values, index);
|
|
||||||
rdp_layout_id = g_htoi(value);
|
|
||||||
if (rdp_layout_id == client_info->keylayout)
|
|
||||||
{
|
|
||||||
g_strncpy(rdp_layout, item, 255);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list_clear(items);
|
|
||||||
list_clear(values);
|
|
||||||
file_read_section(fd, section_layouts_map, items, values);
|
|
||||||
for (index = 0; index < items->count; index++)
|
|
||||||
{
|
|
||||||
item = (char *)list_get_item(items, index);
|
|
||||||
value = (char *)list_get_item(values, index);
|
|
||||||
if (g_strcasecmp(item, rdp_layout) == 0)
|
|
||||||
{
|
|
||||||
bytes = sizeof(client_info->layout);
|
|
||||||
g_strncpy(client_info->layout, value, bytes - 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list_delete(names);
|
|
||||||
list_delete(items);
|
|
||||||
list_delete(values);
|
|
||||||
|
|
||||||
LOG(LOG_LEVEL_INFO, "xrdp_load_keyboard_layout: model [%s] variant [%s] "
|
|
||||||
"layout [%s] options [%s]", client_info->model,
|
|
||||||
client_info->variant, client_info->layout, client_info->options);
|
|
||||||
g_file_close(fd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG(LOG_LEVEL_ERROR, "xrdp_load_keyboard_layout: error opening %s",
|
|
||||||
keyboard_cfg_file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
struct xrdp_sec *
|
struct xrdp_sec *
|
||||||
xrdp_sec_create(struct xrdp_rdp *owner, struct trans *trans)
|
xrdp_sec_create(struct xrdp_rdp *owner, struct trans *trans)
|
||||||
|
@ -2496,7 +2256,6 @@ xrdp_sec_in_mcs_data(struct xrdp_sec *self)
|
||||||
client_info->keyboard_type,
|
client_info->keyboard_type,
|
||||||
client_info->keyboard_subtype);
|
client_info->keyboard_subtype);
|
||||||
|
|
||||||
xrdp_load_keyboard_layout(client_info);
|
|
||||||
s->p = s->data;
|
s->p = s->data;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
5
mc/mc.h
5
mc/mc.h
|
@ -30,6 +30,7 @@
|
||||||
#define CURRENT_MOD_VER 3
|
#define CURRENT_MOD_VER 3
|
||||||
|
|
||||||
struct source_info;
|
struct source_info;
|
||||||
|
struct xrdp_client_info;
|
||||||
|
|
||||||
/* Defined in xrdp_client_info.h */
|
/* Defined in xrdp_client_info.h */
|
||||||
struct monitor_info;
|
struct monitor_info;
|
||||||
|
@ -98,7 +99,9 @@ struct mod
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
int (*server_chansrv_in_use)(struct mod *v);
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
tintptr server_dumby[100 - 28]; /* align, 100 minus the number of server
|
void (*server_init_xkb_layout)(struct mod *v,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
|
tintptr server_dumby[100 - 29]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|
|
@ -143,6 +143,8 @@ struct mod
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
int (*server_chansrv_in_use)(struct mod *v);
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
|
void (*server_init_xkb_layout)(struct mod *v,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
@ -197,7 +199,7 @@ struct mod
|
||||||
int flags, int frame_id);
|
int flags, int frame_id);
|
||||||
int (*server_session_info)(struct mod *v, const char *data,
|
int (*server_session_info)(struct mod *v, const char *data,
|
||||||
int data_bytes);
|
int data_bytes);
|
||||||
tintptr server_dumby[100 - 47]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 48]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|
|
@ -7,6 +7,57 @@
|
||||||
|
|
||||||
#include "test_common.h"
|
#include "test_common.h"
|
||||||
|
|
||||||
|
// Max supported scancode value
|
||||||
|
#define MAX_SUPPORTED_SCANCODE 0x2ff
|
||||||
|
|
||||||
|
// Checks conversions to-and-from scancode indexes
|
||||||
|
START_TEST(test_scancode__scancode_to_index)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
// In the range 0x00 - 0x7f, scancodes are the same as indexes
|
||||||
|
for (i = 0x0; i <= 0x7f; ++i)
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), i);
|
||||||
|
ck_assert_int_eq(scancode_from_index(i), i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scancodes from 0x80 - 0xff are not supported
|
||||||
|
for (i = 0x80; i <= 0xff; ++i)
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x100 - 0x177 map to 0x80 - 0xf7
|
||||||
|
for (i = 0x100; i <= 0x177; ++i)
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), i - 0x80);
|
||||||
|
ck_assert_int_eq(scancode_from_index(i - 0x80), i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scancodes from 0x178 - 0x1ff are not supported
|
||||||
|
for (i = 0x178; i <= 0x1ff; ++i)
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// In the range 0x200 up, only SCANCODE_PAUSE_KEY is
|
||||||
|
// supported
|
||||||
|
ck_assert_int_ge(SCANCODE_PAUSE_KEY, 0x200);
|
||||||
|
ck_assert_int_le(SCANCODE_PAUSE_KEY, MAX_SUPPORTED_SCANCODE);
|
||||||
|
for (i = 0x200; i <= MAX_SUPPORTED_SCANCODE; ++i)
|
||||||
|
{
|
||||||
|
if (i == SCANCODE_PAUSE_KEY)
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), SCANCODE_INDEX_PAUSE_KEY);
|
||||||
|
ck_assert_int_eq(scancode_from_index(SCANCODE_INDEX_PAUSE_KEY), i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ck_assert_int_eq(scancode_to_index(i), -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Checks all returned evdev scancodes are mapped to a keycode
|
// Checks all returned evdev scancodes are mapped to a keycode
|
||||||
START_TEST(test_scancode__keycode_sets)
|
START_TEST(test_scancode__keycode_sets)
|
||||||
{
|
{
|
||||||
|
@ -31,7 +82,9 @@ START_TEST(test_scancode__evdev_all_values_returned)
|
||||||
iter = 0;
|
iter = 0;
|
||||||
while ((scancode = scancode_get_next(&iter)) != 0)
|
while ((scancode = scancode_get_next(&iter)) != 0)
|
||||||
{
|
{
|
||||||
unsigned short keycode = scancode_to_keycode(scancode);
|
ck_assert_int_ge(scancode, 0);
|
||||||
|
ck_assert_int_le(scancode, MAX_SUPPORTED_SCANCODE);
|
||||||
|
unsigned short keycode = scancode_to_x11_keycode(scancode);
|
||||||
ck_assert_int_ne(keycode, 0);
|
ck_assert_int_ne(keycode, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,8 +93,8 @@ END_TEST
|
||||||
// Checks all invalid evdev scancodes return 0
|
// Checks all invalid evdev scancodes return 0
|
||||||
START_TEST(test_scancode__evdev_bad_values_mapped_to_0)
|
START_TEST(test_scancode__evdev_bad_values_mapped_to_0)
|
||||||
{
|
{
|
||||||
// Store valid scancodes which are between 0 and 0x1ff
|
// Store valid scancodes which are between 0 and MAX_SUPPORTED_SCANCODE
|
||||||
int valid[512] = {0};
|
char valid[MAX_SUPPORTED_SCANCODE + 1] = {0};
|
||||||
unsigned int iter;
|
unsigned int iter;
|
||||||
unsigned int scancode;
|
unsigned int scancode;
|
||||||
|
|
||||||
|
@ -50,14 +103,16 @@ START_TEST(test_scancode__evdev_bad_values_mapped_to_0)
|
||||||
iter = 0;
|
iter = 0;
|
||||||
while ((scancode = scancode_get_next(&iter)) != 0)
|
while ((scancode = scancode_get_next(&iter)) != 0)
|
||||||
{
|
{
|
||||||
|
ck_assert_int_ge(scancode, 0);
|
||||||
|
ck_assert_int_le(scancode, MAX_SUPPORTED_SCANCODE);
|
||||||
valid[scancode] = 1;
|
valid[scancode] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (scancode = 0 ; scancode < 512; ++scancode)
|
for (scancode = 0 ; scancode <= MAX_SUPPORTED_SCANCODE; ++scancode)
|
||||||
{
|
{
|
||||||
if (!valid[scancode])
|
if (!valid[scancode])
|
||||||
{
|
{
|
||||||
ck_assert_int_eq(scancode_to_keycode(scancode), 0);
|
ck_assert_int_eq(scancode_to_x11_keycode(scancode), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +129,9 @@ START_TEST(test_scancode__base_all_values_returned)
|
||||||
iter = 0;
|
iter = 0;
|
||||||
while ((scancode = scancode_get_next(&iter)) != 0)
|
while ((scancode = scancode_get_next(&iter)) != 0)
|
||||||
{
|
{
|
||||||
unsigned short keycode = scancode_to_keycode(scancode);
|
ck_assert_int_ge(scancode, 0);
|
||||||
|
ck_assert_int_le(scancode, MAX_SUPPORTED_SCANCODE);
|
||||||
|
unsigned short keycode = scancode_to_x11_keycode(scancode);
|
||||||
ck_assert_int_ne(keycode, 0);
|
ck_assert_int_ne(keycode, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,8 +140,8 @@ END_TEST
|
||||||
// Checks all invalid base scancodes return 0
|
// Checks all invalid base scancodes return 0
|
||||||
START_TEST(test_scancode__base_bad_values_mapped_to_0)
|
START_TEST(test_scancode__base_bad_values_mapped_to_0)
|
||||||
{
|
{
|
||||||
// Store valid scancodes which are between 0 and 0x1ff
|
// Store valid scancodes which are between 0 and MAX_SUPPORTED_SCANCODE
|
||||||
int valid[512] = {0};
|
char valid[MAX_SUPPORTED_SCANCODE + 1] = {0};
|
||||||
unsigned int iter;
|
unsigned int iter;
|
||||||
unsigned int scancode;
|
unsigned int scancode;
|
||||||
|
|
||||||
|
@ -93,14 +150,16 @@ START_TEST(test_scancode__base_bad_values_mapped_to_0)
|
||||||
iter = 0;
|
iter = 0;
|
||||||
while ((scancode = scancode_get_next(&iter)) != 0)
|
while ((scancode = scancode_get_next(&iter)) != 0)
|
||||||
{
|
{
|
||||||
|
ck_assert_int_ge(scancode, 0);
|
||||||
|
ck_assert_int_le(scancode, MAX_SUPPORTED_SCANCODE);
|
||||||
valid[scancode] = 1;
|
valid[scancode] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (scancode = 0 ; scancode < 512; ++scancode)
|
for (scancode = 0 ; scancode <= MAX_SUPPORTED_SCANCODE; ++scancode)
|
||||||
{
|
{
|
||||||
if (!valid[scancode])
|
if (!valid[scancode])
|
||||||
{
|
{
|
||||||
ck_assert_int_eq(scancode_to_keycode(scancode), 0);
|
ck_assert_int_eq(scancode_to_x11_keycode(scancode), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,6 +177,7 @@ make_suite_test_scancode(void)
|
||||||
|
|
||||||
tc = tcase_create("scancode");
|
tc = tcase_create("scancode");
|
||||||
suite_add_tcase(s, tc);
|
suite_add_tcase(s, tc);
|
||||||
|
tcase_add_test(tc, test_scancode__scancode_to_index);
|
||||||
tcase_add_test(tc, test_scancode__keycode_sets);
|
tcase_add_test(tc, test_scancode__keycode_sets);
|
||||||
tcase_add_test(tc, test_scancode__evdev_all_values_returned);
|
tcase_add_test(tc, test_scancode__evdev_all_values_returned);
|
||||||
tcase_add_test(tc, test_scancode__evdev_bad_values_mapped_to_0);
|
tcase_add_test(tc, test_scancode__evdev_bad_values_mapped_to_0);
|
||||||
|
|
|
@ -5,6 +5,8 @@ AM_CPPFLAGS = \
|
||||||
-DXRDP_PID_PATH=\"${localstatedir}/run\" \
|
-DXRDP_PID_PATH=\"${localstatedir}/run\" \
|
||||||
-I$(top_srcdir)/common
|
-I$(top_srcdir)/common
|
||||||
|
|
||||||
|
AM_CFLAGS = $(X_CFLAGS)
|
||||||
|
|
||||||
module_LTLIBRARIES = \
|
module_LTLIBRARIES = \
|
||||||
libvnc.la
|
libvnc.la
|
||||||
|
|
||||||
|
|
115
vnc/vnc.c
115
vnc/vnc.c
|
@ -30,6 +30,8 @@
|
||||||
#include <config_ac.h>
|
#include <config_ac.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <X11/keysym.h>
|
||||||
|
|
||||||
#include "vnc.h"
|
#include "vnc.h"
|
||||||
#include "vnc_clip.h"
|
#include "vnc_clip.h"
|
||||||
#include "rfb.h"
|
#include "rfb.h"
|
||||||
|
@ -443,13 +445,90 @@ resize_server_to_client_layout(struct vnc *v)
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Process keysym messages
|
||||||
|
* @param v Module
|
||||||
|
* @param keysym Keysym of keypress
|
||||||
|
* @param keydown boolean - is key down?
|
||||||
|
* @return != 0 for error
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
process_keysym_msg(struct vnc *v, int keysym, int keydown)
|
||||||
|
{
|
||||||
|
struct stream *s = NULL;
|
||||||
|
int error = 0;
|
||||||
|
|
||||||
|
if (keysym > 0)
|
||||||
|
{
|
||||||
|
make_stream(s);
|
||||||
|
|
||||||
|
/* Break key processing [MS-RDPBCGR] 2.2.8.1.1.3.1.1.1 */
|
||||||
|
if (v->ignore_next_numlock)
|
||||||
|
{
|
||||||
|
v->ignore_next_numlock = 0;
|
||||||
|
if (keysym == XK_Num_Lock)
|
||||||
|
{
|
||||||
|
goto end_keysym_msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keysym == XK_ISO_Level3_Shift) /* altgr */
|
||||||
|
{
|
||||||
|
if (v->shift_state)
|
||||||
|
{
|
||||||
|
/* fix for mstsc sending left control down with altgr */
|
||||||
|
init_stream(s, 64);
|
||||||
|
out_uint8(s, RFB_C2S_KEY_EVENT);
|
||||||
|
out_uint8(s, 0); /* down flag */
|
||||||
|
out_uint8s(s, 2);
|
||||||
|
out_uint32_be(s, XK_Control_L); /* left control */
|
||||||
|
s_mark_end(s);
|
||||||
|
error = lib_send_copy(v, s);
|
||||||
|
if (error != 0)
|
||||||
|
{
|
||||||
|
goto end_keysym_msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init_stream(s, 64);
|
||||||
|
out_uint8(s, RFB_C2S_KEY_EVENT);
|
||||||
|
out_uint8(s, keydown ? 1 : 0);
|
||||||
|
out_uint8s(s, 2);
|
||||||
|
out_uint32_be(s, keysym);
|
||||||
|
s_mark_end(s);
|
||||||
|
error = lib_send_copy(v, s);
|
||||||
|
|
||||||
|
switch (keysym)
|
||||||
|
{
|
||||||
|
case XK_Control_L: /* left control */
|
||||||
|
v->shift_state = keydown;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case XK_Pause:
|
||||||
|
// [MS-RDPBCGR] 2.2.8.1.1.3.1.1.1 - A pause key scancode
|
||||||
|
// (up or down) is always immediately followed by a
|
||||||
|
// numlock key which we should ignore
|
||||||
|
v->ignore_next_numlock = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
end_keysym_msg:
|
||||||
|
free_stream(s);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
static int
|
static int
|
||||||
lib_mod_event(struct vnc *v, int msg, long param1, long param2,
|
lib_mod_event(struct vnc *v, int msg, long param1, long param2,
|
||||||
long param3, long param4)
|
long param3, long param4)
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
int key;
|
|
||||||
int error;
|
int error;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
@ -492,38 +571,7 @@ lib_mod_event(struct vnc *v, int msg, long param1, long param2,
|
||||||
}
|
}
|
||||||
else if ((msg >= 15) && (msg <= 16)) /* key events */
|
else if ((msg >= 15) && (msg <= 16)) /* key events */
|
||||||
{
|
{
|
||||||
key = param2;
|
error = process_keysym_msg(v, param2, (msg == 15));
|
||||||
|
|
||||||
if (key > 0)
|
|
||||||
{
|
|
||||||
if (key == 65027) /* altgr */
|
|
||||||
{
|
|
||||||
if (v->shift_state)
|
|
||||||
{
|
|
||||||
/* fix for mstsc sending left control down with altgr */
|
|
||||||
init_stream(s, 8192);
|
|
||||||
out_uint8(s, RFB_C2S_KEY_EVENT);
|
|
||||||
out_uint8(s, 0); /* down flag */
|
|
||||||
out_uint8s(s, 2);
|
|
||||||
out_uint32_be(s, 65507); /* left control */
|
|
||||||
s_mark_end(s);
|
|
||||||
lib_send_copy(v, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init_stream(s, 8192);
|
|
||||||
out_uint8(s, RFB_C2S_KEY_EVENT);
|
|
||||||
out_uint8(s, msg == 15); /* down flag */
|
|
||||||
out_uint8s(s, 2);
|
|
||||||
out_uint32_be(s, key);
|
|
||||||
s_mark_end(s);
|
|
||||||
error = lib_send_copy(v, s);
|
|
||||||
|
|
||||||
if (key == 65507) /* left control */
|
|
||||||
{
|
|
||||||
v->shift_state = msg == 15;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/* mouse events
|
/* mouse events
|
||||||
*
|
*
|
||||||
|
@ -613,7 +661,6 @@ lib_mod_event(struct vnc *v, int msg, long param1, long param2,
|
||||||
error = lib_send_copy(v, s);
|
error = lib_send_copy(v, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free_stream(s);
|
free_stream(s);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ enum vnc_resize_support_status
|
||||||
};
|
};
|
||||||
|
|
||||||
struct source_info;
|
struct source_info;
|
||||||
|
struct xrdp_client_info;
|
||||||
|
|
||||||
/* Defined in vnc_clip.c */
|
/* Defined in vnc_clip.c */
|
||||||
struct vnc_clipboard_data;
|
struct vnc_clipboard_data;
|
||||||
|
@ -151,7 +152,9 @@ struct vnc
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct vnc *v);
|
int (*server_bell_trigger)(struct vnc *v);
|
||||||
int (*server_chansrv_in_use)(struct vnc *v);
|
int (*server_chansrv_in_use)(struct vnc *v);
|
||||||
tintptr server_dumby[100 - 28]; /* align, 100 minus the number of server
|
void (*server_init_xkb_layout)(struct vnc *v,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
|
tintptr server_dumby[100 - 29]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
@ -170,6 +173,7 @@ struct vnc
|
||||||
char port[256];
|
char port[256];
|
||||||
int sck_closed;
|
int sck_closed;
|
||||||
int shift_state; /* 0 up, 1 down */
|
int shift_state; /* 0 up, 1 down */
|
||||||
|
int ignore_next_numlock; /* Used in pause key processing */
|
||||||
int keylayout;
|
int keylayout;
|
||||||
int clip_chanid;
|
int clip_chanid;
|
||||||
struct vnc_clipboard_data *vc;
|
struct vnc_clipboard_data *vc;
|
||||||
|
|
397
xrdp/lang.c
397
xrdp/lang.c
|
@ -39,58 +39,62 @@
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
struct xrdp_key_info *
|
struct xrdp_key_info *
|
||||||
get_key_info_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_key_info_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap)
|
struct xrdp_keymap *keymap)
|
||||||
{
|
{
|
||||||
struct xrdp_key_info *rv;
|
struct xrdp_key_info *rv;
|
||||||
int shift;
|
int shift;
|
||||||
int altgr;
|
int altgr;
|
||||||
int ext;
|
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
ext = device_flags & KBD_FLAG_EXT; /* 0x0100 */
|
shift = keys[SCANCODE_INDEX_LSHIFT_KEY] || keys[SCANCODE_INDEX_RSHIFT_KEY];
|
||||||
shift = keys[42] || keys[54];
|
altgr = keys[SCANCODE_INDEX_RALT_KEY]; /* right alt */
|
||||||
altgr = keys[56] & KBD_FLAG_EXT; /* right alt */
|
|
||||||
rv = 0;
|
rv = 0;
|
||||||
index = INDEX_FROM_SCANCODE(scan_code, ext);
|
|
||||||
|
|
||||||
if (num_lock &&
|
index = scancode_to_index(SCANCODE_FROM_KBD_EVENT(key_code, keyboard_flags));
|
||||||
index >= XR_RDP_SCAN_MIN_NUMLOCK && index <= XR_RDP_SCAN_MAX_NUMLOCK)
|
if (index >= 0)
|
||||||
{
|
{
|
||||||
rv = &(keymap->keys_numlock[index - XR_RDP_SCAN_MIN_NUMLOCK]);
|
// scancode_to_index() guarantees to map numlock scancodes
|
||||||
}
|
// to the same index values.
|
||||||
else if (shift && caps_lock && altgr)
|
if (num_lock &&
|
||||||
{
|
index >= SCANCODE_MIN_NUMLOCK &&
|
||||||
rv = &(keymap->keys_shiftcapslockaltgr[index]);
|
index <= SCANCODE_MAX_NUMLOCK)
|
||||||
}
|
{
|
||||||
else if (shift && caps_lock)
|
rv = &(keymap->keys_numlock[index - SCANCODE_MIN_NUMLOCK]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_shiftcapslock[index]);
|
else if (shift && caps_lock && altgr)
|
||||||
}
|
{
|
||||||
else if (shift && altgr)
|
rv = &(keymap->keys_shiftcapslockaltgr[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_shiftaltgr[index]);
|
else if (shift && caps_lock)
|
||||||
}
|
{
|
||||||
else if (shift)
|
rv = &(keymap->keys_shiftcapslock[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_shift[index]);
|
else if (shift && altgr)
|
||||||
}
|
{
|
||||||
else if (caps_lock && altgr)
|
rv = &(keymap->keys_shiftaltgr[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_capslockaltgr[index]);
|
else if (shift)
|
||||||
}
|
{
|
||||||
else if (caps_lock)
|
rv = &(keymap->keys_shift[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_capslock[index]);
|
else if (caps_lock && altgr)
|
||||||
}
|
{
|
||||||
else if (altgr)
|
rv = &(keymap->keys_capslockaltgr[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_altgr[index]);
|
else if (caps_lock)
|
||||||
}
|
{
|
||||||
else
|
rv = &(keymap->keys_capslock[index]);
|
||||||
{
|
}
|
||||||
rv = &(keymap->keys_noshift[index]);
|
else if (altgr)
|
||||||
|
{
|
||||||
|
rv = &(keymap->keys_altgr[index]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rv = &(keymap->keys_noshift[index]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
|
@ -98,13 +102,13 @@ get_key_info_from_scan_code(int device_flags, int scan_code, int *keys,
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int
|
int
|
||||||
get_keysym_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_keysym_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap)
|
struct xrdp_keymap *keymap)
|
||||||
{
|
{
|
||||||
struct xrdp_key_info *ki;
|
struct xrdp_key_info *ki;
|
||||||
|
|
||||||
ki = get_key_info_from_scan_code(device_flags, scan_code, keys,
|
ki = get_key_info_from_kbd_event(keyboard_flags, key_code, keys,
|
||||||
caps_lock, num_lock, scroll_lock,
|
caps_lock, num_lock, scroll_lock,
|
||||||
keymap);
|
keymap);
|
||||||
|
|
||||||
|
@ -118,13 +122,13 @@ get_keysym_from_scan_code(int device_flags, int scan_code, int *keys,
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
char32_t
|
char32_t
|
||||||
get_char_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_char_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap)
|
struct xrdp_keymap *keymap)
|
||||||
{
|
{
|
||||||
struct xrdp_key_info *ki;
|
struct xrdp_key_info *ki;
|
||||||
|
|
||||||
ki = get_key_info_from_scan_code(device_flags, scan_code, keys,
|
ki = get_key_info_from_kbd_event(keyboard_flags, key_code, keys,
|
||||||
caps_lock, num_lock, scroll_lock,
|
caps_lock, num_lock, scroll_lock,
|
||||||
keymap);
|
keymap);
|
||||||
|
|
||||||
|
@ -138,28 +142,34 @@ get_char_from_scan_code(int device_flags, int scan_code, int *keys,
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**
|
/**
|
||||||
* Tests a table key to see if it's a valid scancode
|
* Converts a table key to a scancode index value
|
||||||
*
|
*
|
||||||
* @param key Table key
|
* @param key Table key
|
||||||
* @param[out] scancode scancode index value (0..255) if 1 is returned
|
* @return index >= 0, or < 0 for an invalid key
|
||||||
* @return Boolean != 0 if the key is valid
|
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
is_valid_scancode(const char *key, int *scancode)
|
key_to_scancode_index(const char *key)
|
||||||
{
|
{
|
||||||
int rv = 0;
|
int rv = -1;
|
||||||
int extended = 0;
|
int keyboard_flags = 0;
|
||||||
if ((key[0] == 'E' || key[0] == 'e') && key[1] == '0' && key[2] == '_')
|
if ((key[0] == 'E' || key[0] == 'e') && key[2] == '_')
|
||||||
{
|
{
|
||||||
extended = 1;
|
if (key[1] == '0')
|
||||||
key += 3;
|
{
|
||||||
|
keyboard_flags |= KBDFLAGS_EXTENDED;
|
||||||
|
key += 3;
|
||||||
|
}
|
||||||
|
else if (key[1] == '1')
|
||||||
|
{
|
||||||
|
keyboard_flags |= KBDFLAGS_EXTENDED1;
|
||||||
|
key += 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isxdigit(key[0]) && isxdigit(key[1]) && key[2] == '\0')
|
if (isxdigit(key[0]) && isxdigit(key[1]) && key[2] == '\0')
|
||||||
{
|
{
|
||||||
rv = 1;
|
int code = XDIGIT_TO_VAL(key[0]) * 16 + XDIGIT_TO_VAL(key[1]);
|
||||||
*scancode = XDIGIT_TO_VAL(key[0]) * 16 + XDIGIT_TO_VAL(key[1]);
|
rv = scancode_to_index(SCANCODE_FROM_KBD_EVENT(code, keyboard_flags));
|
||||||
*scancode = INDEX_FROM_SCANCODE(*scancode, extended);
|
|
||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
@ -248,13 +258,14 @@ km_read_section(toml_table_t *tfile, const char *section_name,
|
||||||
{
|
{
|
||||||
const char *key;
|
const char *key;
|
||||||
toml_datum_t val;
|
toml_datum_t val;
|
||||||
int index;
|
int i;
|
||||||
int scancode; // index value 0..255
|
|
||||||
char *p;
|
char *p;
|
||||||
const char *unicode_str;
|
const char *unicode_str;
|
||||||
for (index = 0 ; (key = toml_key_in(section, index)) != NULL; ++index)
|
for (i = 0 ; (key = toml_key_in(section, i)) != NULL; ++i)
|
||||||
{
|
{
|
||||||
if (!is_valid_scancode(key, &scancode))
|
// Get a scancode index from the key if possible
|
||||||
|
int sindex = key_to_scancode_index(key);
|
||||||
|
if (sindex < 0)
|
||||||
{
|
{
|
||||||
LOG(LOG_LEVEL_WARNING,
|
LOG(LOG_LEVEL_WARNING,
|
||||||
"Can't parse value '%s' in [%s] in keymap file",
|
"Can't parse value '%s' in [%s] in keymap file",
|
||||||
|
@ -283,7 +294,7 @@ km_read_section(toml_table_t *tfile, const char *section_name,
|
||||||
|
|
||||||
/* Parse both values and add them to the keymap, logging any
|
/* Parse both values and add them to the keymap, logging any
|
||||||
* errors */
|
* errors */
|
||||||
if (!is_valid_keysym(val.u.s, &keymap[scancode].sym))
|
if (!is_valid_keysym(val.u.s, &keymap[sindex].sym))
|
||||||
{
|
{
|
||||||
LOG(LOG_LEVEL_WARNING,
|
LOG(LOG_LEVEL_WARNING,
|
||||||
"Can't read KeySym for [%s]:%s in keymap file",
|
"Can't read KeySym for [%s]:%s in keymap file",
|
||||||
|
@ -291,7 +302,7 @@ km_read_section(toml_table_t *tfile, const char *section_name,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unicode_str != NULL &&
|
if (unicode_str != NULL &&
|
||||||
!is_valid_unicode_char(unicode_str, &keymap[scancode].chr))
|
!is_valid_unicode_char(unicode_str, &keymap[sindex].chr))
|
||||||
{
|
{
|
||||||
LOG(LOG_LEVEL_WARNING,
|
LOG(LOG_LEVEL_WARNING,
|
||||||
"Can't read unicode character for [%s]:%s in keymap file",
|
"Can't read unicode character for [%s]:%s in keymap file",
|
||||||
|
@ -383,19 +394,19 @@ km_load_file(const char *filename, struct xrdp_keymap *keymap)
|
||||||
keymap->keys_shiftcapslockaltgr);
|
keymap->keys_shiftcapslockaltgr);
|
||||||
|
|
||||||
/* The numlock map is much smaller and offset by
|
/* The numlock map is much smaller and offset by
|
||||||
* XR_RDP_SCAN_MAX_NUMLOCK. Read the section into a temporary
|
* SCANCODE_MIX_NUMLOCK. Read the section into a temporary
|
||||||
* area and copy it over */
|
* area and copy it over */
|
||||||
struct xrdp_key_info keys_numlock[256];
|
struct xrdp_key_info keys_numlock[SCANCODE_MAX_INDEX + 1];
|
||||||
int i;
|
int i;
|
||||||
for (i = XR_RDP_SCAN_MIN_NUMLOCK; i <= XR_RDP_SCAN_MAX_NUMLOCK; ++i)
|
for (i = SCANCODE_MIN_NUMLOCK; i <= SCANCODE_MAX_NUMLOCK; ++i)
|
||||||
{
|
{
|
||||||
keys_numlock[i].sym = 0;
|
keys_numlock[i].sym = 0;
|
||||||
keys_numlock[i].chr = 0;
|
keys_numlock[i].chr = 0;
|
||||||
}
|
}
|
||||||
km_read_section(tfile, "numlock", keys_numlock);
|
km_read_section(tfile, "numlock", keys_numlock);
|
||||||
for (i = XR_RDP_SCAN_MIN_NUMLOCK; i <= XR_RDP_SCAN_MAX_NUMLOCK; ++i)
|
for (i = SCANCODE_MIN_NUMLOCK; i <= SCANCODE_MAX_NUMLOCK; ++i)
|
||||||
{
|
{
|
||||||
keymap->keys_numlock[i - XR_RDP_SCAN_MIN_NUMLOCK] = keys_numlock[i];
|
keymap->keys_numlock[i - SCANCODE_MIN_NUMLOCK] = keys_numlock[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
toml_free(tfile);
|
toml_free(tfile);
|
||||||
|
@ -403,3 +414,253 @@ km_load_file(const char *filename, struct xrdp_keymap *keymap)
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void
|
||||||
|
xrdp_init_xkb_layout(struct xrdp_client_info *client_info)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
int index = 0;
|
||||||
|
int bytes;
|
||||||
|
struct list *names = (struct list *)NULL;
|
||||||
|
struct list *items = (struct list *)NULL;
|
||||||
|
struct list *values = (struct list *)NULL;
|
||||||
|
char *item = (char *)NULL;
|
||||||
|
char *value = (char *)NULL;
|
||||||
|
char *q = (char *)NULL;
|
||||||
|
char keyboard_cfg_file[256] = { 0 };
|
||||||
|
char rdp_layout[256] = { 0 };
|
||||||
|
|
||||||
|
const struct xrdp_keyboard_overrides *ko =
|
||||||
|
&client_info->xrdp_keyboard_overrides;
|
||||||
|
|
||||||
|
LOG(LOG_LEVEL_INFO, "xrdp_init_xkb_layout: Keyboard information sent"
|
||||||
|
" by the RDP client, keyboard_type:[0x%02X], keyboard_subtype:[0x%02X],"
|
||||||
|
" keylayout:[0x%08X]",
|
||||||
|
client_info->keyboard_type, client_info->keyboard_subtype,
|
||||||
|
client_info->keylayout);
|
||||||
|
|
||||||
|
if (ko->type != -1)
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_INFO, "overrode keyboard_type 0x%02X"
|
||||||
|
" with 0x%02X", client_info->keyboard_type, ko->type);
|
||||||
|
client_info->keyboard_type = ko->type;
|
||||||
|
}
|
||||||
|
if (ko->subtype != -1)
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_INFO, "overrode keyboard_subtype 0x%02X"
|
||||||
|
" with 0x%02X", client_info->keyboard_subtype,
|
||||||
|
ko->subtype);
|
||||||
|
client_info->keyboard_subtype = ko->subtype;
|
||||||
|
}
|
||||||
|
if (ko->layout != -1)
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_INFO, "overrode keylayout 0x%08X"
|
||||||
|
" with 0x%08X", client_info->keylayout, ko->layout);
|
||||||
|
client_info->keylayout = ko->layout;
|
||||||
|
}
|
||||||
|
/* infer model/variant */
|
||||||
|
/* TODO specify different X11 keyboard models/variants */
|
||||||
|
g_memset(client_info->model, 0, sizeof(client_info->model));
|
||||||
|
g_memset(client_info->variant, 0, sizeof(client_info->variant));
|
||||||
|
g_strncpy(client_info->layout, "us", sizeof(client_info->layout) - 1);
|
||||||
|
if (client_info->keyboard_subtype == 3)
|
||||||
|
{
|
||||||
|
/* macintosh keyboard */
|
||||||
|
bytes = sizeof(client_info->variant);
|
||||||
|
g_strncpy(client_info->variant, "mac", bytes - 1);
|
||||||
|
}
|
||||||
|
else if (client_info->keyboard_subtype == 0)
|
||||||
|
{
|
||||||
|
/* default - standard subtype */
|
||||||
|
client_info->keyboard_subtype = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_snprintf(keyboard_cfg_file, 255, "%s/xrdp_keyboard.ini", XRDP_CFG_PATH);
|
||||||
|
LOG(LOG_LEVEL_DEBUG, "keyboard_cfg_file %s", keyboard_cfg_file);
|
||||||
|
|
||||||
|
fd = g_file_open_ro(keyboard_cfg_file);
|
||||||
|
|
||||||
|
if (fd >= 0)
|
||||||
|
{
|
||||||
|
int section_found = -1;
|
||||||
|
char section_rdp_layouts[256] = { 0 };
|
||||||
|
char section_layouts_map[256] = { 0 };
|
||||||
|
|
||||||
|
names = list_create();
|
||||||
|
names->auto_free = 1;
|
||||||
|
items = list_create();
|
||||||
|
items->auto_free = 1;
|
||||||
|
values = list_create();
|
||||||
|
values->auto_free = 1;
|
||||||
|
|
||||||
|
file_read_sections(fd, names);
|
||||||
|
for (index = 0; index < names->count; index++)
|
||||||
|
{
|
||||||
|
q = (char *)list_get_item(names, index);
|
||||||
|
if (g_strncasecmp("default", q, 8) != 0)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
file_read_section(fd, q, items, values);
|
||||||
|
|
||||||
|
for (i = 0; i < items->count; i++)
|
||||||
|
{
|
||||||
|
item = (char *)list_get_item(items, i);
|
||||||
|
value = (char *)list_get_item(values, i);
|
||||||
|
LOG(LOG_LEVEL_DEBUG, "xrdp_init_xkb_layout: item %s value %s",
|
||||||
|
item, value);
|
||||||
|
if (g_strcasecmp(item, "keyboard_type") == 0)
|
||||||
|
{
|
||||||
|
int v = g_atoi(value);
|
||||||
|
if (v == client_info->keyboard_type)
|
||||||
|
{
|
||||||
|
section_found = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "keyboard_subtype") == 0)
|
||||||
|
{
|
||||||
|
int v = g_atoi(value);
|
||||||
|
if (v != client_info->keyboard_subtype &&
|
||||||
|
section_found == index)
|
||||||
|
{
|
||||||
|
section_found = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "rdp_layouts") == 0)
|
||||||
|
{
|
||||||
|
if (section_found != -1 && section_found == index)
|
||||||
|
{
|
||||||
|
g_strncpy(section_rdp_layouts, value, 255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "layouts_map") == 0)
|
||||||
|
{
|
||||||
|
if (section_found != -1 && section_found == index)
|
||||||
|
{
|
||||||
|
g_strncpy(section_layouts_map, value, 255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "model") == 0)
|
||||||
|
{
|
||||||
|
if (section_found != -1 && section_found == index)
|
||||||
|
{
|
||||||
|
bytes = sizeof(client_info->model);
|
||||||
|
g_memset(client_info->model, 0, bytes);
|
||||||
|
g_strncpy(client_info->model, value, bytes - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "variant") == 0)
|
||||||
|
{
|
||||||
|
if (section_found != -1 && section_found == index)
|
||||||
|
{
|
||||||
|
bytes = sizeof(client_info->variant);
|
||||||
|
g_memset(client_info->variant, 0, bytes);
|
||||||
|
g_strncpy(client_info->variant, value, bytes - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "options") == 0)
|
||||||
|
{
|
||||||
|
if (section_found != -1 && section_found == index)
|
||||||
|
{
|
||||||
|
bytes = sizeof(client_info->options);
|
||||||
|
g_memset(client_info->options, 0, bytes);
|
||||||
|
g_strncpy(client_info->options, value, bytes - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* mixing items from different sections will result in
|
||||||
|
* skipping over current section.
|
||||||
|
*/
|
||||||
|
LOG(LOG_LEVEL_DEBUG, "xrdp_init_xkb_layout: skipping "
|
||||||
|
"configuration item - %s, continuing to next "
|
||||||
|
"section", item);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list_clear(items);
|
||||||
|
list_clear(values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (section_found == -1)
|
||||||
|
{
|
||||||
|
g_memset(section_rdp_layouts, 0, sizeof(char) * 256);
|
||||||
|
g_memset(section_layouts_map, 0, sizeof(char) * 256);
|
||||||
|
// read default section
|
||||||
|
file_read_section(fd, "default", items, values);
|
||||||
|
for (index = 0; index < items->count; index++)
|
||||||
|
{
|
||||||
|
item = (char *)list_get_item(items, index);
|
||||||
|
value = (char *)list_get_item(values, index);
|
||||||
|
if (g_strcasecmp(item, "rdp_layouts") == 0)
|
||||||
|
{
|
||||||
|
g_strncpy(section_rdp_layouts, value, 255);
|
||||||
|
}
|
||||||
|
else if (g_strcasecmp(item, "layouts_map") == 0)
|
||||||
|
{
|
||||||
|
g_strncpy(section_layouts_map, value, 255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list_clear(items);
|
||||||
|
list_clear(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* load the map */
|
||||||
|
file_read_section(fd, section_rdp_layouts, items, values);
|
||||||
|
for (index = 0; index < items->count; index++)
|
||||||
|
{
|
||||||
|
int rdp_layout_id;
|
||||||
|
item = (char *)list_get_item(items, index);
|
||||||
|
value = (char *)list_get_item(values, index);
|
||||||
|
rdp_layout_id = g_htoi(value);
|
||||||
|
if (rdp_layout_id == client_info->keylayout)
|
||||||
|
{
|
||||||
|
g_strncpy(rdp_layout, item, 255);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list_clear(items);
|
||||||
|
list_clear(values);
|
||||||
|
file_read_section(fd, section_layouts_map, items, values);
|
||||||
|
for (index = 0; index < items->count; index++)
|
||||||
|
{
|
||||||
|
item = (char *)list_get_item(items, index);
|
||||||
|
value = (char *)list_get_item(values, index);
|
||||||
|
if (g_strcasecmp(item, rdp_layout) == 0)
|
||||||
|
{
|
||||||
|
bytes = sizeof(client_info->layout);
|
||||||
|
g_strncpy(client_info->layout, value, bytes - 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list_delete(names);
|
||||||
|
list_delete(items);
|
||||||
|
list_delete(values);
|
||||||
|
|
||||||
|
LOG(LOG_LEVEL_INFO, "xrdp_init_xkb_layout: model [%s] variant [%s] "
|
||||||
|
"layout [%s] options [%s]", client_info->model,
|
||||||
|
client_info->variant, client_info->layout, client_info->options);
|
||||||
|
g_file_close(fd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_ERROR, "xrdp_init_xkb_layout: error opening %s",
|
||||||
|
keyboard_cfg_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialise the rules and a few keycodes for xorgxrdp
|
||||||
|
snprintf(client_info->xkb_rules, sizeof(client_info->xkb_rules),
|
||||||
|
"%s", scancode_get_xkb_rules());
|
||||||
|
client_info->x11_keycode_caps_lock =
|
||||||
|
scancode_to_x11_keycode(SCANCODE_CAPS_KEY);
|
||||||
|
client_info->x11_keycode_num_lock =
|
||||||
|
scancode_to_x11_keycode(SCANCODE_NUMLOCK_KEY);
|
||||||
|
client_info->x11_keycode_scroll_lock =
|
||||||
|
scancode_to_x11_keycode(SCANCODE_SCROLL_KEY);
|
||||||
|
}
|
||||||
|
|
30
xrdp/xrdp.h
30
xrdp/xrdp.h
|
@ -147,8 +147,14 @@ int
|
||||||
xrdp_wm_mouse_touch(struct xrdp_wm *self, int gesture, int param);
|
xrdp_wm_mouse_touch(struct xrdp_wm *self, int gesture, int param);
|
||||||
int
|
int
|
||||||
xrdp_wm_mouse_click(struct xrdp_wm *self, int x, int y, int but, int down);
|
xrdp_wm_mouse_click(struct xrdp_wm *self, int x, int y, int but, int down);
|
||||||
|
/**
|
||||||
|
* Handle a TS_KEYBOARD_EVENT ([MS-RDPBCGR] 2.2.8.1.1.3.1.1.1)
|
||||||
|
*
|
||||||
|
* @param device_flags keyboardFlags value from PDU
|
||||||
|
* @param key_code keyCode value from PDU
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
xrdp_wm_key(struct xrdp_wm *self, int device_flags, int scan_code);
|
xrdp_wm_key(struct xrdp_wm *self, int keyboard_flags, int key_code);
|
||||||
int
|
int
|
||||||
xrdp_wm_key_sync(struct xrdp_wm *self, int device_flags, int key_flags);
|
xrdp_wm_key_sync(struct xrdp_wm *self, int device_flags, int key_flags);
|
||||||
int
|
int
|
||||||
|
@ -424,15 +430,15 @@ set_string(char **in_str, const char *in);
|
||||||
|
|
||||||
/* in lang.c */
|
/* in lang.c */
|
||||||
struct xrdp_key_info *
|
struct xrdp_key_info *
|
||||||
get_key_info_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_key_info_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap);
|
struct xrdp_keymap *keymap);
|
||||||
int
|
int
|
||||||
get_keysym_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_keysym_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap);
|
struct xrdp_keymap *keymap);
|
||||||
char32_t
|
char32_t
|
||||||
get_char_from_scan_code(int device_flags, int scan_code, int *keys,
|
get_char_from_kbd_event(int keyboard_flags, int key_code, int *keys,
|
||||||
int caps_lock, int num_lock, int scroll_lock,
|
int caps_lock, int num_lock, int scroll_lock,
|
||||||
struct xrdp_keymap *keymap);
|
struct xrdp_keymap *keymap);
|
||||||
int
|
int
|
||||||
|
@ -441,6 +447,19 @@ get_keymaps(int keylayout, struct xrdp_keymap *keymap);
|
||||||
int
|
int
|
||||||
km_load_file(const char *filename, struct xrdp_keymap *keymap);
|
km_load_file(const char *filename, struct xrdp_keymap *keymap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initialise the XKB layout
|
||||||
|
*
|
||||||
|
* Not all backends need to use XKB for keyboard mapping. This
|
||||||
|
* call is used by those modules that do need an XKB mapping.
|
||||||
|
*
|
||||||
|
* Other modules and the login screen use other routines in
|
||||||
|
* lang.c to interpret incoming RDP scancodes
|
||||||
|
* @param client_info Client info struct to initialise
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xrdp_init_xkb_layout(struct xrdp_client_info *client_info);
|
||||||
|
|
||||||
/* xrdp_login_wnd.c */
|
/* xrdp_login_wnd.c */
|
||||||
/**
|
/**
|
||||||
* Gets the DPI of the login (primary) monitor
|
* Gets the DPI of the login (primary) monitor
|
||||||
|
@ -522,6 +541,9 @@ int
|
||||||
server_bell_trigger(struct xrdp_mod *mod);
|
server_bell_trigger(struct xrdp_mod *mod);
|
||||||
int
|
int
|
||||||
server_chansrv_in_use(struct xrdp_mod *mod);
|
server_chansrv_in_use(struct xrdp_mod *mod);
|
||||||
|
void
|
||||||
|
server_init_xkb_layout(struct xrdp_mod *mod,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
int
|
int
|
||||||
server_fill_rect(struct xrdp_mod *mod, int x, int y, int cx, int cy);
|
server_fill_rect(struct xrdp_mod *mod, int x, int y, int cx, int cy);
|
||||||
int
|
int
|
||||||
|
|
|
@ -248,6 +248,7 @@ username=ask
|
||||||
password=ask
|
password=ask
|
||||||
port=-1
|
port=-1
|
||||||
code=20
|
code=20
|
||||||
|
#keycode_set=evdev
|
||||||
|
|
||||||
[Xvnc]
|
[Xvnc]
|
||||||
name=Xvnc
|
name=Xvnc
|
||||||
|
|
|
@ -1024,9 +1024,6 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
int i;
|
int i;
|
||||||
int shift;
|
|
||||||
int ext;
|
|
||||||
int scan_code;
|
|
||||||
struct xrdp_bitmap *b;
|
struct xrdp_bitmap *b;
|
||||||
struct xrdp_bitmap *focus_out_control;
|
struct xrdp_bitmap *focus_out_control;
|
||||||
|
|
||||||
|
@ -1044,12 +1041,13 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
{
|
{
|
||||||
if (msg == WM_KEYDOWN)
|
if (msg == WM_KEYDOWN)
|
||||||
{
|
{
|
||||||
scan_code = param1 % 128;
|
int scan_code = SCANCODE_FROM_KBD_EVENT(param1, param2);
|
||||||
|
int shift = self->wm->keys[SCANCODE_INDEX_LSHIFT_KEY] ||
|
||||||
|
self->wm->keys[SCANCODE_INDEX_RSHIFT_KEY];
|
||||||
|
|
||||||
if (scan_code == 15) /* tab */
|
if (scan_code == SCANCODE_TAB_KEY) /* tab */
|
||||||
{
|
{
|
||||||
/* move to next tab stop */
|
/* move to next tab stop */
|
||||||
shift = self->wm->keys[42] || self->wm->keys[54];
|
|
||||||
i = -1;
|
i = -1;
|
||||||
|
|
||||||
if (self->child_list != 0)
|
if (self->child_list != 0)
|
||||||
|
@ -1114,7 +1112,8 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (scan_code == 28) /* enter */
|
else if (scan_code == SCANCODE_ENTER_KEY ||
|
||||||
|
scan_code == SCANCODE_KP_ENTER_KEY)
|
||||||
{
|
{
|
||||||
if (self->default_button != 0)
|
if (self->default_button != 0)
|
||||||
{
|
{
|
||||||
|
@ -1126,7 +1125,7 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (scan_code == 1) /* esc */
|
else if (scan_code == SCANCODE_ESC_KEY)
|
||||||
{
|
{
|
||||||
if (self->esc_button != 0)
|
if (self->esc_button != 0)
|
||||||
{
|
{
|
||||||
|
@ -1149,12 +1148,13 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
{
|
{
|
||||||
if (msg == WM_KEYDOWN)
|
if (msg == WM_KEYDOWN)
|
||||||
{
|
{
|
||||||
scan_code = param1 % 128;
|
int scan_code = SCANCODE_FROM_KBD_EVENT(param1, param2);
|
||||||
ext = param2 & 0x0100;
|
int num_lock = self->wm->num_lock;
|
||||||
|
|
||||||
/* left or up arrow */
|
/* left or up arrow */
|
||||||
if ((scan_code == 75 || scan_code == 72) &&
|
if ((scan_code == SCANCODE_LEFT_ARROW_KEY) ||
|
||||||
(ext || self->wm->num_lock == 0))
|
(scan_code == SCANCODE_UP_ARROW_KEY) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_4_KEY)) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_8_KEY)))
|
||||||
{
|
{
|
||||||
if (self->edit_pos > 0)
|
if (self->edit_pos > 0)
|
||||||
{
|
{
|
||||||
|
@ -1163,8 +1163,10 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* right or down arrow */
|
/* right or down arrow */
|
||||||
else if ((scan_code == 77 || scan_code == 80) &&
|
else if ((scan_code == SCANCODE_RIGHT_ARROW_KEY) ||
|
||||||
(ext || self->wm->num_lock == 0))
|
(scan_code == SCANCODE_DOWN_ARROW_KEY) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_6_KEY)) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_2_KEY)))
|
||||||
{
|
{
|
||||||
if (self->edit_pos < (int)utf8_char_count(self->caption1))
|
if (self->edit_pos < (int)utf8_char_count(self->caption1))
|
||||||
{
|
{
|
||||||
|
@ -1173,7 +1175,7 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* backspace */
|
/* backspace */
|
||||||
else if (scan_code == 14)
|
else if (scan_code == SCANCODE_BACKSPACE_KEY)
|
||||||
{
|
{
|
||||||
n = utf8_char_count(self->caption1);
|
n = utf8_char_count(self->caption1);
|
||||||
|
|
||||||
|
@ -1188,8 +1190,9 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* delete */
|
/* delete */
|
||||||
else if (scan_code == 83 &&
|
else if ((scan_code == SCANCODE_DEL_KEY) ||
|
||||||
(ext || self->wm->num_lock == 0))
|
(!num_lock && (scan_code == SCANCODE_KP_DEL_KEY)))
|
||||||
|
|
||||||
{
|
{
|
||||||
n = utf8_char_count(self->caption1);
|
n = utf8_char_count(self->caption1);
|
||||||
|
|
||||||
|
@ -1203,8 +1206,8 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* end */
|
/* end */
|
||||||
else if (scan_code == 79 &&
|
else if ((scan_code == SCANCODE_END_KEY) ||
|
||||||
(ext || self->wm->num_lock == 0))
|
(!num_lock && (scan_code == SCANCODE_KP_1_KEY)))
|
||||||
{
|
{
|
||||||
n = utf8_char_count(self->caption1);
|
n = utf8_char_count(self->caption1);
|
||||||
|
|
||||||
|
@ -1215,8 +1218,8 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* home */
|
/* home */
|
||||||
else if ((scan_code == 71) &&
|
else if ((scan_code == SCANCODE_HOME_KEY) ||
|
||||||
(ext || (self->wm->num_lock == 0)))
|
(!num_lock && (scan_code == SCANCODE_KP_7_KEY)))
|
||||||
{
|
{
|
||||||
if (self->edit_pos > 0)
|
if (self->edit_pos > 0)
|
||||||
{
|
{
|
||||||
|
@ -1226,8 +1229,8 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char32_t c = get_char_from_scan_code
|
char32_t c = get_char_from_kbd_event
|
||||||
(param2, scan_code, self->wm->keys, self->wm->caps_lock,
|
(param2, param1, self->wm->keys, self->wm->caps_lock,
|
||||||
self->wm->num_lock, self->wm->scroll_lock,
|
self->wm->num_lock, self->wm->scroll_lock,
|
||||||
&(self->wm->keymap));
|
&(self->wm->keymap));
|
||||||
// Add a printing character to the string. If successful,
|
// Add a printing character to the string. If successful,
|
||||||
|
@ -1245,12 +1248,14 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
{
|
{
|
||||||
if (msg == WM_KEYDOWN)
|
if (msg == WM_KEYDOWN)
|
||||||
{
|
{
|
||||||
scan_code = param1 % 128;
|
int scan_code = SCANCODE_FROM_KBD_EVENT(param1, param2);
|
||||||
ext = param2 & 0x0100;
|
int num_lock = self->wm->num_lock;
|
||||||
|
|
||||||
/* left or up arrow */
|
/* left or up arrow */
|
||||||
if (((scan_code == 75) || (scan_code == 72)) &&
|
if ((scan_code == SCANCODE_LEFT_ARROW_KEY) ||
|
||||||
(ext || (self->wm->num_lock == 0)))
|
(scan_code == SCANCODE_UP_ARROW_KEY) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_4_KEY)) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_8_KEY)))
|
||||||
{
|
{
|
||||||
if (self->item_index > 0)
|
if (self->item_index > 0)
|
||||||
{
|
{
|
||||||
|
@ -1264,8 +1269,10 @@ xrdp_bitmap_def_proc(struct xrdp_bitmap *self, int msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* right or down arrow */
|
/* right or down arrow */
|
||||||
else if ((scan_code == 77 || scan_code == 80) &&
|
else if ((scan_code == SCANCODE_RIGHT_ARROW_KEY) ||
|
||||||
(ext || self->wm->num_lock == 0))
|
(scan_code == SCANCODE_DOWN_ARROW_KEY) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_6_KEY)) ||
|
||||||
|
(!num_lock && (scan_code == SCANCODE_KP_2_KEY)))
|
||||||
{
|
{
|
||||||
if ((self->item_index + 1) < self->string_list->count)
|
if ((self->item_index + 1) < self->string_list->count)
|
||||||
{
|
{
|
||||||
|
|
|
@ -384,6 +384,7 @@ xrdp_mm_setup_mod1(struct xrdp_mm *self)
|
||||||
self->mod->server_end_update = server_end_update;
|
self->mod->server_end_update = server_end_update;
|
||||||
self->mod->server_bell_trigger = server_bell_trigger;
|
self->mod->server_bell_trigger = server_bell_trigger;
|
||||||
self->mod->server_chansrv_in_use = server_chansrv_in_use;
|
self->mod->server_chansrv_in_use = server_chansrv_in_use;
|
||||||
|
self->mod->server_init_xkb_layout = server_init_xkb_layout;
|
||||||
self->mod->server_fill_rect = server_fill_rect;
|
self->mod->server_fill_rect = server_fill_rect;
|
||||||
self->mod->server_screen_blt = server_screen_blt;
|
self->mod->server_screen_blt = server_screen_blt;
|
||||||
self->mod->server_paint_rect = server_paint_rect;
|
self->mod->server_paint_rect = server_paint_rect;
|
||||||
|
@ -525,6 +526,18 @@ xrdp_mm_setup_mod2(struct xrdp_mm *self)
|
||||||
if (self->mod->mod_connect(self->mod) == 0)
|
if (self->mod->mod_connect(self->mod) == 0)
|
||||||
{
|
{
|
||||||
rv = 0; /* connect success */
|
rv = 0; /* connect success */
|
||||||
|
|
||||||
|
// If we've received a recent TS_SYNC_EVENT, pass it on to
|
||||||
|
// the module so (e.g.) NumLock starts in the right state.
|
||||||
|
if (self->last_sync_saved)
|
||||||
|
{
|
||||||
|
int key_flags = self->last_sync_key_flags;
|
||||||
|
int device_flags = self->last_sync_device_flags;
|
||||||
|
self->last_sync_saved = 0;
|
||||||
|
self->mod->mod_event(self->mod, WM_KEYBRD_SYNC, key_flags,
|
||||||
|
device_flags, key_flags, device_flags);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3986,6 +3999,15 @@ server_chansrv_in_use(struct xrdp_mod *mod)
|
||||||
return wm->mm->use_chansrv;
|
return wm->mm->use_chansrv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Init the XKB layout */
|
||||||
|
void
|
||||||
|
server_init_xkb_layout(struct xrdp_mod *mod,
|
||||||
|
struct xrdp_client_info *client_info)
|
||||||
|
{
|
||||||
|
xrdp_init_xkb_layout(client_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int
|
int
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "xrdp_constants.h"
|
#include "xrdp_constants.h"
|
||||||
#include "fifo.h"
|
#include "fifo.h"
|
||||||
#include "guid.h"
|
#include "guid.h"
|
||||||
|
#include "scancode.h"
|
||||||
#include "xrdp_client_info.h"
|
#include "xrdp_client_info.h"
|
||||||
|
|
||||||
#define MAX_NR_CHANNELS 16
|
#define MAX_NR_CHANNELS 16
|
||||||
|
@ -123,6 +124,8 @@ struct xrdp_mod
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct xrdp_mod *v);
|
int (*server_bell_trigger)(struct xrdp_mod *v);
|
||||||
int (*server_chansrv_in_use)(struct xrdp_mod *v);
|
int (*server_chansrv_in_use)(struct xrdp_mod *v);
|
||||||
|
void (*server_init_xkb_layout)(struct xrdp_mod *v,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct xrdp_mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct xrdp_mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
@ -191,7 +194,7 @@ struct xrdp_mod
|
||||||
int (*server_egfx_cmd)(struct xrdp_mod *v,
|
int (*server_egfx_cmd)(struct xrdp_mod *v,
|
||||||
char *cmd, int cmd_bytes,
|
char *cmd, int cmd_bytes,
|
||||||
char *data, int data_bytes);
|
char *data, int data_bytes);
|
||||||
tintptr server_dumby[100 - 50]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 51]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as int */
|
tintptr handle; /* pointer to self as int */
|
||||||
|
@ -444,6 +447,10 @@ struct xrdp_mm
|
||||||
struct display_control_monitor_layout_data *resize_data;
|
struct display_control_monitor_layout_data *resize_data;
|
||||||
struct list *resize_queue;
|
struct list *resize_queue;
|
||||||
tbus resize_ready;
|
tbus resize_ready;
|
||||||
|
/* Last sync event if a module isn't loaded */
|
||||||
|
int last_sync_saved;
|
||||||
|
int last_sync_key_flags;
|
||||||
|
int last_sync_device_flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xrdp_key_info
|
struct xrdp_key_info
|
||||||
|
@ -452,28 +459,20 @@ struct xrdp_key_info
|
||||||
char32_t chr;
|
char32_t chr;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Keyboard description
|
|
||||||
*
|
|
||||||
* Each section maps an RDP scancode to a KeySym and a Unicode
|
|
||||||
* character.
|
|
||||||
*/
|
|
||||||
#define INDEX_FROM_SCANCODE(scancode,extended) \
|
|
||||||
(((scancode) & 0x7f) | ((extended) ? 0x80 : 0))
|
|
||||||
|
|
||||||
struct xrdp_keymap
|
struct xrdp_keymap
|
||||||
{
|
{
|
||||||
struct xrdp_key_info keys_noshift[256];
|
// These arrays are indexed by a return from scancode_to_index()
|
||||||
struct xrdp_key_info keys_shift[256];
|
struct xrdp_key_info keys_noshift[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_altgr[256];
|
struct xrdp_key_info keys_shift[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_shiftaltgr[256];
|
struct xrdp_key_info keys_altgr[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_capslock[256];
|
struct xrdp_key_info keys_shiftaltgr[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_capslockaltgr[256];
|
struct xrdp_key_info keys_capslock[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_shiftcapslock[256];
|
struct xrdp_key_info keys_capslockaltgr[SCANCODE_MAX_INDEX + 1];
|
||||||
struct xrdp_key_info keys_shiftcapslockaltgr[256];
|
struct xrdp_key_info keys_shiftcapslock[SCANCODE_MAX_INDEX + 1];
|
||||||
|
struct xrdp_key_info keys_shiftcapslockaltgr[SCANCODE_MAX_INDEX + 1];
|
||||||
// NumLock is restricted to a much smaller set of keys
|
// NumLock is restricted to a much smaller set of keys
|
||||||
struct xrdp_key_info keys_numlock[XR_RDP_SCAN_MAX_NUMLOCK -
|
struct xrdp_key_info keys_numlock[SCANCODE_MAX_NUMLOCK -
|
||||||
XR_RDP_SCAN_MIN_NUMLOCK + 1];
|
SCANCODE_MIN_NUMLOCK + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* the window manager */
|
/* the window manager */
|
||||||
|
@ -554,11 +553,12 @@ struct xrdp_wm
|
||||||
int current_pointer;
|
int current_pointer;
|
||||||
int mouse_x;
|
int mouse_x;
|
||||||
int mouse_y;
|
int mouse_y;
|
||||||
/* keyboard info */
|
/* keyboard info (indexed by a return from scancode_to_index()) */
|
||||||
int keys[256]; /* key states 0 up 1 down*/
|
int keys[SCANCODE_MAX_INDEX + 1]; /* key states 0 up 1 down*/
|
||||||
int caps_lock;
|
int caps_lock;
|
||||||
int scroll_lock;
|
int scroll_lock;
|
||||||
int num_lock;
|
int num_lock;
|
||||||
|
|
||||||
/* Unicode input */
|
/* Unicode input */
|
||||||
int last_high_surrogate_key_up;
|
int last_high_surrogate_key_up;
|
||||||
int last_high_surrogate_key_down;
|
int last_high_surrogate_key_down;
|
||||||
|
|
151
xrdp/xrdp_wm.c
151
xrdp/xrdp_wm.c
|
@ -1569,15 +1569,26 @@ xrdp_wm_mouse_click(struct xrdp_wm *self, int x, int y, int but, int down)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int
|
int
|
||||||
xrdp_wm_key(struct xrdp_wm *self, int device_flags, int scan_code)
|
xrdp_wm_key(struct xrdp_wm *self, int keyboard_flags, int key_code)
|
||||||
{
|
{
|
||||||
int msg;
|
int msg;
|
||||||
struct xrdp_key_info *ki;
|
struct xrdp_key_info *ki;
|
||||||
|
|
||||||
LOG_DEVEL(LOG_LEVEL_DEBUG,
|
LOG_DEVEL(LOG_LEVEL_DEBUG,
|
||||||
"xrdp_wm_key: RDP scancode:0x%04x, flags: 0x%04x",
|
"xrdp_wm_key: RDP key_code:0x%04x, keyboard_flags: 0x%04x",
|
||||||
scan_code, device_flags);
|
key_code, keyboard_flags);
|
||||||
scan_code = scan_code % 128;
|
int scancode = SCANCODE_FROM_KBD_EVENT(key_code, keyboard_flags);
|
||||||
|
int keyup = ((keyboard_flags & KBDFLAGS_RELEASE) != 0);
|
||||||
|
|
||||||
|
int sindex = scancode_to_index(scancode);
|
||||||
|
if (sindex < 0)
|
||||||
|
{
|
||||||
|
// The scancode doesn't map to an index, so we can't handle it here.
|
||||||
|
// Log this so we can investigate
|
||||||
|
LOG(LOG_LEVEL_WARNING, "Ignoring unusable scancode %x (%s)",
|
||||||
|
scancode, (keyup ? "up" : "down"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (self->popup_wnd != 0)
|
if (self->popup_wnd != 0)
|
||||||
{
|
{
|
||||||
|
@ -1585,32 +1596,25 @@ xrdp_wm_key(struct xrdp_wm *self, int device_flags, int scan_code)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround odd shift behavior
|
if (keyup)
|
||||||
// see https://github.com/neutrinolabs/xrdp/issues/397
|
|
||||||
if (scan_code == 42 && device_flags == (KBD_FLAG_UP | KBD_FLAG_EXT))
|
|
||||||
{
|
{
|
||||||
return 0;
|
self->keys[sindex] = 0;
|
||||||
}
|
|
||||||
|
|
||||||
if (device_flags & KBD_FLAG_UP) /* 0x8000 */
|
|
||||||
{
|
|
||||||
self->keys[scan_code] = 0;
|
|
||||||
msg = WM_KEYUP;
|
msg = WM_KEYUP;
|
||||||
}
|
}
|
||||||
else /* key down */
|
else /* key down */
|
||||||
{
|
{
|
||||||
self->keys[scan_code] = 1 | device_flags;
|
self->keys[sindex] = 1;
|
||||||
msg = WM_KEYDOWN;
|
msg = WM_KEYDOWN;
|
||||||
|
|
||||||
switch (scan_code)
|
switch (scancode)
|
||||||
{
|
{
|
||||||
case 58:
|
case SCANCODE_CAPS_KEY:
|
||||||
self->caps_lock = !self->caps_lock;
|
self->caps_lock = !self->caps_lock;
|
||||||
break; /* caps lock */
|
break; /* caps lock */
|
||||||
case 69:
|
case SCANCODE_NUMLOCK_KEY:
|
||||||
self->num_lock = !self->num_lock;
|
self->num_lock = !self->num_lock;
|
||||||
break; /* num lock */
|
break; /* num lock */
|
||||||
case 70:
|
case SCANCODE_SCROLL_KEY:
|
||||||
self->scroll_lock = !self->scroll_lock;
|
self->scroll_lock = !self->scroll_lock;
|
||||||
break; /* scroll lock */
|
break; /* scroll lock */
|
||||||
}
|
}
|
||||||
|
@ -1618,24 +1622,28 @@ xrdp_wm_key(struct xrdp_wm *self, int device_flags, int scan_code)
|
||||||
|
|
||||||
if (self->mm->mod != 0)
|
if (self->mm->mod != 0)
|
||||||
{
|
{
|
||||||
|
// Backend module loaded...
|
||||||
if (self->mm->mod->mod_event != 0)
|
if (self->mm->mod->mod_event != 0)
|
||||||
{
|
{
|
||||||
ki = get_key_info_from_scan_code
|
// ..and able to take events. Check the scancode maps to
|
||||||
(device_flags, scan_code, self->keys, self->caps_lock,
|
// a real key in the currently loaded keymap
|
||||||
|
ki = get_key_info_from_kbd_event
|
||||||
|
(keyboard_flags, key_code, self->keys, self->caps_lock,
|
||||||
self->num_lock, self->scroll_lock,
|
self->num_lock, self->scroll_lock,
|
||||||
&(self->keymap));
|
&(self->keymap));
|
||||||
|
|
||||||
if (ki != 0)
|
if (ki != 0)
|
||||||
{
|
{
|
||||||
self->mm->mod->mod_event(self->mm->mod, msg, ki->chr, ki->sym,
|
self->mm->mod->mod_event(self->mm->mod, msg, ki->chr, ki->sym,
|
||||||
scan_code, device_flags);
|
key_code, keyboard_flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (self->focused_window != 0)
|
else if (self->focused_window != 0)
|
||||||
{
|
{
|
||||||
|
// Pass keypress on to a widget in the login window
|
||||||
xrdp_bitmap_def_proc(self->focused_window,
|
xrdp_bitmap_def_proc(self->focused_window,
|
||||||
msg, scan_code, device_flags);
|
msg, key_code, keyboard_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1665,13 +1673,18 @@ xrdp_wm_key_sync(struct xrdp_wm *self, int device_flags, int key_flags)
|
||||||
self->caps_lock = 1;
|
self->caps_lock = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->mm->mod != 0)
|
if (self->mm->mod != 0 && self->mm->mod->mod_event != 0)
|
||||||
{
|
{
|
||||||
if (self->mm->mod->mod_event != 0)
|
self->mm->mod->mod_event(self->mm->mod, WM_KEYBRD_SYNC, key_flags,
|
||||||
{
|
device_flags, key_flags, device_flags);
|
||||||
self->mm->mod->mod_event(self->mm->mod, WM_KEYBRD_SYNC, key_flags,
|
}
|
||||||
device_flags, key_flags, device_flags);
|
else
|
||||||
}
|
{
|
||||||
|
// Save the event for when the module is loaded
|
||||||
|
self->mm->last_sync_saved = 1;
|
||||||
|
self->mm->last_sync_key_flags = key_flags;
|
||||||
|
self->mm->last_sync_device_flags = device_flags;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1687,7 +1700,7 @@ get_unicode_character(struct xrdp_wm *self, int device_flags, char16_t c16)
|
||||||
char32_t c32 = 0;
|
char32_t c32 = 0;
|
||||||
int *high_ptr;
|
int *high_ptr;
|
||||||
|
|
||||||
if (device_flags & KBD_FLAG_UP)
|
if (device_flags & KBDFLAGS_RELEASE)
|
||||||
{
|
{
|
||||||
high_ptr = &self->last_high_surrogate_key_up;
|
high_ptr = &self->last_high_surrogate_key_up;
|
||||||
}
|
}
|
||||||
|
@ -1720,6 +1733,29 @@ get_unicode_character(struct xrdp_wm *self, int device_flags, char16_t c16)
|
||||||
return c32;
|
return c32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**
|
||||||
|
* Takes a scancode index and fakes a keyboard event to represent it
|
||||||
|
* @param self module pointer
|
||||||
|
* @param device_flags default flags to pass in for the keyboard event.
|
||||||
|
* @param index scancode index
|
||||||
|
*
|
||||||
|
* Some of the device_flags are overridden by the scancode derived from the
|
||||||
|
* scancode index
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
fake_kbd_event_from_scancode_index(struct xrdp_wm *self, int device_flags,
|
||||||
|
int index)
|
||||||
|
{
|
||||||
|
unsigned short scancode = scancode_from_index(index);
|
||||||
|
int key_code = SCANCODE_TO_KBD_EVENT_KEY_CODE(scancode);
|
||||||
|
|
||||||
|
device_flags &= ~(KBDFLAGS_EXTENDED | KBDFLAGS_EXTENDED1);
|
||||||
|
device_flags |= SCANCODE_TO_KBD_EVENT_KBD_FLAGS(scancode);
|
||||||
|
|
||||||
|
xrdp_wm_key(self, device_flags, key_code);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
static int
|
static int
|
||||||
xrdp_wm_key_unicode(struct xrdp_wm *self, int device_flags, char32_t c16)
|
xrdp_wm_key_unicode(struct xrdp_wm *self, int device_flags, char32_t c16)
|
||||||
|
@ -1734,69 +1770,74 @@ xrdp_wm_key_unicode(struct xrdp_wm *self, int device_flags, char32_t c16)
|
||||||
|
|
||||||
// See if we can find the character in the existing keymap,
|
// See if we can find the character in the existing keymap,
|
||||||
// and if so, generate normal key event(s) for it
|
// and if so, generate normal key event(s) for it
|
||||||
for (index = XR_MIN_KEY_CODE; index < XR_MAX_KEY_CODE; index++)
|
for (index = 0; index <= SCANCODE_MAX_INDEX; ++index)
|
||||||
{
|
{
|
||||||
if (c32 == self->keymap.keys_noshift[index].chr)
|
if (c32 == self->keymap.keys_noshift[index].chr)
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (index = XR_MIN_KEY_CODE; index < XR_MAX_KEY_CODE; index++)
|
for (index = 0; index <= SCANCODE_MAX_INDEX; ++index)
|
||||||
{
|
{
|
||||||
if (c32 == self->keymap.keys_shift[index].chr)
|
if (c32 == self->keymap.keys_shift[index].chr)
|
||||||
{
|
{
|
||||||
if (device_flags & KBD_FLAG_UP)
|
if (device_flags & KBDFLAGS_RELEASE)
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
xrdp_wm_key(self, KBD_FLAG_UP, XR_RDP_SCAN_LSHIFT);
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
|
SCANCODE_INDEX_LSHIFT_KEY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, KBD_FLAG_DOWN, XR_RDP_SCAN_LSHIFT);
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
SCANCODE_INDEX_LSHIFT_KEY);
|
||||||
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (index = XR_MIN_KEY_CODE; index < XR_MAX_KEY_CODE; index++)
|
for (index = 0; index <= SCANCODE_MAX_INDEX; ++index)
|
||||||
{
|
{
|
||||||
if (c32 == self->keymap.keys_altgr[index].chr)
|
if (c32 == self->keymap.keys_altgr[index].chr)
|
||||||
{
|
{
|
||||||
if (device_flags & KBD_FLAG_UP)
|
if (device_flags & KBDFLAGS_RELEASE)
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
xrdp_wm_key(self, KBD_FLAG_UP | KBD_FLAG_EXT,
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
XR_RDP_SCAN_ALT);
|
SCANCODE_INDEX_RALT_KEY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, KBD_FLAG_DOWN | KBD_FLAG_EXT,
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
XR_RDP_SCAN_ALT);
|
SCANCODE_INDEX_RALT_KEY);
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (index = XR_MIN_KEY_CODE; index < XR_MAX_KEY_CODE; index++)
|
for (index = 0; index <= SCANCODE_MAX_INDEX; ++index)
|
||||||
{
|
{
|
||||||
if (c32 == self->keymap.keys_shiftaltgr[index].chr)
|
if (c32 == self->keymap.keys_shiftaltgr[index].chr)
|
||||||
{
|
{
|
||||||
if (device_flags & KBD_FLAG_UP)
|
if (device_flags & KBDFLAGS_RELEASE)
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
xrdp_wm_key(self, KBD_FLAG_UP | KBD_FLAG_EXT, XR_RDP_SCAN_ALT);
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
xrdp_wm_key(self, KBD_FLAG_UP, XR_RDP_SCAN_LSHIFT);
|
SCANCODE_INDEX_RALT_KEY);
|
||||||
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
|
SCANCODE_INDEX_LSHIFT_KEY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xrdp_wm_key(self, KBD_FLAG_DOWN, XR_RDP_SCAN_LSHIFT);
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
xrdp_wm_key(self, KBD_FLAG_DOWN | KBD_FLAG_EXT,
|
SCANCODE_INDEX_LSHIFT_KEY);
|
||||||
XR_RDP_SCAN_ALT);
|
fake_kbd_event_from_scancode_index(self, device_flags,
|
||||||
xrdp_wm_key(self, device_flags, index - XR_MIN_KEY_CODE);
|
SCANCODE_INDEX_RALT_KEY);
|
||||||
|
fake_kbd_event_from_scancode_index(self, device_flags, index);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1809,7 +1850,7 @@ xrdp_wm_key_unicode(struct xrdp_wm *self, int device_flags, char32_t c16)
|
||||||
self->mm->chan_trans->status == TRANS_STATUS_UP)
|
self->mm->chan_trans->status == TRANS_STATUS_UP)
|
||||||
{
|
{
|
||||||
xrdp_mm_send_unicode_to_chansrv(self->mm,
|
xrdp_mm_send_unicode_to_chansrv(self->mm,
|
||||||
!(device_flags & KBD_FLAG_UP), c32);
|
!(device_flags & KBDFLAGS_RELEASE), c32);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
36
xup/xup.c
36
xup/xup.c
|
@ -171,6 +171,26 @@ lib_mod_connect(struct mod *mod)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is a good place to finalise any parameters that need to
|
||||||
|
// be set.
|
||||||
|
//
|
||||||
|
// Load the XKB layout
|
||||||
|
if (mod->keycode_set[0] != '\0')
|
||||||
|
{
|
||||||
|
if (scancode_set_keycode_set(mod->keycode_set) == 0)
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_INFO, "Loaded '%s' keycode set", mod->keycode_set);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG(LOG_LEVEL_WARNING, "Unable to load '%s' keycode set",
|
||||||
|
mod->keycode_set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod->server_init_xkb_layout(mod, &(mod->client_info));
|
||||||
|
LOG(LOG_LEVEL_INFO, "XKB rules '%s' will be used by the module",
|
||||||
|
mod->client_info.xkb_rules);
|
||||||
|
|
||||||
make_stream(s);
|
make_stream(s);
|
||||||
g_sprintf(con_port, "%s", mod->port);
|
g_sprintf(con_port, "%s", mod->port);
|
||||||
|
|
||||||
|
@ -266,6 +286,7 @@ lib_mod_event(struct mod *mod, int msg, tbus param1, tbus param2,
|
||||||
int len;
|
int len;
|
||||||
int key;
|
int key;
|
||||||
int rv;
|
int rv;
|
||||||
|
int scancode;
|
||||||
|
|
||||||
LOG_DEVEL(LOG_LEVEL_TRACE, "in lib_mod_event");
|
LOG_DEVEL(LOG_LEVEL_TRACE, "in lib_mod_event");
|
||||||
make_stream(s);
|
make_stream(s);
|
||||||
|
@ -311,15 +332,8 @@ lib_mod_event(struct mod *mod, int msg, tbus param1, tbus param2,
|
||||||
/* xup doesn't need the Unicode character mapping in param1. Send
|
/* xup doesn't need the Unicode character mapping in param1. Send
|
||||||
* the X11 scancode instead, so xorgxrdp doesn't have to do this
|
* the X11 scancode instead, so xorgxrdp doesn't have to do this
|
||||||
* work again */
|
* work again */
|
||||||
if ((param4 & KBD_FLAG_EXT) != 0)
|
scancode = SCANCODE_FROM_KBD_EVENT(param3, param4);
|
||||||
{
|
param1 = scancode_to_x11_keycode(scancode);
|
||||||
// Extended key - set bit 9 of the scancode for the lookup
|
|
||||||
param1 = scancode_to_keycode(param3 | 0x100);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
param1 = scancode_to_keycode(param3);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init_stream(s, 8192);
|
init_stream(s, 8192);
|
||||||
|
@ -1869,6 +1883,10 @@ lib_mod_set_param(struct mod *mod, const char *name, const char *value)
|
||||||
{
|
{
|
||||||
g_strncpy(mod->port, value, 255);
|
g_strncpy(mod->port, value, 255);
|
||||||
}
|
}
|
||||||
|
else if (g_strcasecmp(name, "keycode_set") == 0)
|
||||||
|
{
|
||||||
|
g_snprintf(mod->keycode_set, sizeof(mod->keycode_set), "%s", value);
|
||||||
|
}
|
||||||
else if (g_strcasecmp(name, "client_info") == 0)
|
else if (g_strcasecmp(name, "client_info") == 0)
|
||||||
{
|
{
|
||||||
g_memcpy(&(mod->client_info), value, sizeof(mod->client_info));
|
g_memcpy(&(mod->client_info), value, sizeof(mod->client_info));
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#define CURRENT_MOD_VER 4
|
#define CURRENT_MOD_VER 4
|
||||||
|
|
||||||
struct source_info;
|
struct source_info;
|
||||||
|
struct xrdp_client_info;
|
||||||
|
|
||||||
struct mod
|
struct mod
|
||||||
{
|
{
|
||||||
|
@ -111,6 +112,8 @@ struct mod
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
int (*server_chansrv_in_use)(struct mod *v);
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
|
void (*server_init_xkb_layout)(struct mod *v,
|
||||||
|
struct xrdp_client_info *client_info);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
@ -176,7 +179,7 @@ struct mod
|
||||||
int (*server_egfx_cmd)(struct mod *v,
|
int (*server_egfx_cmd)(struct mod *v,
|
||||||
char *cmd, int cmd_bytes,
|
char *cmd, int cmd_bytes,
|
||||||
char *data, int data_bytes);
|
char *data, int data_bytes);
|
||||||
tintptr server_dumby[100 - 50]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 51]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
@ -198,6 +201,7 @@ struct mod
|
||||||
int screen_shmem_id_mapped; /* boolean */
|
int screen_shmem_id_mapped; /* boolean */
|
||||||
char *screen_shmem_pixels;
|
char *screen_shmem_pixels;
|
||||||
struct trans *trans;
|
struct trans *trans;
|
||||||
|
char keycode_set[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XUP_H
|
#endif // XUP_H
|
||||||
|
|
Loading…
Reference in New Issue