Import Tk 8.6.10
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "tkWinInt.h"
|
||||
#include "X11/XF86keysym.h"
|
||||
|
||||
/*
|
||||
* The keymap table holds mappings of Windows keycodes to X keysyms. If
|
||||
@@ -21,46 +22,47 @@
|
||||
* like a worthwhile improvement to use the table.
|
||||
*/
|
||||
|
||||
#define MAX_KEYCODE 179 /* VK_MEDIA_PLAY_PAUSE is the last entry in our table below */
|
||||
#define MAX_KEYCODE 183 /* VK_LAUNCH_APP2 is the last entry in our table below */
|
||||
/* cf. https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx */
|
||||
|
||||
static const KeySym keymap[] = {
|
||||
NoSymbol, NoSymbol, NoSymbol, XK_Cancel, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, XK_BackSpace, XK_Tab,
|
||||
NoSymbol, NoSymbol, XK_Clear, XK_Return, NoSymbol,
|
||||
NoSymbol, XK_Shift_L, XK_Control_L, XK_Alt_L, XK_Pause,
|
||||
XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, XK_Escape, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, XK_space, XK_Prior, XK_Next,
|
||||
XK_End, XK_Home, XK_Left, XK_Up, XK_Right,
|
||||
XK_Down, XK_Select, XK_Print, XK_Execute, NoSymbol,
|
||||
XK_Insert, XK_Delete, XK_Help, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, XK_Win_L, XK_Win_R, XK_App, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, XK_F1, XK_F2, XK_F3,
|
||||
XK_F4, XK_F5, XK_F6, XK_F7, XK_F8,
|
||||
XK_F9, XK_F10, XK_F11, XK_F12, XK_F13,
|
||||
XK_F14, XK_F15, XK_F16, XK_F17, XK_F18,
|
||||
XK_F19, XK_F20, XK_F21, XK_F22, XK_F23,
|
||||
XK_F24, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, XK_Num_Lock,
|
||||
XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, NoSymbol,
|
||||
NoSymbol, NoSymbol, NoSymbol, XK_Cancel, NoSymbol, /*0 0x0*/
|
||||
NoSymbol, NoSymbol, NoSymbol, XK_BackSpace, XK_Tab, /*5 0x5*/
|
||||
NoSymbol, NoSymbol, XK_Clear, XK_Return, NoSymbol, /*10 0xA*/
|
||||
NoSymbol, XK_Shift_L, XK_Control_L, XK_Alt_L, XK_Pause, /*15 0xE*/
|
||||
XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*20 0x14*/
|
||||
NoSymbol, NoSymbol, XK_Escape, NoSymbol, NoSymbol, /*25 0x19*/
|
||||
NoSymbol, NoSymbol, XK_space, XK_Prior, XK_Next, /*30 0x1E*/
|
||||
XK_End, XK_Home, XK_Left, XK_Up, XK_Right, /*35 0x23*/
|
||||
XK_Down, XK_Select, XK_Print, XK_Execute, NoSymbol, /*40 0x28*/
|
||||
XK_Insert, XK_Delete, XK_Help, NoSymbol, NoSymbol, /*45 0x2D*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*50 0x32*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*55 0x37*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*60 0x3C*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*65 0x41*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*70 0x46*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*75 0x4B*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*80 0x50*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*85 0x55*/
|
||||
NoSymbol, XK_Win_L, XK_Win_R, XK_App, NoSymbol, /*90 0x5A*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*95 0x5F*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*100 0x64*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*105 0x69*/
|
||||
NoSymbol, NoSymbol, XK_F1, XK_F2, XK_F3, /*110 0x6E*/
|
||||
XK_F4, XK_F5, XK_F6, XK_F7, XK_F8, /*115 0x73*/
|
||||
XK_F9, XK_F10, XK_F11, XK_F12, XK_F13, /*120 0x78*/
|
||||
XK_F14, XK_F15, XK_F16, XK_F17, XK_F18, /*125 0x7D*/
|
||||
XK_F19, XK_F20, XK_F21, XK_F22, XK_F23, /*130 0x82*/
|
||||
XK_F24, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*135 0x87*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, XK_Num_Lock, /*140 0x8C*/
|
||||
XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*145 0x91*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*150 0x96*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*155 0x9b*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*160 0xa0*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*165 0xa5*/
|
||||
NoSymbol, NoSymbol, NoSymbol, XK_XF86AudioMute, XK_XF86AudioLowerVolume, /*170 0xaa*/
|
||||
XK_XF86AudioRaiseVolume, XK_XF86AudioNext, XK_XF86AudioPrev, XK_XF86AudioStop, XK_XF86AudioPlay /*175 0xaf*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*155 0x9B*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*160 0xA0*/
|
||||
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*165 0xA5*/
|
||||
NoSymbol, NoSymbol, NoSymbol, XF86XK_AudioMute, XF86XK_AudioLowerVolume, /*170 0xAA*/
|
||||
XF86XK_AudioRaiseVolume, XF86XK_AudioNext, XF86XK_AudioPrev, XF86XK_AudioStop, XF86XK_AudioPlay, /*175 0xAF*/
|
||||
XF86XK_Mail, XF86XK_AudioMedia, XF86XK_Launch0, XF86XK_Launch1 /*180 0xB4*/
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -122,7 +124,7 @@ TkpGetString(
|
||||
|
||||
if (((keysym != NoSymbol) && (keysym > 0) && (keysym < 256))
|
||||
|| (keysym == XK_Return) || (keysym == XK_Tab)) {
|
||||
len = Tcl_UniCharToUtf((Tcl_UniChar) (keysym & 255), buf);
|
||||
len = TkUniCharToUtf(keysym & 255, buf);
|
||||
Tcl_DStringAppend(dsPtr, buf, len);
|
||||
}
|
||||
}
|
||||
@@ -186,8 +188,8 @@ KeycodeToKeysym(
|
||||
{
|
||||
BYTE keys[256];
|
||||
int result, deadkey, shift;
|
||||
TCHAR buf[4];
|
||||
unsigned int scancode = MapVirtualKey(keycode, 0);
|
||||
WCHAR buf[4];
|
||||
unsigned int scancode = MapVirtualKeyW(keycode, 0);
|
||||
|
||||
/*
|
||||
* Do not run keycodes of lock keys through ToUnicode(). One of ToUnicode()'s
|
||||
@@ -201,10 +203,10 @@ KeycodeToKeysym(
|
||||
}
|
||||
|
||||
/*
|
||||
* Use MapVirtualKey() to detect some dead keys.
|
||||
* Use MapVirtualKeyW() to detect some dead keys.
|
||||
*/
|
||||
|
||||
if (MapVirtualKey(keycode, 2) > 0x7fffUL) {
|
||||
if (MapVirtualKeyW(keycode, 2) > 0x7fffUL) {
|
||||
return XK_Multi_key;
|
||||
}
|
||||
|
||||
@@ -261,10 +263,10 @@ KeycodeToKeysym(
|
||||
* Get information about the old char
|
||||
*/
|
||||
|
||||
deadkey = VkKeyScan(buf[0]);
|
||||
deadkey = VkKeyScanW(buf[0]);
|
||||
shift = deadkey >> 8;
|
||||
deadkey &= 255;
|
||||
scancode = MapVirtualKey(deadkey, 0);
|
||||
scancode = MapVirtualKeyW(deadkey, 0);
|
||||
|
||||
/*
|
||||
* Set up a keyboard with proper modifier keys
|
||||
@@ -572,7 +574,7 @@ TkpSetKeycodeAndState(
|
||||
}
|
||||
}
|
||||
if (keySym >= 0x20) {
|
||||
result = VkKeyScan((TCHAR) keySym);
|
||||
result = VkKeyScanW((WCHAR) keySym);
|
||||
if (result != -1) {
|
||||
shift = result >> 8;
|
||||
if (shift & 1)
|
||||
@@ -625,7 +627,7 @@ XKeysymToKeycode(
|
||||
}
|
||||
}
|
||||
if (keysym >= 0x20) {
|
||||
result = VkKeyScan((TCHAR) keysym);
|
||||
result = VkKeyScanW((WCHAR) keysym);
|
||||
if (result != -1) {
|
||||
return (KeyCode) (result & 0xff);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user