📄 mgjs_keyevent.cpp
字号:
#include "mgjs_main.h"static JSBool GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool SetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool KeyEventInitKeyEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);static JSBool MouseEventInitMouseEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);//// KeyEvent property ids//enum KeyEvent_slots { KEYEVENT_CHARCODE , KEYEVENT_KEYCODE , KEYEVENT_ALTKEY , KEYEVENT_CTRLKEY , KEYEVENT_SHIFTKEY , KEYEVENT_METAKEY , MOUSEEVENT_SCREENX , MOUSEEVENT_SCREENY , MOUSEEVENT_CLIENTX , MOUSEEVENT_CLIENTY , MOUSEEVENT_BUTTON , MOUSEEVENT_RELATEDTARGET };static JSBool GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) { case KEYEVENT_CHARCODE : *vp = INT_TO_JSVAL(32); break; case KEYEVENT_KEYCODE : break; case KEYEVENT_ALTKEY : break; case KEYEVENT_CTRLKEY : break; case KEYEVENT_SHIFTKEY : break; case KEYEVENT_METAKEY : break; case MOUSEEVENT_SCREENX : break; case MOUSEEVENT_SCREENY : break; case MOUSEEVENT_CLIENTX : break; case MOUSEEVENT_CLIENTY : break; case MOUSEEVENT_BUTTON : break; case MOUSEEVENT_RELATEDTARGET : break; } } return JS_TRUE;}static JSBool SetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) { case KEYEVENT_CHARCODE : break; case KEYEVENT_KEYCODE : break; case KEYEVENT_ALTKEY : break; case KEYEVENT_CTRLKEY : break; case KEYEVENT_SHIFTKEY : break; case KEYEVENT_METAKEY : break; case MOUSEEVENT_SCREENX : break; case MOUSEEVENT_SCREENY : break; case MOUSEEVENT_CLIENTX : break; case MOUSEEVENT_CLIENTY : break; case MOUSEEVENT_BUTTON : break; case MOUSEEVENT_RELATEDTARGET : break; } } return JS_TRUE;}//// Native method StopPropagation//static JSBool KeyEventInitKeyEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ return JS_TRUE;}static JSBool MouseEventInitMouseEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ return JS_TRUE;}//// class for KeyEvent//JSClass KeyEventClass = { "KeyEvent", JSCLASS_HAS_PRIVATE, JS_PropertyStub, JS_PropertyStub, GetKeyEventProperty, SetKeyEventProperty, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };//// KeyEvent class properties//static JSPropertySpec KeyEventProperties[] ={ {"charCode", KEYEVENT_CHARCODE, JSPROP_ENUMERATE | JSPROP_READONLY}, {"keyCode", KEYEVENT_KEYCODE, JSPROP_ENUMERATE | JSPROP_READONLY}, {"altKey", KEYEVENT_ALTKEY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"ctrlKey", KEYEVENT_CTRLKEY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"shiftKey", KEYEVENT_SHIFTKEY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"metaKey", KEYEVENT_METAKEY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"screenX", MOUSEEVENT_SCREENX, JSPROP_ENUMERATE | JSPROP_READONLY}, {"screenY", MOUSEEVENT_SCREENY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"clientX", MOUSEEVENT_CLIENTX, JSPROP_ENUMERATE | JSPROP_READONLY}, {"clientY", MOUSEEVENT_CLIENTY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"button", MOUSEEVENT_BUTTON, JSPROP_ENUMERATE | JSPROP_READONLY}, {"relatedTarget", MOUSEEVENT_RELATEDTARGET, JSPROP_ENUMERATE | JSPROP_READONLY}, {0}};//// KeyEvent class methods//static JSFunctionSpec KeyEventMethods[] = { {"initKeyEvent", KeyEventInitKeyEvent, 10}, {"initMouseEvent", MouseEventInitMouseEvent, 11}, {0}};JSObject* InitKeyEventClass(JSContext *cx,JSObject *globalObj,JSObject *proto){ JSObject *obj; obj = JS_DefineObject (cx,globalObj, "KeyEvent", &KeyEventClass,proto,JSPROP_ENUMERATE); JS_DefineProperties (cx,obj,KeyEventProperties); JS_DefineFunctions (cx,obj,KeyEventMethods); return obj;}JSObject* NewScriptKeyEvent(JSContext *cx,JSObject *proto,JSObject *parent,ElementImpl *eImpl){ JSObject *obj; JSObject *global = JS_GetGlobalObject(cx); jsval vp; if ((JS_TRUE == JS_LookupProperty(cx, global, "KeyEvent", &vp) && JSVAL_IS_OBJECT(vp))) obj=JS_NewObject(cx,&KeyEventClass,JSVAL_TO_OBJECT(vp),NULL); else obj=InitKeyEventClass(cx,JS_GetParent(cx,proto),proto); return obj;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -