Webstatt.org - Community seit 2006 - 2012 (2024?)

wKeybindings

Avatar user-271
02.08.2007 21:18

wKeybindings v.0.1
Demo: http://demo.moonsword.info/jslibs/wKeybindings/wKeybindings.html

Leichte Verwaltung von Keybindings für Webseiten. Bindings können schnell über:
keys.addAction(keys,function)

eingebunden werden. Wobei keys ein Array aus den Ascii zahlen der Keys ist und function eine beliebige Javascriptanweisung sein

wKeybindings.html zeigt ein Beispiel, wie man sowas einsetzen könnte.

was nicht funktioniert ist: a+b+d....aber es funktioniert: strg+alt+s
warum, weiss ich noch nicht richtig. wer ideen hat, gerne her damit Fettes Grinsen
ausserdem wird in 0.2 noch konstanten kommen, damit man nicht immer den Ascii code hat. Wer grad gute Konstantennamen hat, oder vorschläge hat, gerne per Pn an mich.

Viel Spass damit,
nuit

wKeybindings.html
<html>
<head>
<title></title>
<script type="text/javascript" src="wKeybindings.js"></script>
<script type="text/javascript">
<!--
function cat() {
document.getElementById("output"zwinkern.innerHTML = 'A gedrueckt';
}

// 65 = a ; 17 = Strg ; 37 = Pfeil Links ; 18 = Alt ; 83 = s
keys.addAction([65],'cat()'zwinkern;
keys.addAction([17,37],'document.getElementById("output"zwinkern.innerHTML = "Test";'zwinkern;
keys.addAction([17,18,83],'document.getElementById("output"zwinkern.style.backgroundColor = "red";'zwinkern;
//-->
</script>
</head>
<body>
<b>a</b> oder <b>[STRG]+ArrowLeft</b> oder <b>[STRG]+[ALT]+s</b>
<div id="output" style="padding: 5px; background-color: yellow;"></div>
</body>
</html>


wKeybindings.js
/*
wKeyBindings V0.1

Copyright (C) 2007 Jan Hoersch

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

var wKeybindings = function() {
var pressedKey;
var actions;

this.init = function() {
keys.pressedKey = new Array();
keys.actions = new Array();

document.onkeydown = function(e) {
evt = (e) ? e : ((event) ? event : null);
if(evt) {
var contain = false;
for(i = 0; i < keys.pressedKey.length; i++) {
if(keys.pressedKey[i] == evt.keyCode) {
contain = true;
}
}
if(!contain) {
keys.pressedKey.push(evt.keyCode);
}
keys.check();
}
}

document.onkeyup = function(e) {
evt = (e) ? e : ((event) ? event : null);
if(evt) {
var buffer = [];
for(i = 0; i < keys.pressedKey.length; i++) {
if(keys.pressedKey[i] != evt.keyCode) {
buffer.push(keys.pressedKey[i]);
}
}
keys.pressedKey = buffer;
}
}
}

this.check = function() {
for(i = 0; i < keys.actions.length; i++) {
if(keys.actions[i][0].length == keys.pressedKey.length) {
if(this.compare(keys.actions[i][0],keys.pressedKey)) {
eval(keys.actions[i][1]);
return true;
}
}
}
}

this.compare = function(array_one,array_two) {
buffer = [];
b = 0;
for(a = 0; a < array_one.length; a++) {
for(z = 0; z < array_two.length; z++) {
var contain = false;
for(y = 0; y < buffer.length; y++) {
if(array_two[z] == buffer[y]) {
contain = true;
}
}
if(array_one[a] == array_two[z] && !contain) {
buffer.push(array_two[z]);
}

if(buffer.length == array_one.length) {
return true;
}
}
}
return false;
}

this.addAction = function(pKey,script) {
keys.actions[keys.actions.length] = [pKey,script];
}
}
var keys = new wKeybindings();
keys.init();

#!/bin/bash
traurig){ neutral:& };:
Avatar user-159
03.08.2007 10:13

Browserbedingte einschränkung (zumindest in "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"zwinkern: Wenn in den Einstellungen "Suche beim Tippen" aktiviert ist, kann man dieses Script nicht verwenden.

Avatar user-290
03.08.2007 12:35

Hey ho...Ich find die Lib. geil lächeln.
Die Einschränkung mit der automatischen Suche find ich nicht sehr tragisch. Is ja eh standardmäßig deaktiviert.
------
Zum Problem mit den Kleinbuchstaben (a,b,c,...).
Wenn du den Event-Handler von document.onkeyup auf document.onkeypress änderst funktioniert es. Nur führt das wieder zu einem weiteren Problem:
Die Eigenschaft keyCode funktioniert dann nicht mehr für den Firefox. Demnach müsste man eine Browserweiche einbauen, die zwischen keyCode (Microsoft) und which (Mozilla) entscheidet. Denn mit which funktioniert es im Firefox.
Ich find es einfach nur krank, dass es noch solche perversen Tücken in dieser Sprache gibt. - user-158ke Mozilla, danke Microsoft. ;(

Avatar user-271
03.08.2007 12:40

Original von user-290
Hey ho...Ich find die Lib. geil lächeln.
Die Einschränkung mit der automatischen Suche find ich nicht sehr tragisch. Is ja eh standardmäßig deaktiviert.
------
Zum Problem mit den Kleinbuchstaben (a,b,c,...).
Wenn du den Event-Handler von document.onkeyup auf document.onkeypress änderst funktioniert es. Nur führt das wieder zu einem weiteren Problem:
Die Eigenschaft keyCode funktioniert dann nicht mehr für den Firefox. Demnach müsste man eine Browserweiche einbauen, die zwischen keyCode (Microsoft) und which (Mozilla) entscheidet. Denn mit which funktioniert es im Firefox.
Ich find es einfach nur krank, dass es noch solche perversen Tücken in dieser Sprache gibt. - user-158ke Mozilla, danke Microsoft. ;(

ahhh ok...werd ich mich am Wochenende mit beschäftigen Fettes Grinsen
damit es endlich mal eine gscheite kleine lib gibt Fettes Grinsen die man wirklich einfach verwenden kann und sich nicht mit solchen sachen rumschlagen muss

naja mal schaun, was safari und konqueror noch so sagt zwinkern die hab ich noch nicht getestet...also Mac Leute vor Fettes Grinsen

#!/bin/bash
traurig){ neutral:& };:
user-214
09.08.2007 14:33

Zu Befehl :rolleyes:

Das binding 'a' geht problemlos, sobald sondertasten kommen gehts nicht mehr, jedenfalls bei mir. Denke eig. ich drüch das richtige.

Avatar user-271
27.03.2008 18:13

V0.2 ist draussen:

-> siehe hier: (wKeybindings v0.2)

#!/bin/bash
traurig){ neutral:& };: