JavaScript - Gedrückte taste

  • So, mit ein wenig google und Langeweile hab ich jetzt quasi n Archiv für die Tasten-Indizes gemacht. Das heisst, ne funktion die euch die gedrückte Taste als String gibt. Also der nutzer drückt a, es kommt a. Er drückt F2, es kommt F2, er drück die linke windows taste, es kommt wdl (WinDowsLeft) u.s.w., ihr könnts ja mal testen. Das Ganze ist Crossbrowser (is ja nich so ne sache hierbei) über FF, IE, Opera und Chrome (Weitere nicht getestet). Der IE weisst ein paar unbekannte Tasten auf, jedoch relativ unwichtige wie die listentaste, die aber im FF geht. Der Opera unterscheidet nicht zwischen zahlen auf dem Ziffernblock und denen über den buchstaben, anders wie IE, Chrome und FF. Unterstützt werden ALLE Tasten einer Regulären, deutschen Standard-Tastatur. Groß und Kleinschreibung sowie Sonderzeichen sind noch nicht drin. Hier die demo-Seite mit ner mini-Doku.

    Script einfach einbinden

    HTML
    <script type="text/javascript" language="javascript" src="keypress.js"></script>

    dann muss noch beim Event onkeypress oder Onkeydown die Funktion keypress, die dann auch den Wert gibt, irgendwie an event kommen. Also z.B. durch

    HTML
    onkeydown="alert(keypress(event))"

    natürlich kann man auch event einer Anderen Funktion übergeben, die mit den Werten was macht, also z.B. so:

    HTML
    onkeydown="machWas(event)"

    Wichtig ist eben event.
    keypress.zip

    P.S.: Ich weiss, ist nur selten nützlich, wollts aber einfach mal gepostet haben. Man weiss ja nie, wann eim sowas gelegen kommt

    /// UPDATE 1 ///
    Alle Sonderzeichen mit shift/strg+alt
    Shift: !,",§,$,%,&,/,(,),=,?,`,*,',>,;,_,°
    Alt+Strg: |,²,³,{,[,],},~ ||| \ nicht wegen JS-Probs
    Anmerkung: Wenn der Surfer shift, alt oder Strg drückt, kommt zuerst null zurück, bevor beim nächsten mal, wenn er denn dann eine Taste oder Alt/Strg drükt ein Zeichen kommt.
    keypress.zip
    // UPDATE 2 ///
    Umlaute ö,ü,ä
    keypress.zip

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    8 Mal editiert, zuletzt von Tobse (6. Januar 2010 um 18:34) aus folgendem Grund: UPDATE 1

  • Oh stimmt, space hab ich vergessen. Danke für dein Feedback! Bei mir lokal wird aber im FF wie im Chrome shift rot gemarkt, wenn ichs drück(demo seite). Hab Space jetzt auch drin.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • dann hat der Bild-Auf div auf der Tastatur die falsche id. Bin grad nich daheim, du kannst mal mit Firebug was versuchen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Jep, bei mir auch und gib bup für bild auf zurück. Aber komischerweise ist in meiner HTML-Datei ein div mit id="bup" vermerkt, evtl lags an der Taste die du davor gedrückt hast. Wenn die Fehlerhaft ist oder eben ausgegraut, dann merkt sich JS was falsches und dann schlägts fehl.
    EDIT:
    Hm, ich merk grad, dass die umlaute ja doch key-codes haben... siehe update

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    Einmal editiert, zuletzt von Tobse (6. Januar 2010 um 18:32)

  • Hab jetzt mal alle Tasten versucht:
    (Firefox mit Vista)

    Funktioniert ziemlich gut, aber:
    - Shift wird nicht erkannt
    - Caps Lock funktioniert nicht
    - Die F-Tasten funktionieren nicht (+ Script-Abbruch)
    - Picture Up funktioniert nciht (+Script-Abbruch)

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Also ehrlichgesagt weiss ich nicht, wie ich das mit shift machen soll. Momentan wird, wenn shift gedrückt wird die globale variable shift auf true gesetzt und wenn ein knopf losgelassen wird, wir, falls der letzte gedrückte knopf ebenfalls shift war, shift auf false gesetzt. Falls nicht, der Surfer hat also z.B. a (keyvode 65) gedrückt, wird der der/das entsprechende Buchstabe/Zeichen zurückgegeben. Das mit Shift kann hier aber auch daran liegen, dass die alert()´s dazwischenkommen. Die F-Tasten gehen bei mir, zumindest stimmen die key-codes, nur der Browser macht auch dinge, wenn man eine der F-Tasten drückt, dann kann das Script auch angehalten werden. Bei mir kommt, wenn ich F1 drücke nix und das Hilfe-Tab öffnet sich. Wenn ich aber auf alert(keypress(event)); umstelle, kommt eine Meldung "F1" und dann das Hilfe-Tag. liegt wahrscheinlich an vista.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!