Bug572385 some special keys (e.g., IME related keys) can't be handled on Linux r=masayuki, sr=smaug

This commit is contained in:
Kouhei Sutou 2010-07-02 11:15:15 +09:00
parent b94e5f575a
commit 19342cb9b9
3 changed files with 48 additions and 0 deletions

View File

@ -54,7 +54,17 @@ interface nsIDOMKeyEvent : nsIDOMUIEvent
const unsigned long DOM_VK_ALT = 0x12;
const unsigned long DOM_VK_PAUSE = 0x13;
const unsigned long DOM_VK_CAPS_LOCK = 0x14;
const unsigned long DOM_VK_KANA = 0x15;
const unsigned long DOM_VK_HANGUL = 0x15;
const unsigned long DOM_VK_JUNJA = 0x17;
const unsigned long DOM_VK_FINAL = 0x18;
const unsigned long DOM_VK_HANJA = 0x19;
const unsigned long DOM_VK_KANJI = 0x19;
const unsigned long DOM_VK_ESCAPE = 0x1B;
const unsigned long DOM_VK_CONVERT = 0x1C;
const unsigned long DOM_VK_NONCONVERT = 0x1D;
const unsigned long DOM_VK_ACCEPT = 0x1E;
const unsigned long DOM_VK_MODECHANGE = 0x1F;
const unsigned long DOM_VK_SPACE = 0x20;
const unsigned long DOM_VK_PAGE_UP = 0x21;
const unsigned long DOM_VK_PAGE_DOWN = 0x22;
@ -64,6 +74,9 @@ interface nsIDOMKeyEvent : nsIDOMUIEvent
const unsigned long DOM_VK_UP = 0x26;
const unsigned long DOM_VK_RIGHT = 0x27;
const unsigned long DOM_VK_DOWN = 0x28;
const unsigned long DOM_VK_SELECT = 0x29;
const unsigned long DOM_VK_PRINT = 0x2A;
const unsigned long DOM_VK_EXECUTE = 0x2B;
const unsigned long DOM_VK_PRINTSCREEN = 0x2C;
const unsigned long DOM_VK_INSERT = 0x2D;
const unsigned long DOM_VK_DELETE = 0x2E;
@ -112,6 +125,7 @@ interface nsIDOMKeyEvent : nsIDOMUIEvent
const unsigned long DOM_VK_Z = 0x5A;
const unsigned long DOM_VK_CONTEXT_MENU = 0x5D;
const unsigned long DOM_VK_SLEEP = 0x5F;
const unsigned long DOM_VK_NUMPAD0 = 0x60;
const unsigned long DOM_VK_NUMPAD1 = 0x61;

View File

