Tastatureingabe simulieren

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Moin!

Ich würde gerne eine Tastatureingabe (PS/2) simulieren, das heißt in
Hardware auf Knopfdruck eine bestimmte Zeichenfolge an den Rechner
schicken. Kollisionen zwischen Keyboard und Zeichenfolgen-Generator
sollten nicht vorkommen, es ist immer nur eins aktiv.

Verschiedene Lösungsansätze:

-1-
Direkt ins vorhandene Keyboard ein Pfund 4066 rein, um gedrückte
Tasten zu simulieren.

-2-
Man nehme eine Keyboardelektronik (für 4,20 bei Reichelt, muss nur die
Umverpackung aka Keyboard entfernen) und simuliere die Tasten per
4066. Das ganze parallel zum normalen Keyboard, über Dioden (Kathode
zum Simulator) so entkoppelt, daß der Simulator nur senden kann (pull
down) und sonst nix mitkriegt. Dummerweise wird das normale Keyboard
das als Befehl vom PC verstehen, muss also während der Simulator
sendet abgekoppelt werden (wieder 4066).

-3-
Simulator+Controller = AVR, das spart die 4066-Matrix.
Wieder parallel zum normalen Keyboard, wieder muss das normale
Keyboard beim Senden des Simulators abgekoppelt werden.

-4-
AVR _zwischen_ Keyboard und PC. Zu beiden Seiten pull-up. Signale "von
außen" werden per Software 1:1 durchgeschleift, und zwar auf
low-level-Ebene. Also "wenn Keyboard clock zieht, zieh ich auch
clock". Keinerlei Interpretation, kein Zusammensetzen zu bytes.

-5-
AVR _zwischen_ Keyboard und PC. Zu beiden Seiten pull-up. Signale
werden zu Bytes, Bytes werden zu Signalen.


Eure Meinung?

Gruß,
Michael.

Re: Tastatureingabe simulieren


Michael Eggert schrieb:
Quoted text here. Click to load it

Hallo,

-6-
Den Aufruf von SendMessage um die Tastatureingabe durch einen20%
Betriebssystemdienst zu simulieren hast Du als MF6%glichkeit vergessen.

Welche MF6%glichkeit fFC%r Dich gFC%nstiger ist kann man Dir erst sagen w=
enn20%
Du genauer verrE4%tst was Du vorhast.

Bye


Re: Tastatureingabe simulieren
On Thu, 11 Dec 2003 09:33:28 +0100, Uwe Hercksen

Hi!

Quoted text here. Click to load it

Nö, hab ich nicht. Hab nur nach Euren Meinungen zu verschiedenen
Hardware-Lösungen gefragt, weil eine Software-Lösung nicht passt.

Quoted text here. Click to load it

Passwort-Eingabe. Beim booten (Novell-Anmeldung), beim Start vom
Mailprogramm (Lotus), beim Start von SAP. Je >8 Zeichen und alle 3
Monate neu.
Obwohl diese Passwort-Paranoia nicht von mir stammt, sondern von
"oben" diktiert wird, würde ich die Passwörter lieber auf nem
seriellen EEPROM am Schlüsselbund haben als auf der Festplatte (oder
auf dem USB-Stick, den man ja auch nicht nur zum Anmelden ansteckt und
dann gleich wieder abzieht). Ganz davon abgesehen, daß ich nicht
wüsste, wie man Novell bei der Anmeldung was in den Tastaturpuffer
schmuggeln sollte.

Inwiefern wirkt sich das nun darauf aus, wie ein AVR das PW aus dem
seriellen EEPROM am besten auf den PS/2 Anschluss bekommt?

Gruß,
Michael.












Quoted text here. Click to load it


Re: Tastatureingabe simulieren
Quoted text here. Click to load it

Oder Pollin, 0,95 Eur IIRC, und das ohne Umverpackung. Die Belegung ist
meistens schnell rausgefunden.

Quoted text here. Click to load it

Ja, muss es, das habe ich selber schon erfolglos probiert. Auch wird es
Probleme geben, wenn der PC einen Befehl sendet und beide Tastaturen
antworten. Also evtl. meinen Auto-Umschalter
http://www.elektronik.de.vu/schalt/fuerpc/keybrdsw.htm so umbauen, dass
er nach kurzer Zeit ohne Tastendrücke wieder auf die normale Tastatur
umschaltet (deine Sende-Schaltung müsste dann aber einen Tastendruck
vorrausschicken, weil der 1. Tastendruck ja den PC nicht erreicht). Ein
µC in der Leitung wäre aber sicherlich die bessere Wahl.


