* keydown について。Firefox では押している間中リスナの関数が実行される\r
* デフォルトイベントの制御・抑止 (opera)keypress を用いる。\r
* \r
- * キーイベント処理の工夫\r
- * http://www.keynavi.net/ja/tipsj/kfunc.html\r
- * keydown/up時にピリオドが文字化け (IE4-6) IE4+では「keypress」でキーコードを処理する 但しCtrlやALTが押されている場合は逆にkeydownで処理する必要があります\r
- * \r
* \r
* keydown をトリガーにイベントを発火するもの\r
* 1. テンキーの 0~9 keyCode:96-105\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
+ "'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,'110':46,'111':47," +\r
+ "'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_lastKeyCode = 0, \r
X_KB_TRANSFOEM = {},\r
\r
+ // TODO keyevent のためには input 等にフォーカスが必要 -> iOS\r
+ \r
X_kbManager =\r
X_Class_override(\r
X_EventDispatcher(),\r
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, _keyCode;\r
+ special;\r
\r
- console.log( e.type + ' > keyCode:' + keyCode + ' chrCode:' + chrCode );\r
+ // console.log( e.type + ' > keyCode:' + keyCode + ' chrCode:' + chrCode );\r
\r
switch( e.type ){\r
case 'keydown' :\r
if( X_KB_DOWN_KEYS[ keyCode ] ){\r
// 既に押されている、メタキー[shift,ctrl,alt]の変化はある?\r
+ console.log( ' doen -- ' );\r
+ \r
return X_KB_CANCELED[ keyCode ] ? X_CALLBACK_PREVENT_DEFAULT : cb;\r
} else\r
if( special = X_KB_SPECIALS[ keyCode ] ){\r
}; */\r
} else {\r
X_KB_lastKeyCode = keyCode;\r
- }; \r
+ \r
+ if( e.ctrlKey || e.altKey || e.metaKey ){\r
+ cb = this[ 'dispatch' ]( {\r
+ type : 'keydown',\r
+ keyCode : 0,\r
+ charCode : chrCode,\r
+ 'keyName' : '',\r
+ 'is10key' : false,\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
+ X_KB_CANCELED[ keyCode ] = true;\r
+ };\r
+ };\r
+ console.log( ' keydown[' + keyCode + ']' + String.fromCharCode( chrCode ) + chrCode );\r
+ };\r
return cb;\r
\r
case 'keypress' :\r
// keydown 側で発火しているものは再び発火しない\r
- \r
if( X_KB_DOWN_KEYS[ chrCode ] ){\r
+ // TODO keypress\r
return X_KB_CANCELED[ chrCode ] ? X_CALLBACK_PREVENT_DEFAULT : cb;\r
} else\r
if( keyCode === 32 ){\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
+ } else {\r
+ console.log( '>> keypress : chrCode:' + chrCode + ' down:' + X_KB_DOWN_KEYS[ chrCode ] + ( X_KB_CANCELED[ chrCode ] ? ' Cancel!' : '' ) );\r
};\r
return cb;\r
\r
chrCode = 0;\r
};\r
\r
- console.log( keyCode + ' keyup ' + chrCode );\r
+ //console.log( keyCode + ' keyup ' + chrCode );\r
\r
cb |= this[ 'dispatch' ]( {\r
type : 'keyup',\r