2009年8月20日木曜日

ショートカットキーを作る

ショートカットキーの作り方を考えた。

とりあえず、同時にCtrlが押されたとか、
そういうのは判断できた。

とはいっても、ここのサイトそのまんまだけど。。。


あとは、同時押しでCtrlと何が押されたかを判定できればOK
Ctrl判定すると、文字が取得できない。。。



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html lang="ja">
<head>
<title> .:: Sample Play Keepaway ::.</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<meta name="Author" content="Sample">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script language="Javascript" type="text/javascript"><!--

function accesskey(e) {
    var ctrl = false;
    var shift = false;
    var alt = false;
    var keycode = -1;
    
    // Mozilla(Firefox, NN) and Opera
    if (e != null) {
            ctrl    = typeof e.modifiers == 'undefined' ? e.ctrlKey : e.modifiers & Event.CONTROL_MASK;
            shift = typeof e.modifiers == 'undefined' ? e.shiftKey : e.modifiers & Event.SHIFT_MASK;
            alt = typeof e.modifiers == 'undefined' ? e.altKey : e.modifiers & Event.ALT_MASK;
            // イベントの上位伝播を防止
            e.preventDefault();
            e.stopPropagation();
        
        } else { // Internet Explorer
            ctrl    = event.ctrlKey;
            shift = event.shiftKey;
            alt     = event.altKey;
            // イベントの上位伝播を防止
            event.returnValue = false;
            event.cancelBubble = true;
        }
        
        if (!ctrl && !shift && !alt) {
            if (e != null) {
                keycode = e.which;
            } else {
                keycode = event.keyCode;
            }
            // キーコードの文字を取得
            keychar = String.fromCharCode(keycode).toUpperCase();
        }
        
        document.getElementById('result0').innerHTML = keycode;
        document.getElementById('result1').innerHTML = keychar;
        
        // Ctrl同時押しの場合
        if (ctrl) {
            document.getElementById('result2').innerHTML = 'Ctrlが押されました';
        } else if (shift) {// Shift同時押しの場合
            document.getElementById('result2').innerHTML = 'Shiftが押されました';
        
        } else if (alt){ // Alt同時押しの場合
            document.getElementById('result2').innerHTML = 'Altが押されました';
        }
}

document.onkeydown = accesskey;
//--></script>
</head>
<body>
<div id="result0"></div>
<hr/>
<div id="result1"></div>
<hr/>
<div id="result2"></div>
</body>
</html>

0 件のコメント:

コメントを投稿