Gruß,
Arne


Re: Tastatureingabe simulieren
On Thu, 11 Dec 2003 15:49:47 +0100, "Arne Rossius"

Hi!

[Tastatur-Elektronik]

Quoted text here. Click to load it

Ei fein!


Quoted text here. Click to load it


Das hab ich befürchtet.


Quoted text here. Click to load it

Das sollte ja nicht vorkommen, wenn der Simulator (der braucht ja
keinen Tastenwiederholgeschwindigkeitsbefehl bekommen) über Dioden so
entkoppelt ist, daß er nur senden kann (Anode zum Simulator, er kann
also CLK und DATA nahe GND ziehen), aber nichts empfängt (nur seinen
pull-up sieht). So kommen Befehle vom PC oder Signale vom anderen
Keyboard erst gar nicht beim Simulator an, da wird er auch nix
antworten. Oder meldet er sich beim Start automatisch?

Die eigentliche Kommunikation beim Tippen läuft doch unidirektional?
Ich meine, wenn die Tastatur ein Zeichen schickt, wird das doch nicht
vom PC bestätigt, oder?


Quoted text here. Click to load it

Ah, auch mit 4066. Wäre für meinen Zweck aber weit zu umständlich, der
Witz ist, daß der Simulator ja weiß, wann er was schickt (und wie
lange es in etwa brauchen wird). Insofern kann er für diese Zeit
einfach die normale Tastatur abklemmen, ohne dafür den Bus beobachten
zu müssen.


Quoted text here. Click to load it

Vom Hardwareaufwand wäre es sicher am einfachsten, den ganzen
Simulator in einen Controller zu stecken. Alleine einem
Tastaturcontroller die Tasten zu simulieren, wäre ja schon ein
4066-Grab. Und so kompliziert scheint das Protokoll ja nicht zu sein,
daß man das nicht gleich mit in einen Controller stopfen könnte - den
ich ja sowieso brauche (um das serielle EEPROM auszulesen).

Die Frage wäre, ob der AVR schnell genug wär, ganz "dumm" die Signale
von einer Seite zur anderen durchzuleiten, wenn er selbst nix senden
soll. Also CLK und DATA mit vielleicht 10facher Überabtastung direkt
aufs andere Ende durchzureichen. Mist, jetzt hab ich schon wieder
nicht mit dem Scope gemessen, wie da die Übertragungsrate ist (und
hier zuhause kann ichs nicht). Aber ich glaub, es liegt so im Bereich
1 bis wenige kbit/s, oder?

Dank und Gruß,
Michael.

Re: Tastatureingabe simulieren
Hi !

Ist der 4066 eigentlich teuer ?!?
Du braucht ja keinen Analog-Switch, ein einfacher digitaler
Multiplexer tut es auch (oder UND).

Die CLK muss immer vom Keyboard erzeugt werden, die kommt nicht vom
PC.

Bye kal-long

Re: Tastatureingabe simulieren

Hi !

Quoted text here. Click to load it

Nö, 0.18 für die CMOS Version bei Reichelt, und es sind 4 Schalter
drin.


Quoted text here. Click to load it

Tut nicht, muss bidirektional sein.


Quoted text here. Click to load it

Stimmt. Aber wenn der PC was senden will, macht er: CLK ziehen, DATA
ziehen, CLK loslassen. Erst dann macht das Keyboard den Takt und der
PC kann Befehle schicken.
quelle: http://www.atmel.com/dyn/resources/prod_documents/DOC1235.PDF
unter "timing".

Gruß,
Michael.












Quoted text here. Click to load it


Re: Tastatureingabe simulieren
Quoted text here. Click to load it

Eigentlich nicht - das müsste man probieren, ob es mit den Dioden
funktioniert. Aber: dann kriegt die andere Tastatur immer noch die Daten
mit ab!

Quoted text here. Click to load it

Soweit ich weiß, nicht. Jedenfalls sendet die Tastatur das auch fröhlich
ohne Bestätigung.

Quoted text here. Click to load it

Wo du aufpassen musst: den Bus nicht unterbrechen, wenn gerade gesendet
wird! Und es reicht nicht, bei Bedarf die normale Tastatur abzuklemmen,
sondern auch die andere Tastatur abzuklemmen, wenn die normale nicht
abgeklemmt ist (also immer genau 1 Tastatur verbunden). Sonst melden
sich bei Befehlen vom PC beide Tastaturen zurück (oder du machst das mit
den Dioden, aber in einem 4066 sind ja eh schon 4 Schalter drin).

Quoted text here. Click to load it