@ -1489,7 +1489,17 @@ enum nsDragDropEventStatus {
#define NS_VK_ALT nsIDOMKeyEvent::DOM_VK_ALT
#define NS_VK_PAUSE nsIDOMKeyEvent::DOM_VK_PAUSE
#define NS_VK_CAPS_LOCK nsIDOMKeyEvent::DOM_VK_CAPS_LOCK
#define NS_VK_KANA nsIDOMKeyEvent::DOM_VK_KANA
#define NS_VK_HANGUL nsIDOMKeyEvent::DOM_VK_HANGUL
#define NS_VK_JUNJA nsIDOMKeyEvent::DOM_VK_JUNJA
#define NS_VK_FINAL nsIDOMKeyEvent::DOM_VK_FINAL
#define NS_VK_HANJA nsIDOMKeyEvent::DOM_VK_HANJA
#define NS_VK_KANJI nsIDOMKeyEvent::DOM_VK_KANJI
#define NS_VK_ESCAPE nsIDOMKeyEvent::DOM_VK_ESCAPE
#define NS_VK_CONVERT nsIDOMKeyEvent::DOM_VK_CONVERT
#define NS_VK_NONCONVERT nsIDOMKeyEvent::DOM_VK_NONCONVERT
#define NS_VK_ACCEPT nsIDOMKeyEvent::DOM_VK_ACCEPT
#define NS_VK_MODECHANGE nsIDOMKeyEvent::DOM_VK_MODECHANGE
#define NS_VK_SPACE nsIDOMKeyEvent::DOM_VK_SPACE
#define NS_VK_PAGE_UP nsIDOMKeyEvent::DOM_VK_PAGE_UP
#define NS_VK_PAGE_DOWN nsIDOMKeyEvent::DOM_VK_PAGE_DOWN
@ -1499,6 +1509,9 @@ enum nsDragDropEventStatus {
#define NS_VK_UP nsIDOMKeyEvent::DOM_VK_UP
#define NS_VK_RIGHT nsIDOMKeyEvent::DOM_VK_RIGHT
#define NS_VK_DOWN nsIDOMKeyEvent::DOM_VK_DOWN
#define NS_VK_SELECT nsIDOMKeyEvent::DOM_VK_SELECT
#define NS_VK_PRINT nsIDOMKeyEvent::DOM_VK_PRINT
#define NS_VK_EXECUTE nsIDOMKeyEvent::DOM_VK_EXECUTE
#define NS_VK_PRINTSCREEN nsIDOMKeyEvent::DOM_VK_PRINTSCREEN
#define NS_VK_INSERT nsIDOMKeyEvent::DOM_VK_INSERT
#define NS_VK_DELETE nsIDOMKeyEvent::DOM_VK_DELETE
@ -1547,6 +1560,7 @@ enum nsDragDropEventStatus {
#define NS_VK_Z nsIDOMKeyEvent::DOM_VK_Z
#define NS_VK_CONTEXT_MENU nsIDOMKeyEvent::DOM_VK_CONTEXT_MENU
#define NS_VK_SLEEP nsIDOMKeyEvent::DOM_VK_SLEEP
#define NS_VK_NUMPAD0 nsIDOMKeyEvent::DOM_VK_NUMPAD0
#define NS_VK_NUMPAD1 nsIDOMKeyEvent::DOM_VK_NUMPAD1

View File

@ -38,6 +38,10 @@
* ***** END LICENSE BLOCK ***** */
#include <gdk/gdkkeysyms.h>
#ifndef GDK_Sleep
#define GDK_Sleep 0x1008ff2f
#endif
#include <gdk/gdk.h>
#ifdef MOZ_X11
#include <gdk/gdkx.h>
@ -71,7 +75,18 @@ struct nsKeyConverter nsKeycodes[] = {
{ NS_VK_META, GDK_Meta_R },
{ NS_VK_PAUSE, GDK_Pause },
{ NS_VK_CAPS_LOCK, GDK_Caps_Lock },
{ NS_VK_KANA, GDK_Kana_Lock },
{ NS_VK_KANA, GDK_Kana_Shift },
{ NS_VK_HANGUL, GDK_Hangul },
// { NS_VK_JUNJA, GDK_XXX },
// { NS_VK_FINAL, GDK_XXX },
{ NS_VK_HANJA, GDK_Hangul_Hanja },
{ NS_VK_KANJI, GDK_Kanji },
{ NS_VK_ESCAPE, GDK_Escape },
{ NS_VK_CONVERT, GDK_Henkan },
{ NS_VK_NONCONVERT, GDK_Muhenkan },
// { NS_VK_ACCEPT, GDK_XXX },
{ NS_VK_MODECHANGE, GDK_Mode_switch },
{ NS_VK_SPACE, GDK_space },
{ NS_VK_PAGE_UP, GDK_Page_Up },
{ NS_VK_PAGE_DOWN, GDK_Page_Down },
@ -81,9 +96,13 @@ struct nsKeyConverter nsKeycodes[] = {
{ NS_VK_UP, GDK_Up },
{ NS_VK_RIGHT, GDK_Right },
{ NS_VK_DOWN, GDK_Down },
{ NS_VK_SELECT, GDK_Select },
{ NS_VK_PRINT, GDK_Print },
{ NS_VK_EXECUTE, GDK_Execute },
{ NS_VK_PRINTSCREEN, GDK_Print },
{ NS_VK_INSERT, GDK_Insert },
{ NS_VK_DELETE, GDK_Delete },
{ NS_VK_HELP, GDK_Help },
// keypad keys
{ NS_VK_LEFT, GDK_KP_Left },
@ -125,6 +144,7 @@ struct nsKeyConverter nsKeycodes[] = {
// context menu key, keysym 0xff67, typically keycode 117 on 105-key (Microsoft)
// x86 keyboards, located between right 'Windows' key and right Ctrl key
{ NS_VK_CONTEXT_MENU, GDK_Menu },
{ NS_VK_SLEEP, GDK_Sleep },
// NS doesn't have dash or equals distinct from the numeric keypad ones,
// so we'll use those for now. See bug 17008: