1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-19 21:27:59 +01:00

Fix key event stringification letter-case issue for non-keypress events. Closes issue #258.

This commit is contained in:
Kris Maglione
2011-02-18 20:59:16 -05:00
parent 11c39de46b
commit ce23dd079d
2 changed files with 24 additions and 12 deletions

View File

@@ -387,19 +387,24 @@ var Events = Module("events", {
this._key_code = {};
for (let list in values(this._keyTable))
for (let v in values(list))
for (let v in values(list)) {
if (v.length == 1)
v = v.toLowerCase();
this._key_key[v.toLowerCase()] = v;
}
for (let [k, v] in Iterator(KeyEvent)) {
k = k.substr(7).toLowerCase();
let names = [k.replace(/(^|_)(.)/g, function (m, n1, n2) n2.toUpperCase())
.replace(/^NUMPAD/, "k")];
if (names[0].length == 1)
names[0] = names[0].toLowerCase();
if (k in this._keyTable)
names = this._keyTable[k];
this._code_key[v] = names[0];
for (let [, name] in Iterator(names)) {
if (name.length == 1)
name = name.toLowerCase();
this._key_key[name.toLowerCase()] = name;
this._key_code[name.toLowerCase()] = v;
}
@@ -1185,6 +1190,9 @@ var Events = Module("events", {
else if (!event.isMacro && !event.noremap && events.shouldPass(event))
ignore = true;
events.dbg("ON KEYPRESS " + key + " ignore: " + ignore,
event.originalTarget instanceof Element ? event.originalTarget : String(event.originalTarget));
if (ignore)
return null;
@@ -1231,17 +1239,20 @@ var Events = Module("events", {
},
keyup: function onKeyUp(event) {
// Prevent certain sites from transferring focus to an input box
// before we get a chance to process our key bindings on the
// "keypress" event.
this.keyEvents.push(event);
if (modes.main == modes.PASS_THROUGH ||
let pass = modes.main == modes.PASS_THROUGH ||
modes.main == modes.QUOTE
&& modes.getStack(1).main !== modes.PASS_THROUGH
&& !events.shouldPass(event) ||
!modes.passThrough && events.shouldPass(event))
this.keyEvents.push(event);
else if (!Events.isInputElement(dactyl.focusedElement))
&& !this.shouldPass(event) ||
!modes.passThrough && this.shouldPass(event);
events.dbg("ON " + event.type.toUpperCase() + " " + this.toString(event) + " pass: " + pass);
// Prevents certain sites from transferring focus to an input box
// before we get a chance to process our key bindings on the
// "keypress" event.
if (!pass && !Events.isInputElement(dactyl.focusedElement))
event.stopPropagation();
},
keydown: function onKeyDown(event) {

View File

@@ -125,8 +125,8 @@ var Modes = Module("modes", {
});
this.addMode("EMBED", {
input: true,
description: "Active when an <embed> or <object> element is focused",
input: true,
ownsFocus: true,
passthrough: true
});
@@ -135,6 +135,7 @@ var Modes = Module("modes", {
description: "All keys but <C-v> are ignored by " + config.appName,
bases: [this.BASE],
hidden: true,
input: true,
passthrough: true
});
this.addMode("QUOTE", {