Get keyCode from string?

Using the static method in as3, I can get charCode from a character in a string.

How can I get keyCode from character in string? I need to run this function through javascript (if I can do it in Javascript ...)

+4
source share
5 answers

Copy and paste as "KeyCodeUtil.as", place it under the folder: net / onthewings / utils

/* KeyCodeUtil.as Andy Li ( andy@onthewings.net ) 2009-11-02 */ package net.onthewings.utils { import flash.ui.Keyboard; public class KeyCodeUtil { /* The below codes is used for generating KEYCODES. Some formating is needed to be done by hand after getting the outputStr. var outputStr:String = ""; function onPress(evt:KeyboardEvent):void { outputStr += "'" + evt.charCode + "':" + evt.keyCode + ", //"+String.fromCharCode(evt.charCode)+"\n"; } */ static public const KEYCODES:Object = { 27: 27, //esc 96: 192, //` 49: 49, //1 50: 50, //2 51: 51, //3 52: 52, //4 53: 53, //5 54: 54, //6 55: 55, //7 56: 56, //8 57: 57, //9 48: 48, //0 45: 189, //- 61: 187, //= 8: 8, //backspace 9: 9, //tab 113: 81, //q 119: 87, //w 101: 69, //e 114: 82, //r 116: 84, //t 121: 89, //y 117: 85, //u 105: 73, //i 111: 79, //o 112: 80, //p 91: 219, //[ 93: 221, //] 92: 220, //\ 97: 65, //a 115: 83, //s 100: 68, //d 102: 70, //f 103: 71, //g 104: 72, //h 106: 74, //j 107: 75, //k 108: 76, //l 59: 186, //; 39: 222, //' 13: 13, //enter 122: 90, //z 120: 88, //x 99: 67, //c 118: 86, //v 98: 66, //b 110: 78, //n 109: 77, //m 44: 188, //, 46: 190, //. 47: 191, /// 32: 32, //space 127: 46, //delete 126: 192, //~ 33: 49, //! 64: 50, //@ 35: 51, //# 36: 52, //$ 37: 53, //% 94: 54, //^ 38: 55, //& 42: 56, //* 40: 57, //( 41: 48, //) 95: 189, //_ 43: 187, //+ 81: 81, //Q 87: 87, //W 69: 69, //E 82: 82, //R 84: 84, //T 89: 89, //Y 85: 85, //U 73: 73, //I 79: 79, //O 80: 80, //P 123: 219, //{ 125: 221, //} 124: 220, //| 65: 65, //A 83: 83, //S 68: 68, //D 70: 70, //F 71: 71, //G 72: 72, //H 74: 74, //J 75: 75, //K 76: 76, //L 58: 186, //: 34: 222, //" 90: 90, //Z 88: 88, //X 67: 67, //C 86: 86, //V 66: 66, //B 78: 78, //N 77: 77, //M 60: 188, //< 62: 190, //> 63: 191 //? } /** * @param char Can be String or charCode(Number). * @param numpad If set to true, the function will return the keyCode for numpad. Ignored if numpad have no such key. */ static public function keyCodeOf(char:*, numpad:Boolean = false):Number { var charCode:Number; if (char is String) charCode = (char as String).charCodeAt(); else charCode = char; if (numpad){ if (charCode >= 48 && charCode <= 57){ //0-9 return charCode + 48; } else if (charCode == 43){ return Keyboard.NUMPAD_ADD; } else if (charCode == 46){ return Keyboard.NUMPAD_DECIMAL; } else if (charCode == 47){ return Keyboard.NUMPAD_DIVIDE; } else if (charCode == 13){ return Keyboard.NUMPAD_ENTER; } else if (charCode == 42){ return Keyboard.NUMPAD_MULTIPLY; } else if (charCode == 45){ return Keyboard.NUMPAD_SUBTRACT; } } return KEYCODES[charCode] ? KEYCODES[charCode] : -1; } } } 
+5
source

Use this in Adobe AIR:

 var str:String = "a"; //only one letter at a time var keyCode:uint = Keyboard[str.toUpperCase()]; trace(keyCode); 
+2
source

Why do you get the key code from a string? Why not get it directly from KeyboardEvent ?

The following is a stripped-down version of the sample code in the documentation that shows how to process and retrieve the key code from KeyboardEvent :

 package { import flash.display.Sprite; import flash.display.DisplayObject; import flash.events.*; public class KeyboardEventExample extends Sprite { private var child:Sprite = new Sprite(); private var bgColor:uint = 0x00CCFF; private var size:uint = 80; public function KeyboardEventExample() { child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); addChild(child); child.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); child.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); } private function keyDownHandler(event:KeyboardEvent):void { trace("keyDownHandler: " + event.keyCode); } private function keyUpHandler(event:KeyboardEvent):void { trace("keyUpHandler: " + event.keyCode); } } } 
+1
source

If you really have a line to be read, and listening to the keyboard is not an option (as Soviut advises), you will need to make sure that the line is divided into some, usually with commas, as the number of characters is not the same for each keyCode, and some key codes are strings, while others are uint.

Here is a list of all keyCode constants:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/ui/Keyboard.html

0
source

I thought I would include a much simpler way to do this:

 var str:String = "B"; trace(str.charCodeAt(0)); // replace 0 with the index of the char you want the code of 
-one
source

All Articles