Hallo Besucher, der Thread wurde 16k mal aufgerufen und enthält 28 Antworten

letzter Beitrag von Sorg am

Keyboard Twister ng

  • Hi,


    ich habe mich mal mit dem Keyboard-Twister auseinander gesetzt, Sourcen mit Hexfile im Anhang.


    Ziel evtl. Macroprogrammierung für einige Tasten.


    Was geht schon, was ist neu:

    • ALT-CTRL-DELETE kann als Resettaster benutzt werden. Anschliessen wie folgt:
      Zitat


      Connect PB0 of ATtiny45 to nRESET as here: PB0 - Kathode 1N4148 Anode - RESET-Pin


    • Sehr simple Tastenwiederholung für viele Tasten ( genauer gesagt, nur für Tasten mit non-Extended keycodes ).
    • Debug-Mode zukunftig Konfig-Mode
      Erreichbar via RCTRL-LCTRL-SCROLLLOCK
      Raus kommt man via ESC
      Mit D kommt man in einen Keycode Debugger, mit 3x ESC wieder raus.
      Numlock schaltet das Keyboardummaping des Twisters aktiv bzw. nicht aktiv, die Fixes sind immer aktiv.
      Der Status des Keyboardmapings wird im EEPROM gespeichert. Nützlich evtl. für non-German Users.
    • Dieses Todo aus dem Wiki abgearbeitet:
      Zitat


      "Twister should send $f4 to keyboard (and drop the resulting $fa) whenever it gets $aa. Zee used a PIC that did this to fix a PS/2 'compatible' keyboard (that I happened to own too)." - Nojoopa


    • Es wurde eine kleine Queue in den Main-loop des Twisters integriert um Macrocodes zu realisieren. F9 ist zum Test schon belegt, kann aber derzeit nur durch neu kompilieren benutzt werden.


    BTW: der Speicher wird knapp ... Wobei ich auch noch nicht sparsam war.


    cya

  • @ðerSchatten: ich bin mir nicht genau sicher, ob das langsame reagieren der Tasten vom Keyboardtwister oder vom DTV selber kommt. Es ist mir noch nicht aufgefallen.Tippe ich zu langsam? Tritt das Problem bei allen oder bei umgemappten Tasten auf? Bei letzteren kann ich mir das vorstellen.


    Wenn es vom Keyboardtwister kommt, wird es in dieser Version wahrschlich erstmal noch schlechter sein. Da der Datenpfad vom Tastendruck zum DTV eine Station länger geworden. Und ich musste damit die Keyboardmacros funktionieren, einen delay mehr einbauen.

  • So neue Version neues Glück !


    * Macros kommen jetzt aus dem eeprom.
    * Platz eingespart zu Abstraktion einiger häufig genutzer Funktionen.
    * Habe mir noch einmal den den Kommentar von derSchatten angeschaut und einige Delays eingespaart. Noch funktioniert das ganze. Aber auch woanders oder nur bei mir?


    - Es gibt _noch_ keinen Lernmodus. Suche nach einer Möglichkeit im Notfall platzminimal das eeprom zu entlöchern/defragmentieren.

  • Ich revidiere meine Aussage bezüglich den Tastenaussetzern.
    Also es ist nicht wirklich so das Zeichen ausgelassen werden, sondern das mir die Eingabe nur etwas schwammig vorkommt.
    Also wenn man sehr schnell tippt, passiert es das die Bildschirmausgabe um paar millisekunden zurückhinkt.
    Kann aber wie du bereits erwähnt hast auch vom DTV kommen.
    Da es kein wirkliches Problem darstellt, würde ich der Sache jetzt nicht weiter nachgehen.


    Was mich jetzt jedoch interessieren würde wäre welche Funktionen du nicht im gesammten integriert hast.
    Mit den Begriffen ganz oben kann ich leider nicht viel anfangen.


    Und was ist auf der F9 Taste belegt?
    Kann man eigene Makros programmieren? Wenn ja wie?


    Läßt sich die Diode auf der kleinen Platine einfach nachrüsten?


    Der Reset bewirkt bei mir nichts. Außer das sich die Tastatur aufhängt wenn man länger die 3 Tasten drückt.

  • Zum Thema RESET: wie man die Diode nachrüstet, sei jedem selber überlassen. Meine Platine ist auch nicht so schön klein und hat zusatzlich eine 1x6-Pfostensteckleiste wie hier im Bild auf der Unterseite. Dort stecke, wenn ich nicht am basteln bin, einfach eine Leitung zum Reset mit dieser Diode drauf. Wenn man ALT-CTRL-DEL drückt wird der Reset-Pin für 100ms nach untengezogen, in dieser Zeit reagiert der Keyboardtwister nicht. Danach sollte er wieder ganz normal funktionieren. Warum das bei dir passiert kann ich dir so aus dem Stand nicht sagen und auch nicht reproduzieren.


    Zu den Macros: Es gibt noch keinen Lernmodus. Man kann aber, sofern man sich den Keyboardtwister selbst erstellt, diese selber ändern.
    Die Defaults sind in der scancon.c und könne nach belieben geändert werden. Helfen tut dort evtl. der ScanCode-Debugmodus, siehe erster Post.


    Damit die Macros funktionieren sollte mit folgender Zeile geflasht werden:

    Code
    1. avrdude -p t45 -U flash:w:keyboardtwister.hex:i -U lfuse:v:0xE2:m -U eeprom:w:keyboardtwister.eep:i

    Für PonyProg kenne ich die Optionen nicht.
    Wichtig ist auf jeden Fall das Eepromfile "keyboardtwister.eep" mit ins Eeprom zu schreiben.
    Die Fuses belieben gleich.


    Desweiteren ist der ACK-Fix, wie vorgeschlagen von Nojoopa umgestetzt. Und für viele Tasten funktioniert die Tastenwiederholung.
    Wie man in den Debug-Scancode Modus kommt steht im ersten Post.

  • Die Diode habe ich nachgerüßtet. Einfach zwischen Pin1 und Pin5 des AVR gelötet.


    Das mit den Mocros scheint mir soweit verständlich.


    Für die Fuses reicht der Low-Wert 0xE2 wenn ich das richtig sehe?
    Ich verwende das myAVR ProgTool zum flashen.


    Was ist mit Tastenwiederholung gemeint?

  • Die Diode habe ich nachgerüßtet. Einfach zwischen Pin1 und Pin5 des AVR gelötet.


    Nein! Die Diode muss vom RESET-Pin am C64 zum PB0 am AVR. So resetest du nur deinen AVR.



    Das mit den Mocros scheint mir soweit verständlich.


    Für die Fuses reicht der Low-Wert 0xE2 wenn ich das richtig sehe?
    Ich verwende das myAVR ProgTool zum flashen.
    Was ist mit Tastenwiederholung gemeint?


    Jo, LFuse = 0xe2 reicht.


    Tastenwiederholung
    Alter Keyboartwister wiederholt nur die Cursortasten, wobei er eigentlich garnix macht, der DTV ist schuld.. Mein Patch erlaubt Tastenwiederholung für alle Tasten im Hauptblock der Tastatur.


    cya

  • Nein! Die Diode muss vom RESET-Pin am C64 zum PB0 am AVR. So resetest du nur deinen AVR.

    ok, dann war hier der Hund begraben. Jetzt funkts!
    Macht es Sinn die Dioade am Keyboard-Twister zu belassen damit auch dieser resetiert wird?

  • 1570: bisher noch nicht. Das struct wie ich es machen will und der Algorithmus steht, er soll ja Flash/eeprom-schonend sein und wenig Spacekomplexität haben, ist aber noch nicht um gesetzt.


    Es gibt kleinere fixes die ich aber nocht nicht eingepflegt habe:
    * Rechten Control Taste in meiner Implementation bleibt dauerhaft gehalten bis Linke gedrückt wird.
    * Desweiteren experiementiere ich damit einen Reset an die Tastatur zu senden, wenn ein Reset via ALT-CTRL-Del gesand worden ist. Das soll die derzeitig gedrückten Keys noch mal als Keypresses an den DTV senden.


    An allem happert es meist an Zeit.


    cya

  • Sorry fürs ausbuddeln, aber irgendwie funktioniert der bei mir überhaupt nicht. Ist das Pinout das gleiche wie beim "Original"?
    Wenn ich diese Version flashe und einsetze, funktioniert die Tastatur so gut wie nicht, manchmal kommt ne 8 oder ein *, und das wars...hab schon 3 verschiedene Tastaturen getestet.

  • Fehler gefunden. Das Flashtool, welches ich zuerst benutzt habe, hat die Fusebits durcheinandergehauen. Mit AVRStudio geht es jetzt wunderbar. Hab übrigens als Diode nur ne 1N4004 da gehabt, mit der klappt es aber auch.
    Und noch was: Wenn man nach einschalten oder reset einen reset durchführt, ohne vorher was zu tippen, dann steht da ein zuffallszeichen nach der einschaltmeldung und die Tastatur geht nicht. Ein weiterer Reset behebt das aber. Kann aber auch am DTV liegen.

  • Freut mich, dass es jetzt bei dir funktioniert.


    Warum das mit der sonderbaren zufälligen Taste beim ersten BootUp passiert weiss ich nicht und kann ich derzeit nicht nachvollziehen. Da ich keinen gemoddeten DTV mehr habe.
    Damals hatte ich selbst dieses Phänomem nicht. Ich glaube auch nicht, dass es am DTV liegt, sondern an der Tastatur. Ihc hatte damals einige die nicht "rund" mit dem Keyboradtwister (ng oder shadowulf) liefen.

  • Hust hust, ganz schön eingestaubt der Thread! :)
    Egal, ich hab mir den Source etwas angepasst, vielleicht findet's ja noch jemand nützlich.


    Die größte Neuerung dürfte die Macro-Aufzeichnung für F9-F12 sein. Die ist zwar sehr primitiv und geht verschwenderisch mit dem EEPROM um, aber ich denke das Feature ist trotzdem durchaus brauchbar. Je nach Scancode-Länge reicht der Platz pro F-Taste für 12 - 20 Tastendrücke beim ATtiny45 und doppelt so vielen beim ATtiny85.
    Bedienung: In den Config Mode gehen mit LCtrl+ScrollLock, dann die gewünschte F-Taste drücken (Scroll-Lock LED blinkt kurz), nun die gewünschte Tastenfolge tippen, beenden wieder mit der entsprechenden F-Taste. Die aufgezeichnete Sequenz wird dann gleich zur Kontrolle ausgegeben.


    Sonstiges:
    - Zum Aktivieren des Config Modes reicht nun LCtrl+ScrollLock (kein RCtrl mehr, da meine Mini-Tastatur nur eine Ctrl-Taste hat).
    - Im Config Mode kann wie bisher mit NumLock der Übersetzungs-Mode gewechselt werden. Der aktuelle Zustand wird aber nicht mehr dauerhaft über die NumLock LED angezeigt, da meine Tastatur dabei in den "Ziffernblock-Modus" schaltet und unbenutzbar wird. Beim Umschalten blinkt die LED einmal für AUS und zweimal für AN.
    - NumLock lässt sich dafür außerhalb des Config Mode ganz normal umschalten, falls gewünscht.
    - Im Config Mode kann mit "R" der Auto-Repeat Mode abgeschaltet werden. Auch hier blinkt dabei die NumLock-LED. Das geht aber nicht bei allen Tasten, d.h. bei manchen lässt sich das Auto-Repeat nicht abschalten (z.B. / und = ), das kommt von der Art der Implementierung.
    - Einen Bug des DTV umgangen, wenn man bei "geshifteten" Zeichen Shift zuerst loslässt. Da hängt sich im DTV was auf und Shift reagiert nicht mehr.


    twinpeaks


    PS: Dank an DerSchatten für's Testen! :thumbup: