зеркало из https://github.com/mozilla/pjs.git
53 строки
2.1 KiB
JavaScript
53 строки
2.1 KiB
JavaScript
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
const Ci = Components.interfaces;
|
||
|
const Cu = Components.utils;
|
||
|
|
||
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||
|
Cu.import("resource://gre/modules/Services.jsm");
|
||
|
|
||
|
// -----------------------------------------------------------------------
|
||
|
// MozKeyboard
|
||
|
// -----------------------------------------------------------------------
|
||
|
|
||
|
function MozKeyboard() { }
|
||
|
|
||
|
MozKeyboard.prototype = {
|
||
|
classID: Components.ID("{397a7fdf-2254-47be-b74e-76625a1a66d5}"),
|
||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIB2GKeyboard, Ci.nsIDOMGlobalPropertyInitializer, Ci.nsIObserver]),
|
||
|
classInfo: XPCOMUtils.generateCI({classID: Components.ID("{397a7fdf-2254-47be-b74e-76625a1a66d5}"),
|
||
|
contractID: "@mozilla.org/b2g-keyboard;1",
|
||
|
interfaces: [Ci.nsIB2GKeyboard],
|
||
|
flags: Ci.nsIClassInfo.DOM_OBJECT,
|
||
|
classDescription: "B2G Virtual Keyboard"}),
|
||
|
|
||
|
init: function(aWindow) {
|
||
|
this._utils = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
|
||
|
Services.obs.addObserver(this, "inner-window-destroyed", false);
|
||
|
this.innerWindowID = this._utils.currentInnerWindowID;
|
||
|
},
|
||
|
|
||
|
observe: function(aSubject, aTopic, aData) {
|
||
|
if (aTopic == "inner-window-destroyed") {
|
||
|
let wId = aSubject.QueryInterface(Ci.nsISupportsPRUint64).data;
|
||
|
if (wId == this.innerWindowID) {
|
||
|
Services.obs.removeObserver(this, "inner-window-destroyed");
|
||
|
this._utils = null;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
sendKey: function mozKeyboardSendKey(keyCode, charCode) {
|
||
|
charCode = (charCode == undefined) ? keyCode : charCode;
|
||
|
['keydown', 'keypress', 'keyup'].forEach((function sendKey(type) {
|
||
|
this._utils.sendKeyEvent(type, keyCode, charCode, null);
|
||
|
}).bind(this));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
const NSGetFactory = XPCOMUtils.generateNSGetFactory([MozKeyboard]);
|