20-20KHz, soweit ich weiß. Aber der AVR schafft das problemlos, ich habe
hier einen IR-Empfänger aus der Elektor, der eben dies mit einem 2313
bei 4MHz wunderbar hinbekommt.


Gruß,
Arne


Re: Tastatureingabe simulieren
On Fri, 12 Dec 2003 08:13:16 +0100, "Arne Rossius"

Hi!

Quoted text here. Click to load it


Ja, Simulator an Dioden, normales Keyboard an 4066.


Quoted text here. Click to load it


Das ist gut.


Quoted text here. Click to load it

Das ist klar.

Quoted text here. Click to load it

Hm stimmt schon, mir fällt auch sonst nix ein für die beiden anderen
4066 :-)

Quoted text here. Click to load it

Das macht Mut.

So, ich muss zur Arbeit, Passwörter tippen :-)

Dank und Gruß,
Michael.

Re: Tastatureingabe simulieren

Quoted text here. Click to load it

Hallo Arne,
weisst Du eigentlich, wie im Laptop Maus und Tastatursignale voneinander
getrennt werden? Die werden doch auch über  e i n e  PS2-Buchse angeschlossen.
Gruss
Harald

Re: Tastatureingabe simulieren
Quoted text here. Click to load it

Tja, das ist eine gute Frage (die ich mir auch schon gestellt habe).
Laut http://hardwarebook.net/connector/userinput/keyboardpc6.html und
http://hardwarebook.net/connector/userinput/ps2mouse.html ist die
Belegung identisch, so dass der Laptop wohl am Protokoll unterscheiden
muss. Gerüchteweise habe ich auch schon was von unterschiedlicher
Belegung und parallel geschalteten Buchsen in PCs gehört. Scheint aber
nicht Standard zu sein. Für Y-Kabel habe ich das hier gefunden (gehört
aber wohl nicht zum PS/2-Standard und könnte nicht überall
funktionieren):
http://hardwarebook.net/adapter/userinput/ps2keyboardythinkpad.html
http://hardwarebook.net/adapter/userinput/ps2keyboardygateway.html

Wenn jemand genaueres weiß, bitte mal melden!

Gruß,
Arne


Re: Tastatureingabe simulieren

Quoted text here. Click to load it

schau mal hier nach
http://home.t-online.de/home/jens.dietrich/seite99.htm

Jürgen


Re: Tastatureingabe simulieren
On Thu, 11 Dec 2003 22:01:13 +0100, Jürgen Schulz

Hi!

Quoted text here. Click to load it

Und wieder 4066.. Scheint ja ne gängige Lösung zu sein.

Gruß,
Michael.

Re: Tastatureingabe simulieren

Quoted text here. Click to load it

[1..3] fallen IMHO durch. Zu groß und zu unzuverlässig.

Quoted text here. Click to load it

4 und 5 haben die selbe Hardware, so sollte man es IMHO auch machen.
Ist wirklich minimale Hardwarelösung.

4 geht sicherlich schief, da Du das Datensignal bidirektional ist.

Das einzige, was wirklich zuverlässig hilft, ist für die Tastatur
einen PC zu simulieren und für den PC eine Tastatur zu simulieren.

Ich kann zum Protocol folgende Seite empfehlen:

http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm

Als Suchbegriff bei google ist "ps2 pic at-keyboard" ganz brauchbar,
auch wenn Du keinen PIC benutzt.

----------------

In Deinem Fall kannst Du natürlich überlegen, ob sich da was (an der
Software) sparen läßt. Wenn man nicht richtig nachdenkt, ergeben sich
daraus aber Einschränkungen im Betrieb.

Man sollte auf jeden Fall vermeiden, daß eine Übertragung unterbrochen
wird. Übertragungen können auch mehrere Bytes umfassen. Auch zwischen
dem Senden eines Befehls vom PCs und dem ACK der Tastatur macht sich
eine Unterbrechung nicht gut

Bist Du sicher, daß der PC nicht periodisch Befehle (z.B. für
Leuchtdioden) sendet, auch wenn es eigentlich nicht nötig ist?

Ein bißchen Protokoll-Wissen mußt Du wohl auf jeden Fall reinstecken.

BTW: CLK-Frequenz ist so im Bereich 10-20kHz. Ist in Assembler kein
Problem und auch in C sollte das noch gehen. BASIC würde ich nicht
versuchen.

/Jan-Hinnerk


Re: Tastatureingabe simulieren

Quoted text here. Click to load it

Hab' ich ganz vergessen, bei der Lösung kann man das ganze natürlich
auch als Keyboard-sniffer zweitverwerten ;-)

