зеркало из https://github.com/mozilla/gecko-dev.git
Bug 842927 part.6 Implement D3E KeyboardEvent.key on GTK r=smaug+karlt
This commit is contained in:
Родитель
d1f3ea50ee
Коммит
d32cfb8523
|
@ -0,0 +1,74 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef GDKKEYSYMS_WRAPPER_H
|
||||
#define GDKKEYSYMS_WRAPPER_H
|
||||
|
||||
#include_next <gdk/gdkkeysyms.h>
|
||||
|
||||
#ifndef GDK_ISO_Level5_Shift
|
||||
#define GDK_ISO_Level5_Shift 0xFE11
|
||||
#endif
|
||||
|
||||
#ifndef GDK_ISO_Level5_Latch
|
||||
#define GDK_ISO_Level5_Latch 0xFE12
|
||||
#endif
|
||||
|
||||
#ifndef GDK_ISO_Level5_Lock
|
||||
#define GDK_ISO_Level5_Lock 0xFE13
|
||||
#endif
|
||||
|
||||
#ifndef GDK_dead_greek
|
||||
#define GDK_dead_greek 0xFE8C
|
||||
#endif
|
||||
|
||||
#ifndef GDK_ch
|
||||
#define GDK_ch 0xFEA0
|
||||
#endif
|
||||
|
||||
#ifndef GDK_Ch
|
||||
#define GDK_Ch 0xFEA1
|
||||
#endif
|
||||
|
||||
#ifndef GDK_CH
|
||||
#define GDK_CH 0xFEA2
|
||||
#endif
|
||||
|
||||
#ifndef GDK_c_h
|
||||
#define GDK_c_h 0xFEA3
|
||||
#endif
|
||||
|
||||
#ifndef GDK_C_h
|
||||
#define GDK_C_h 0xFEA4
|
||||
#endif
|
||||
|
||||
#ifndef GDK_C_H
|
||||
#define GDK_C_H 0xFEA5
|
||||
#endif
|
||||
|
||||
#ifndef GDK_TouchpadToggle
|
||||
#define GDK_TouchpadToggle 0x1008FFA9
|
||||
#endif
|
||||
|
||||
#ifndef GDK_TouchpadOn
|
||||
#define GDK_TouchpadOn 0x1008FFB0
|
||||
#endif
|
||||
|
||||
#ifndef GDK_TouchpadOff
|
||||
#define GDK_TouchpadOff 0x1008ffb1
|
||||
#endif
|
||||
|
||||
#ifndef GDK_LogWindowTree
|
||||
#define GDK_LogWindowTree 0x1008FE24
|
||||
#endif
|
||||
|
||||
#ifndef GDK_LogGrabInfo
|
||||
#define GDK_LogGrabInfo 0x1008FE25
|
||||
#endif
|
||||
|
||||
#ifndef GDK_Sleep
|
||||
#define GDK_Sleep 0x1008FF2F
|
||||
#endif
|
||||
|
||||
#endif /* GDKKEYSYMS_WRAPPER_H */
|
|
@ -11,10 +11,6 @@
|
|||
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <algorithm>
|
||||
#ifndef GDK_Sleep
|
||||
#define GDK_Sleep 0x1008ff2f
|
||||
#endif
|
||||
|
||||
#include <gdk/gdk.h>
|
||||
#ifdef MOZ_X11
|
||||
#include <gdk/gdkx.h>
|
||||
|
@ -821,6 +817,26 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent)
|
|||
unmodifiedChar ? unmodifiedChar : shiftedChar);
|
||||
}
|
||||
|
||||
KeyNameIndex
|
||||
KeymapWrapper::ComputeDOMKeyNameIndex(const GdkEventKey* aGdkKeyEvent)
|
||||
{
|
||||
switch (aGdkKeyEvent->keyval) {
|
||||
|
||||
#define NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, aKeyNameIndex) \
|
||||
case aNativeKey: return aKeyNameIndex;
|
||||
|
||||
#include "NativeKeyToDOMKeyName.h"
|
||||
|
||||
#undef NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
uint32_t ch = GetCharCodeFor(aGdkKeyEvent);
|
||||
return ch ? KEY_NAME_INDEX_PrintableKey : KEY_NAME_INDEX_Unidentified;
|
||||
}
|
||||
|
||||
/* static */ guint
|
||||
KeymapWrapper::GuessGDKKeyval(uint32_t aDOMKeyCode)
|
||||
{
|
||||
|
@ -909,6 +925,8 @@ KeymapWrapper::InitKeyEvent(nsKeyEvent& aKeyEvent,
|
|||
{
|
||||
KeymapWrapper* keymapWrapper = GetInstance();
|
||||
|
||||
aKeyEvent.mKeyNameIndex =
|
||||
keymapWrapper->ComputeDOMKeyNameIndex(aGdkKeyEvent);
|
||||
aKeyEvent.keyCode = ComputeDOMKeyCode(aGdkKeyEvent);
|
||||
|
||||
// NOTE: The state of given key event indicates adjacent state of
|
||||
|
|
|
@ -13,13 +13,6 @@
|
|||
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
// ISO level5 shift is supported on GTK3
|
||||
#ifndef GDK_ISO_Level5_Shift
|
||||
#define GDK_ISO_Level5_Shift 0xFE11
|
||||
#define GDK_ISO_Level5_Latch 0xFE12
|
||||
#define GDK_ISO_Level5_Lock 0xFE13
|
||||
#endif // #ifndef GDK_ISO_Level5_Shift
|
||||
|
||||
namespace mozilla {
|
||||
namespace widget {
|
||||
|
||||
|
@ -42,6 +35,11 @@ public:
|
|||
*/
|
||||
static uint32_t ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent);
|
||||
|
||||
/**
|
||||
* Compute a DOM key name index from aGdkKeyEvent.
|
||||
*/
|
||||
KeyNameIndex ComputeDOMKeyNameIndex(const GdkEventKey* aGdkKeyEvent);
|
||||
|
||||
/**
|
||||
* Returns a GDK keyval which is related to the aDOMKeyCode. However,
|
||||
* it may not be same as original value since there are some lost
|
||||
|
|
Загрузка…
Ссылка в новой задаче