PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastendruck vorgaukeln per Skript



mo_no
28.03.2005, 11:22
Hallo!
Gibt es eine Möglichkeit in einem Skript einen Tastendruck vorzugaukeln?

Praktisch soll das ganze so aussehen, dass einmal per Strg + Alt + F2 auf die Konsole 2
gewechselt wird und anschließend wieder per Strg + Alt + F7 wieder zum X-Server.
Dieses Skript werde ich dann in die ~/.xsession schreiben.
Das ganze werde ich bei dem Rechner eines Bekannten anwenden,
da der X11 Vesa Treiber erst nach dieser Prozedur sauber läuft.
(Andere Treiber laufen gar nicht; der fbdev kommt nicht in Frage!)

mo_no

TenBaseT
28.03.2005, 12:43
......und zwischen <Strg>+<Alt>+<F2> und <Strg>+<Alt>+<F7> passiert garnichts? Dann solltest du ja auch gleich <Strg>+<Alt>+<Backspace> machen können. Das scheint mir alles andere als eine saubere Lösung zu sein.

Da wäre eigentlich zu klären, warum der X-Server beim ersten Boot nicht sauber startet. Fehlen beim ersten Boot vielleicht Treiber, die erst nach einem X-Server Neustart vorhanden sind? Wenn ja, dann vielleicht die fehlenden Module vor X-Server Start mit einem Bootscript laden.

Hans

Schlaubi_fi.de
28.03.2005, 17:45
oder nach dem hochfahren (init 5) ein init 3 && init 5 ;)

mo_no
28.03.2005, 21:30
Eure beiden Tipps würden nichts bringen.
Der X-Server darf nicht beendet werden!!!
Es muss einfach einmal zwischen X11 ==> Console ==> X11
geschaltet werden und dann ist die Bilddarstellung gut.

Mit dem fbdev Treiber läufts besser, allerdings laufen dann einige Programme (u.a. Spiele)
nicht im Vollbildmodus.

Deshalb wäre es schön, wenn man den Tastendruck automatisieren könnte.

Lord Kefir
28.03.2005, 22:34
Ich glaube nicht, dass man so etwas mit einem einfachen Shell-Script erledigen kann. Ich schaue mal gerade ein paar Programmiererforen durch und gucke mal, ob ich was entdecken kann... interessiert mich nämlich gerade auch. ;)

Mfg, Lord Kefir


Mist... mit der Win32-Api wäre das so einfach... :devil:

NaRF
29.03.2005, 01:05
ist zwar auch keine direkte antwort auf deine frage, aber probier mal:

xrefresh


Xrefresh is a simple X program that causes all or part of your screen
to be repainted. This is useful when system messages have messed up
your screen. Xrefresh maps a window on top of the desired area of the
screen and then immediately unmaps it, causing refresh events to be
sent to all applications. By default, a window with no background is
used, causing all applications to repaint ``smoothly.'' However, the
various options can be used to indicate that a solid background (of any
color) or the root window background should be used instead.

wenn mich nicht alles täuscht, sollte das nen ähnlichen effekt haben, wie das wechseln zwischen "konsole" und x-server.

btw. ich hab vor einiger zeit übrigens auch mal nach nem programm, das maus und tastatur simulieren kann gesucht, hab aber nix gefunden.
für windows gibts aber einige solcher programme (im namen kommt glaub ich immer "makro" vor). z.b. sollen sich mit diesen programmen bestimmte abläufe automatisieren lassen.

MrFenix
29.03.2005, 01:07
Ist bei KDE nicht irgendsowas dabei?
*Ma nachschau*

EDIT:
Ok, hab mich vertan, das Ding von KDE kann nur Mausklicks simulieren...

Lord Kefir
29.03.2005, 09:13
ist zwar auch keine direkte antwort auf deine frage, aber
btw. ich hab vor einiger zeit übrigens auch mal nach nem programm, das maus und tastatur simulieren kann gesucht, hab aber nix gefunden.
für windows gibts aber einige solcher programme (im namen kommt glaub ich immer "makro" vor). z.b. sollen sich mit diesen programmen bestimmte abläufe automatisieren lassen.

Das liegt wohl daran, dass es unter Windows eine eindeutige API gibt - unter Linux muss man ja erst einmal überlegen, ob ein X-Server verwendet wird oder nicht etc.

Die einzige Lösung wäre ein hardwarenahes Programm. Mit Standard-C lässt sich so etwas nicht realisieren. Wäre ja eigentlich mal ein Anreiz für mich, mich endlich mal mit solch einem Thema zu befassen... ;)

Mfg, Lord Kefir

monarch
29.03.2005, 09:30
Ich benutze SuspendToDisk mittels hibernate. Da gibts eine hibernate-Option namens SwitchToTextMode. Wenn ich dann von X aus ein hibernate veranlasse, wird erst auf die Textkonsole gewechselt und dann der Rechner eingefroren. Beim wiederaufwachen geht alles rückwärts.

Wenn jemand Zeit und Lust nachzuschauen wie die das machen, man müsste ja nur den ganzen hibernate-Vorgang dazwischen weglassen.

Lord Kefir
29.03.2005, 15:41
Also Lust hätte ich schon... nur gerade wenig Zeit. Denke aber mal, dass ich in den nächsten zwei Tagen zwischendurch dazu kommen könnte :)

Mfg, Lord Kefir

CMW
29.03.2005, 16:38
wieso nicht einfach als root:

chvt 2 && sleep 2 && chvt 7
eingeben? (vielleicht noch die pause anpassen...)
Oder hab' ich da was falsch verstanden?

Tipp: solte es das sein was du suchst, einfach

sleep 10 && chvt 2 && sleep 2 && chvt 7
in rc.local (<- natürlich abhängig vom rc-System) eintragen. Die 10 Sekunden sollten locker reichen bis X gestartet ist.

TenBaseT
29.03.2005, 17:06
chvt :hilfe2:

oops, den kannte ich ja noch nicht. Man lernt nie aus.

Hans

mo_no
29.03.2005, 17:27
@ CMW

Hey cool!
Ich kannte den Befehl chvt noch gar nicht.
Dies ist natürlich die beste und eleganteste Lösung! DANKE! ;)

Lord Kefir
01.04.2005, 10:09
Mist, habe heute Morgen extra einen Lösungsansatz in C zusammengefrickelt... naja, ist ja auch egal ;)

Mfg, Lord Kefir