OSDN Git Service

Version 0.6.214, bug fixes X.KB.
[pettanr/clientJs.git] / 0.6.x / js / 11_hid / 01_KB.js
index 4d46047..9d9646e 100644 (file)
  * \r
  */\r
 \r
-var X_KB_SPECIALS = {\r
-\r
-       \r
-               '8'   : 'BS',\r
-               '9'   : 'TAB',\r
-               '13'  : 'ENTER',\r
-               '16'  : 'SHIFT',\r
-               '17'  : 'CTRL',\r
-               '18'  : 'ALT',\r
-               '19'  : 'PAUSE_BREAK',\r
-               '20'  : 'SHIFT+CAPS_LOCK',\r
-               \r
-               '27'  : 'ESC',\r
-               '28'  : 'trans',\r
-               '29'  : 'no trans',\r
-\r
-               '33'  : 'PAGE_UP',\r
-               '34'  : 'PAGE_DOWN',\r
-               '35'  : 'END',\r
-               '36'  : 'HOME', \r
-               '37'  : 'CSR_L',\r
-               '38'  : 'CSR_U',\r
-               '39'  : 'CSR_R',\r
-               '40'  : 'CSR_D',\r
-               '44'  : 'PRT_SCRN',             \r
-               '45'  : 'INS',\r
-               '46'  : 'DEL',\r
-               \r
-               '91'  : 'LWIN',\r
-               '92'  : 'RWIN',\r
-               '93'  : 'APP',\r
-               \r
-               '96'  : 48,\r
-               '97'  : 49,\r
-               '98'  : 50,\r
-               '99'  : 51,\r
-               '100' : 52,\r
-               '101' : 53,\r
-               '102' : 54,\r
-               '103' : 55,\r
-               '104' : 56,\r
-               '105' : 57,\r
-               '106' : 42,\r
-               '107' : 43,\r
-               '109' : 45,\r
-               '111' : 47,\r
-               '112' : 'F1',\r
-               '113' : 'F2',\r
-               '114' : 'F3',\r
-               '115' : 'F4',\r
-               '116' : 'F5',\r
-               '117' : 'F6',\r
-               '118' : 'F7',\r
-               '119' : 'F8',\r
-               '120' : 'F9',\r
-               '121' : 'F10',\r
-               '122' : 'F11',\r
-               '123' : 'F12',\r
-       \r
-               '144' : 'NUM_LOCK',\r
-               '145' : 'SCROLL_LOCK',\r
-               '208' : 'CAPS_LOCK',\r
-               '240' : 'CAPS_LOCK',\r
-               '242' : 'K/H',\r
-               '243' : 'H/Z',\r
-               '244' : 'H/Z'\r
-       },\r
+var X_KB_SPECIALS = eval( // IE5- 対策\r
+               "({'8':'BS','9':'TAB'," +\r
+               "'13':'ENTER','16':'SHIFT','17':'CTRL','18':'ALT','19':'PAUSE_BREAK','20':'SHIFT+CAPS_LOCK'," +\r
+               "'27':'ESC','28':'trans','29':'notrans'," +\r
+               "'33':'PAGE_UP','34':'PAGE_DOWN','35':'END','36':'HOME','37':'CSR_L','38':'CSR_U','39':'CSR_R','40':'CSR_D'," +\r
+               "'44':'PRT_SCRN','45':'INS','46':'DEL'," +\r
+               "'91':'LWIN','92':'RWIN','93':'APP'," +\r
+               "'96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57,'106':42,'107':43,'109':45," +\r
+               "'111':47,'112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12'," +\r
+               "'144':'NUM_LOCK','145':'SCROLL_LOCK','208':'CAPS_LOCK','240':'CAPS_LOCK','242':'K/H','243':'H/Z','244':'H/Z'})" ),\r
        X_KB_DOWN_KEYS   = {},\r
        X_KB_CANCELED    = {},\r
        X_KB_lastIs10Key = false,\r
