今回はManaged JScriptでのキーイベントについてです。
何のキーが押下されたのかの判定がちょっとややこしいです。
基本的なキーを判別するのであれば
イベントオブジェクトのeventArgs.Keyと
キー配列の一覧をもつKeyクラスで用が立つのですが
Keyクラスでは足りないこともよくあります。
やっぱりそこはキーコードを見て判断するしかないようです。
また、シフトが押下されているかの判断は
KeyboardクラスとModifierKeysクラスを使って判断します。
何故かイベントオブジェクトからでは判断できません。
紛らわしいです。
下記のように記述します。
fooのbarオブジェクトに対してキーが押下されたら
doKeyDownメソッドを呼び出しています。
Import(“System.Windows.Input.Key”)
Import(“System.Windows.Input.Keyboard”)
Import(“System.Windows.Input.ModifierKeys”)
foo.bar.KeyDown += doKeyDown;
function doKeyDown(sender, eventArgs){
// Altが押されている
if((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt){
return;
}
// コントロールが押されている
if((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control){
return;
}
// シフトが押されている
if((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift){
return;
}
if(eventArgs.Key == Key.Enter){
// エンターが押下
} else {
// キーコードで判断
switch(eventArgs.PlatformKeyCode){
case 191:
// “/”が押下
break;
default:
break;
}
} // if(eventArgs.Key == Key.Enter)
}