[AS3/JS] Flash Right Click

**Tested: **
Windows XP: FF2.0, Safari, IE6
Mac: FF2.0 (no Right Up, although many will not use this because there theoretically is no use for right up).

Description:
Ever wanted to right click on a website/game? No more context menu.

[COLOR=“DarkOrange”]THIS IS SOOO OLD, so all urls broke:
http://root.templarian.com/index/u/ufile/index.html
[/COLOR]

Example

Source:
http://www.templarian.com/u/ufile/index.html
http://www.templarian.com/u/ufile/swfobject.js (used to make it easier).
http://www.templarian.com/u/ufile/main.swf (not a source… but required).
http://www.templarian.com/u/ufile/swfoverlay.js
http://www.templarian.com/u/ufile/b.gif (blame IE).

HTML:

<html>
<head>
<title>Testing</title>

</head>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="swfoverlay.js"></script>
<script type="text/javascript">
//SET
function sendKEYUP(key) {
    thisMovie(fid).callKU(key);
}
function sendKEYDOWN(key) {
    thisMovie(fid).callKD(key);
}
function sendX(x) {
    thisMovie(fid).callX(x);
}
function sendY(y) {
    thisMovie(fid).callY(y);
}
function sendW(d) {
    thisMovie(fid).callW(d);
}
function sendLU() {
    thisMovie(fid).callLU();
}
function sendLD() {
    thisMovie(fid).callLD();
}
function sendMU() {
    thisMovie(fid).callMU();
}
function sendMD() {
    thisMovie(fid).callMD();
}
function sendRD() {
    thisMovie(fid).callRD();
}
function sendRU() {
    thisMovie(fid).callRU();
}
</script>
<body>
<div onKeyDown="return getKeyDown(event)" onKeyUp="return getKeyUp(event)" onMouseDown="return getMouseDown(event)" onMouseUp="return getMouseUp(event)" onClick="return dont(event)" onDblClick="return dont(event)" oncontextmenu="return dont(event)">
    <div id="overlay" style="width:100%;height:100%;position:absolute;top:0px;left:0px;z-index: 1;background:url(b.gif);"></div>
    <div id="flashcontent" style="width:100%;height:100%;position:absolute;top:0px;left:0px;z-index: 0;">This text is replaced by the Flash movie.</div>
</div>
<script type="text/javascript">
    SWFOverlay("flashcontent","ExternalInterfaceExample","overlay");
    var so = new SWFObject("main.swf", "ExternalInterfaceExample", "100%", "100%", "9", "#336699");
    so.addParam("wmode", "transparent");
    so.addParam("allowScriptAccess", "always");
    so.write("flashcontent");
</script>
</body>
</html>

AS3


