blob: 801f353a05777168f103e32ed18526ad0c320adc [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.events.TextEvent;
import flash.system.Capabilities;
import flash.text.TextField;
import flash.text.TextFieldType;
[SWF(width="500", height="300")]
public class KeyLogger extends Sprite
{
public function KeyLogger()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
textField = new TextField();
addChild(textField);
textField.width = 500;
textField.height = 300;
textField.selectable = true;
textField.type = TextFieldType.DYNAMIC;
sprite = new Sprite();
sprite.graphics.beginFill(0xff,0);
sprite.graphics.drawRect(0,0,500,300);
sprite.graphics.endFill();
addChild(sprite);
sprite.focusRect = false;
stage.focus = sprite;
sprite.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
sprite.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
sprite.addEventListener(TextEvent.TEXT_INPUT, inputHandler);
sprite.addEventListener(Event.COPY, miscEventHandler);
sprite.addEventListener(Event.SELECT_ALL, miscEventHandler);
sprite.addEventListener(Event.CUT, miscEventHandler);
sprite.addEventListener(Event.PASTE, miscEventHandler);
sprite.addEventListener(Event.CLEAR, miscEventHandler);
sprite.mouseEnabled = false;
sprite.addEventListener(FocusEvent.KEY_FOCUS_CHANGE,focusChange);
sprite.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE,focusChange);
stage.addEventListener(Event.ENTER_FRAME,repairFocus);
reportString(Capabilities.version + " " + Capabilities.os);
}
private function focusChange(e:FocusEvent):void
{
// if (stage.focus != sprite)
// stage.focus = sprite;
repairFocusFlag = true;
trace("Hey don't click");
}
private var repairFocusFlag:Boolean = false;
private function repairFocus(e:Event):void
{
if (stage.focus != sprite)
stage.focus = sprite;
}
private var textField:TextField;
private var sprite:Sprite;
private var totalText:String;
private function reportString(str:String):void
{
trace(str);
if (totalText)
totalText += "\n" + str;
else
totalText = str;
textField.text = totalText;
textField.scrollV = textField.maxScrollV;
stage.focus = sprite;
}
private function keyHandler(e:KeyboardEvent):void
{
var charCodeString:String = e.charCode != 0 ? String.fromCharCode(e.charCode) : null;
var str:String = "KeyboardEvent:" + e.type+" "+"keyCode:"+" "+e.keyCode+" "+"charCode:"+" "+e.charCode+" "+ (charCodeString ? (charCodeString+" ") : "") +"ctrlKey?"+" "+e.ctrlKey+" "+"altKey?"+" "+e.altKey;
reportString(str);
}
private function inputHandler(e:TextEvent):void
{
var textString:String = e.text ? e.text : "";
var str:String = "TextEvent:" + e.type+" "+"text:"+" "+textString;
reportString(str);
}
private function miscEventHandler(e:Event):void
{
var str:String = "Event:"+e.type;
reportString(str);
}
}
}