Bug 842927 part.6 Implement D3E KeyboardEvent.key on GTK r=smaug+karlt

This commit is contained in:
Masayuki Nakano 2013-04-24 12:49:47 +09:00
Родитель d1f3ea50ee
Коммит d32cfb8523
3 изменённых файлов: 101 добавлений и 11 удалений

Просмотреть файл

@ -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