package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.external.ExternalInterface;
    import flash.text.TextField;
    import flash.utils.Timer;
    import flash.text.TextFieldType;
    import flash.text.TextFieldAutoSize;
    import flash.ui.Keyboard;
    public class ExternalInterfaceExample extends Sprite {
        public var output:TextField;
        public var txtX:TextField = new TextField();
        public var txtY:TextField = new TextField();
        public var shiftDown:Boolean, capsLock:Boolean;
        public function ExternalInterfaceExample() {
 
            output = new TextField();
            output.x = 10;
            output.y = 25;
            output.width = 780;
            output.height = 450;
            output.multiline = true;
            output.wordWrap = true;
            output.selectable = false;
            output.border = true;
            output.text = "Initializing...
";
            addChild(output);
 
            txtX.x = 20;
            txtX.y = 480;
            txtX.width = 250;
            txtX.height = 20;
            txtX.border = true;
            txtX.selectable = false;
            addChild(txtX);
 
            txtY.x = 20;
            txtY.y = 500;
            txtY.width = 250;
            txtY.height = 20;
            txtY.border = true;
            txtY.selectable = false;
            addChild(txtY);
            AddJavascriptCallBack("callX", callX);
            AddJavascriptCallBack("callY", callY);
            AddJavascriptCallBack("callKD", callKD);
            AddJavascriptCallBack("callKU", callKU);
            AddJavascriptCallBack("callLD", callLD);
            AddJavascriptCallBack("callLU", callLU);
            AddJavascriptCallBack("callRD", callRD);
            AddJavascriptCallBack("callRU", callRU);
            AddJavascriptCallBack("callMD", callMD);
            AddJavascriptCallBack("callMU", callMU);
            AddJavascriptCallBack("callW", callW);
        }
        private function checkJavaScriptReady():Boolean {
            var isReady:Boolean = ExternalInterface.call("isReady");
            return isReady;
        }
        private function timerHandler(event:TimerEvent):void {
            //output.appendText("Checking JavaScript status...
");
            var isReady:Boolean = checkJavaScriptReady();
            if (isReady) {
                output.appendText("JavaScript is ready.
");
                Timer(event.target).stop();
            }
        }
        public function callKD(keyCode:uint):void{
            if(keyCode == Keyboard.SHIFT){
                shiftDown = true;
            }
            var asciiCode:uint = GetAsciiValueFromKeyCode(keyCode, shiftDown || capsLock);
 
            output.appendText("KD: " + String.fromCharCode(asciiCode) + "
");
        }
        public function callKU(keyCode:uint):void{
            if(keyCode == Keyboard.SHIFT){
                shiftDown = false;
            }
            if(keyCode == Keyboard.CAPS_LOCK){
                capsLock = !capsLock;
            }
            var asciiCode:uint = GetAsciiValueFromKeyCode(keyCode, shiftDown || capsLock);
 
            output.appendText("KU: " + String.fromCharCode(asciiCode) + "
");
        }
        //Mouse X Position
        public function callX(x_:Number):void {
            txtX.text = x_.toString();
        }
        //Mouse Y Position
        public function callY(y_:Number):void {
            txtY.text = y_.toString();
        }
        //Mouse Left Button Down
        public function callLD():void {
            output.appendText("LD
");
        }
        //Mouse Left Button Up
        public function callLU():void {
            output.appendText("LU
");
        }
        //Mouse Right Button Down
        public function callRD():void {
            output.appendText("RD
");
        }
        //Mouse Right Button Up
        public function callRU():void {
            output.appendText("RU
");
        }
        //Mouse Middle Button Down
        public function callMD():void {
            output.appendText("MD
");
        }
        //Mouse Middle Button Up
        public function callMU():void {
            output.appendText("MU
");
        }
        //Mouse Wheel Delta
        public function callW(delta_:int):void {
            output.appendText("Mouse WheelDelta: " + delta_.toString() + "
");
        }
        public function AddJavascriptCallBack(ID_:String, callback_:Function):void {
            if (ExternalInterface.available) {
                try {
                    //output.appendText("Adding callback...
");
                    ExternalInterface.addCallback(ID_, callback_);
                } catch (error:SecurityError) {
                    output.appendText("A SecurityError occurred: " + error.message + "
");
                } catch (error:Error) {
                    output.appendText("An Error occurred: " + error.message + "
");
                }
            } else {
                output.appendText("External interface is not available for this container.
");
            }
        }
 
        public function GetAsciiValueFromKeyCode(keyCode:uint, shiftDown_:Boolean):uint {
            if(shiftDown_){
                if(keyCode >= 65 && keyCode <= 90){
                    return keyCode;
                }
                switch(keyCode){
                  case 48://)
                    return 41;
                    break;
                  case 49://!
                    return 33;
                    break;
                  case 50://@
                    return 64;
                    break;
                  case 51://#
                    return 35;
                    break;
                  case 52://$
                    return 36;
                    break;
                  case 53://%
                    return 37;
                    break;
                  case 54://^
                    return 94;
                    break;
                  case 55://&
                    return 38;
                    break;
                  case 56://*
                    return 42;
                    break;
                  case 57://(
                    return 40;
                    break;
                  case 219://{
                    return 123;
                    break;
                  case 221://}
                    return 125;
                    break;
                  case 220://|
                    return 124;
                    break;
                  case 186://:
                    return 58;
                    break;
                  case 222://"
                    return 34;
                    break;
                  case 188://<
                    return 60;
                    break;
                  case 190://>
                    return 62;
                    break;
                  case 191://?
                    return 63;
                    break;
                  case 189://_
                    return 95;
                    break;
                  case 187://+
                    return 43;
                    break;
                  case 192://~
                    return 126;
                    break;
                }
            }else{
                if(keyCode >= 65 && keyCode <= 90){
                    return keyCode+32;
                }
                if(keyCode >= 48 && keyCode <= 57){
                    return keyCode;
                }
                switch(keyCode){
                  case 219://[
                    return 91;
                    break;
                  case 221://]
                    return 93;
                    break;
                  case 220://\
                    return 92;
                    break;
                  case 186://;
                    return 58;
                    break;
                  case 222://'
                    return 39;
                    break;
                  case 188://,
                    return 44;
                    break;
                  case 190://.
                    return 46;
                    break;
                  case 191:///
                    return 47;
                    break;
                  case 189://-
                    return 45;
                    break;
                  case 187://=
                    return 61;
                    break;
                  case 192://`
                    return 96;
                    break;
                }
            }
            return keyCode;
        }
        //End of JAVASCRIPT functions
    }
}

…i guess i’ll give credits to Sirisian down here at the bottom for writing the AS3.