/Jan-Hinnerk


Re: Tastatureingabe simulieren
Quoted text here. Click to load it

Tut zumindest meiner nicht. Sonst müsste ja nach dem Umschalten der
Tastatur auf der anderen auch irgendwann die NUM-LED angehen, aber die
bleibt aus, bis ich 2x auf NUM gedrückt habe.


Gruß,
Arne


Re: Tastatureingabe simulieren

Hi!

Quoted text here. Click to load it
 
Quoted text here. Click to load it

Sah hier auf dem Skop auch nicht danach aus.

Gruß,
Michael.

Re: Tastatureingabe simulieren
On Fri, 12 Dec 2003 03:15:22 +0100, Jan-Hinnerk Reichert

Hi!

Quoted text here. Click to load it

Hab mich derweil wohl auch dagegen entschieden.

Quoted text here. Click to load it


Genau in dem Punkt machts doch mal überhaupt nix. Wenn alle Leitungen
high dann nix tun. Wenn links ne Leitung low wird, tu die rechts auch
low, und kümmer dich solange nicht drum, bis sie links wieder high
wird. Ist doch ganz einfach.


Quoted text here. Click to load it

Hatte gehofft, daß ich das nicht tun muss. Klar hätte Vorteile, zB
könnte man dann auch eine unbenutzte Taste auf dem Keyboard nehmen, um
den Simulator zu triggern (ich dachte da mehr an einen Knopf am
Simulator).


Quoted text here. Click to load it

Aah nett, schau ich mir später mal genauer an. Meine bisherige
Information hatte ich aus:
http://www.atmel.com/dyn/resources/prod_documents/DOC1235.PDF
(AN AVR313:Interfacing the PC AT Keyboard)


Quoted text here. Click to load it

Tjo, ich hatte nach "avr ps/2" gesucht.


Quoted text here. Click to load it

Der Simulator soll ja recht selten und nur auf Knopfdruch senden.
Kollisionen mit Initialisierung oder Tippen dürfte da nicht vorkommen.


Quoted text here. Click to load it

Ich schau nachher mal mitm Skop, ob sich da was tut.


Quoted text here. Click to load it

Schaunmermal. Da ja die Hardware von -4- und -5- gleich sind, kann ich
ja erstmal -4- versuchen.


Quoted text here. Click to load it

Aah, ist ja handlich.

Quoted text here. Click to load it

Eben, denk ich auch.

Quoted text here. Click to load it

Hatte ich auch nicht vor.

Dank und Gruß,
Michael.


Re: Tastatureingabe simulieren
Quoted text here. Click to load it

Wo du aufpassen musst: das ist ein Open-Collector-Bus, das heißt, du
darfst nie einen Ausgang auf High haben! Meine Empfehlung: PORTx auf
Dauer-0 und DDRx bei Bedarf umschalten (0=Eingang=High, 1=Ausgang=Low).
Und aufpassen, dass du vom µC Low gezogene Ausgänge nicht als extern Low
gezogene Eingänge interpretierst (vorher in DDRx nachsehen). Pullups
brauchst du dann extern.

Quoted text here. Click to load it

Keine Sorge, das musst du nicht, das klappt auch so. Das Protokoll ist
für sowas primitiv (und langsam) genug.

Quoted text here. Click to load it

Da hätte ich auch noch was dazu zu sagen ;-)
http://www.beyondlogic.org/keyboard/keybrd.htm

Quoted text here. Click to load it

Würde ich auch so machen.


Gruß,
Arne


Re: Tastatureingabe simulieren

Hi!

[Arbeitsanweisung für den µC im Bus]

Quoted text here. Click to load it


Geht das schnell genug?

Ich könnte auch je 2 Pins pro Leitung und Seite vorsehen, einen als
Eingang, und einen mit externem open collector Transistor als Ausgang.
Ports hab ich genug, da ich wegen integriertem I2C nen ATMega nehmen
werde, wohl irgendeinen im PLCC44.


Quoted text here. Click to load it

Genau das ist ja mit der "Arbeitsanweisung" erledigt:
Sobald von _einer_ Seite ein LOW kommt, wirds auf die andere Seite
übertragen, bis es auf der _einen_ Seite wieder weg ist. Und solange
die _eine_ Seite low ist (auf der das LOW zuerst detektiert wurde),
interessiert die andere Seite überhaupt nicht.
Das ganze natürlich unabhängig für CLK und DATA, sonst kann der PC
kein Senden einleiten.


Quoted text here. Click to load it

Dankefein!

Gruß,
Michael.

Site Timeline