@@ -99,7 +42,7 @@ var X_KB_SPECIALS = {
                                        var keyCode = e.keyCode,  // keyCode says something about the actual keyboard key the user pressed\r
                                                chrCode = e.charCode, // while charCode gives the ASCII value of the resulting character\r
                                                cb      = X_CALLBACK_NONE,\r
-                                               special, is10Key, _keyCode;\r
+                                               special, _keyCode;\r
                                        \r
                                        console.log( e.type + ' > keyCode:' + keyCode + ' chrCode:' + chrCode );\r
                                        \r
@@ -123,15 +66,15 @@ var X_KB_SPECIALS = {
                                                                };\r
                                                                \r
                                                                cb = this[ 'dispatch' ]( {\r
-                                                                       type     : 'keydown',\r
-                                                                       keyCode  : keyCode,\r
-                                                                       charCode : chrCode,\r
-                                                                       keyName  : X_Type_isString( special ) ? special : '',\r
-                                                                       is10key  : !!is10Key,\r
-                                                                       shiftKey : !!X_KB_DOWN_KEYS[ 16 ],\r
-                                                                       ctrlKey  : !!X_KB_DOWN_KEYS[ 17 ],\r
-                                                                       altKey   : !!X_KB_DOWN_KEYS[ 18 ],\r
-                                                                       metaKey  : !!X_KB_DOWN_KEYS[ 224 ]\r
+                                                                       type      : 'keydown',\r
+                                                                       keyCode   : keyCode,\r
+                                                                       charCode  : chrCode,\r
+                                                                       'keyName' : X_Type_isString( special ) ? special : '',\r
+                                                                       'is10key' : !!X_KB_lastIs10Key,\r
+                                                                       shiftKey  : !!X_KB_DOWN_KEYS[ 16 ],\r
+                                                                       ctrlKey   : !!X_KB_DOWN_KEYS[ 17 ],\r
+                                                                       altKey    : !!X_KB_DOWN_KEYS[ 18 ],\r
+                                                                       metaKey   : !!X_KB_DOWN_KEYS[ 224 ]\r
                                                                } );\r
                                                                \r
                                                                if( cb & X_CALLBACK_PREVENT_DEFAULT ){\r
@@ -149,29 +92,31 @@ var X_KB_SPECIALS = {
                                                        \r
                                                case 'keypress' :\r
                                                        // keydown 側で発火しているものは再び発火しない\r
-                                                       console.log( 'keypress : chrCode:' + chrCode + ' down:' + X_KB_DOWN_KEYS[ chrCode ] + ( X_KB_CANCELED[ chrCode ] ? ' Cancel!' : '' ) );\r
+                                                       \r
                                                        if( X_KB_DOWN_KEYS[ chrCode ] ){\r
                                                                return X_KB_CANCELED[ chrCode ] ? X_CALLBACK_PREVENT_DEFAULT : cb;\r
                                                        } else\r
                                                        if( keyCode === 32 ){\r
-                                                               charCode = 32;\r
+                                                               chrCode = 32;\r
                                                        };\r
 \r
                                                        if( 32 <= chrCode && chrCode <= 126 ){\r
                                                                X_KB_TRANSFOEM[ X_KB_lastKeyCode ] = chrCode;\r
                                                                \r
                                                                cb = this[ 'dispatch' ]( {\r
-                                                                       type     : 'keydown',\r
-                                                                       keyCode  : X_KB_lastIs10Key ? X_KB_lastKeyCode : 0,\r
-                                                                       charCode : chrCode,\r
-                                                                       is10key  : X_KB_lastIs10Key,\r
-                                                                       shiftKey : !!X_KB_DOWN_KEYS[ 16 ],\r
-                                                                       ctrlKey  : !!X_KB_DOWN_KEYS[ 17 ],\r
-                                                                       altKey   : !!X_KB_DOWN_KEYS[ 18 ],\r
-                                                                       metaKey  : !!X_KB_DOWN_KEYS[ 224 ]\r
+                                                                       type      : 'keydown',\r
+                                                                       keyCode   : X_KB_lastIs10Key ? X_KB_lastKeyCode : 0,\r
+                                                                       charCode  : chrCode,\r
+                                                                       'is10key' : X_KB_lastIs10Key,\r
+                                                                       shiftKey  : !!X_KB_DOWN_KEYS[ 16 ],\r
+                                                                       ctrlKey   : !!X_KB_DOWN_KEYS[ 17 ],\r
+                                                                       altKey    : !!X_KB_DOWN_KEYS[ 18 ],\r
+                                                                       metaKey   : !!X_KB_DOWN_KEYS[ 224 ]\r
                                                                } );\r
                                                                \r
-                                                               X_KB_lastIs10Key = true;\r
+                                                               X_KB_lastIs10Key = false;\r
+                                                               \r
+                                                               console.log( X_KB_lastKeyCode + 'keypress : chrCode:' + chrCode + ' down:' + X_KB_DOWN_KEYS[ chrCode ] + ( X_KB_CANCELED[ chrCode ] ? ' Cancel!' : '' ) );\r
                                                        };\r
                                                        return cb;\r
                                                        \r
@@ -182,41 +127,48 @@ var X_KB_SPECIALS = {
                                                \r
                                                        if( ( special = X_KB_SPECIALS[ keyCode ] ) && ( !X_KB_DOWN_KEYS[ keyCode ] && !X_KB_DOWN_KEYS[ special ] ) ){\r
                                                                cb |= this[ 'dispatch' ]( {\r
-                                                                       type      : 'keydown',\r
-                                                                       keyCode   : keyCode,\r
-                                                                       charCode  : 0,\r
-                                                                       keyName   : special,\r
-                                                                       is10key   : false,\r
-                                                                       isVirtual : true,\r
-                                                                       shiftKey  : !!X_KB_DOWN_KEYS[ 16 ],\r
-                                                                       ctrlKey   : !!X_KB_DOWN_KEYS[ 17 ],\r
-                                                                       altKey    : !!X_KB_DOWN_KEYS[ 18 ],\r
-                                                                       metaKey   : !!X_KB_DOWN_KEYS[ 224 ]\r
+                                                                       type        : 'keydown',\r
+                                                                       keyCode     : keyCode,\r
+                                                                       charCode    : 0,\r
+                                                                       'keyName'   : special,\r
+                                                                       'is10key'   : false,\r
+                                                                       'isVirtual' : true,\r
+                                                                       shiftKey    : !!X_KB_DOWN_KEYS[ 16 ],\r
+                                                                       ctrlKey     : !!X_KB_DOWN_KEYS[ 17 ],\r
+                                                                       altKey      : !!X_KB_DOWN_KEYS[ 18 ],\r
+                                                                       metaKey     : !!X_KB_DOWN_KEYS[ 224 ]\r
                                                                } );\r
                                                        };\r
                                                \r
                                                        if( X_KB_DOWN_KEYS[ keyCode ] ) delete X_KB_DOWN_KEYS[ keyCode ];\r
                                                        if( X_KB_CANCELED[ keyCode ]  ) delete X_KB_CANCELED[ keyCode ];\r
                                                        \r
-                                                       chrCode = 0;\r
+                                                       \r
                                                        if( !special ){\r
                                                                // keyCode から charCode を復帰する\r
                                                                chrCode = X_KB_TRANSFOEM[ keyCode ];\r
                                                                if( !chrCode ) return cb;\r
                                                                delete X_KB_TRANSFOEM[ keyCode ];\r
+                                                       } else\r
+                                                       if( 42 <= special ){\r
+                                                               chrCode = special; // ie8で必要... Firefox でもテンキーの+-*/ で必要...\r
+                                                       } else {\r
+                                                               chrCode = 0;\r
                                                        };\r
-                                               \r
+                                                       \r
+                                                       console.log( keyCode + ' keyup ' + chrCode );\r
+                                                       \r
                                                        cb |= this[ 'dispatch' ]( {\r
-                                                               type     : 'keyup',\r
-                                                               keyCode  : keyCode,\r
-                                                               charCode : chrCode,\r
-                                                               keyName  : X_Type_isString( special ) ? special : '',\r
-                                                               shiftKey : X_KB_DOWN_KEYS[ 16 ],\r
-                                                               ctrlKey  : X_KB_DOWN_KEYS[ 17 ],\r
-                                                               altKey   : X_KB_DOWN_KEYS[ 18 ],\r
-                                                               metaKey  : X_KB_DOWN_KEYS[ 224 ]\r
+                                                               type      : 'keyup',\r
+                                                               keyCode   : keyCode,\r
+                                                               charCode  : chrCode,\r
+                                                               'keyName' : X_Type_isString( special ) ? special : '',\r
+                                                               shiftKey  : X_KB_DOWN_KEYS[ 16 ],\r
+                                                               ctrlKey   : X_KB_DOWN_KEYS[ 17 ],\r
+                                                               altKey    : X_KB_DOWN_KEYS[ 18 ],\r
+                                                               metaKey   : X_KB_DOWN_KEYS[ 224 ]\r
                                                        } );\r
-\r
+                                                       \r
                                                        return cb;\r
                                                \r
                                                case X_EVENT_VIEW_ACTIVATE :\r