Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 19.03.2006 - 23:44 Titel: CODE-TABELLE key code + keystroke AppleScript (SystemEvents) |
|
|
Hallöle,
Da es hier öfter im Forum angefragt wird, habe ich mal die keycodes der Tastatur zusammengefasst in einer Tabelle.
Mit key code lassen sich so ziemlich alle Knöpfe der Tastatur über die System Events an jedes beliebige Programm senden.
Ähnlich verhält es sich mit keystroke. Hiermit lassen sich ganze Texte u. Zeichenfolgen per SystemEvents an Programme senden.
key code und auch keystroke lassen sich ausserdem mit Funktionstasten kombinieren (using command down/control down/option down/shift down)
Und so geht's:
(*VERWENDUNG VON KEY CODE + KEY STROKE*)
-- Programm aktivieren, in dem Tasten ausgelöst werden sollen
tell application "TextEdit"
activate
-- Den SystemEvents erzählen, welche Tasten betätigt werden sollen
tell application "System Events"
keystroke "Blablabla" & return
key code 76 -- Enter auf Nummernblock
keystroke "q" using command down -- beendet TextEdit per Apfel-Q
end tell
end tell
-- Nach keystroke lassen sich ganze Texte übergeben, so wie man
-- es sonst auch von Texten in AppleScript gewohnt ist, also in
-- doppelten Anführungszeichen, spezielle Zeichen wie bspw.
-- Tabulatuoren lassen sich ebenfalls einbinden "Text1" & tab & "Text2"
-- Nach key code folgt immer ein Wert, der eine Taste repräsentiert
Code: | =============================================================
TABELLE key codes SYSTEM EVENTS IN APPLESCRIPT
-------------------------------------------------------------
(Deutsche Apple USB-Tastatur, evtl. auch f. andere
Tastaturen gültig, alle Angaben ohne Gewähr)
=============================================================
key code 1 = "s" key code 33 = "ü"
key code 2 = "d" key code 34 = "i"
key code 3 = "f" key code 35 = "p"
key code 4 = "h" key code 36 = [Return] ↵
key code 5 = "g" key code 37 = "l"
key code 6 = "y" key code 38 = "j"
key code 7 = "x" key code 39 = "ä"
key code 8 = "c" key code 40 = "k"
key code 9 = "v" key code 41 = "ö"
key code 10 = "^" key code 42 = "#"
key code 11 = "b" key code 43 = ","
key code 12 = "q" key code 44 = "-"
key code 13 = "w" key code 45 = "n"
key code 14 = "e" key code 46 = "m"
key code 15 = "r" key code 47 = "."
key code 16 = "z" key code 48 = [Tab] ⇥
key code 17 = "t" key code 49 = [Space]
key code 18 = "1" key code 50 = "<"
key code 19 = "2" key code 51 = [Bkw-Del] ⌫
key code 20 = "3" key code 52 = [Return] ↵
key code 21 = "4" key code 53 = [Escape] esc
key code 22 = "6" key code 54 = [Command] ⌘
key code 23 = "5" key code 55 = [Command] ⌘
key code 24 = "´" key code 56 = [Shift] ⇧
key code 25 = "9" key code 57 = [ShiftLock] ⇪
key code 26 = "7" key code 58 = [Alt] ⎇
key code 27 = "ß" key code 59 = [Ctrl] ctrl
key code 28 = "8" key code 60 = [Shift] ⇧
key code 29 = "0" key code 61 = [Alt] ⎇
key code 30 = "+" key code 62 = [Ctrl] ctrl
key code 31 = "o" key code 63
key code 32 = "u" key code 64
-------------------------------------------------------------
key code 65 = NUM [,] key code 97 = [F 6]
key code 66 = [ArrowRight] key code 98 = [F 7]
key code 67 = NUM [*] key code 99 = [F 3]
key code 68 key code 100 = [F 8]
key code 69 = NUM [+] key code 101 = [F 9]
key code 70 = [ArrowLeft] key code 102
key code 71 = NUM [X] key code 103 = [F11]
key code 72 = [ArrowDown] key code 104
key code 73 key code 105 = [F13]
key code 74 key code 106 = [F16]
key code 75 = NUM [/] key code 107 = [F14]
key code 76 = NUM [Enter] key code 108
key code 77 = [ArrowUp] key code 109 = [F10]
key code 78 = NUM [-] key code 110
key code 79 key code 111 = [F12]
key code 80 key code 112
key code 81 = NUM [=] key code 113 = [F15]
key code 82 = NUM [0] key code 114 = [Help]
key code 83 = NUM [1] key code 115 = [PgUp]
key code 84 = NUM [2] key code 116 = [Home]
key code 85 = NUM [3] key code 117 = [Fwd-Del]
key code 86 = NUM [4] key code 118 = [F 4]
key code 87 = NUM [5] key code 119 = [PgDwn]
key code 88 = NUM [6] key code 120 = [F 2]
key code 89 = NUM [7] key code 121 = [End]
key code 90 key code 122 = [F 1]
key code 91 = NUM [8] key code 123 = [ArrowLeft]
key code 92 = NUM [9] key code 124 = [ArrowRight]
key code 93 key code 125 = [ArrowDown]
key code 94 key code 126 = [ArrowUp]
key code 95 key code 127
key code 96 = [F 5] key code 128 = "a"
=============================================================
ab 129 gehts wieder von vorn los (129 = "s", 130 = "d", usw.) |
Zuletzt bearbeitet von iScript am 15.01.2007 - 19:35, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
 |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 29.03.2006 - 19:12 Titel: |
|
|
Danke ! sehr hilfreich... jetz würde ich persönlich nur noch gerne wissen obs auch n key code für maus klick gibt ^^ würde mir sehr viel wieterhelfen |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 29.03.2006 - 19:40 Titel: |
|
|
click kannst du nur per position (x,y) oder per UI-elemente ansprechen.
um UI-Elemente anzusprechen, musst du natürlich irgend etwas über das element wissen (position, name, title, ...). das ist natürlich nicht immer so einfach. musst mal im funktionsverzeichnis der system events nachschauen, was so geht.
und manchmal hilft auch der UIElementInspector weiter, der den developertools beiliegt (glaube ich, ansonsten auf der apple runterladen). _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 30.03.2006 - 15:06 Titel: |
|
|
Hmn also einen UIElementInspector finde ich bei mir nicht vor ... kannst du mir vielleicht mal nen link geben ? |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
|
Nach oben |
|
 |
Tekl •-->

Anmeldedatum: 24.02.2005 Beiträge: 20
|
Verfasst am: 11.04.2007 - 23:27 Titel: |
|
|
Gibt es auch die Möglichkeit Tastaturbefehle an versteckte Anwendungen zu senden? Ich möchte nämlich gerne per Script zum nächsten Lied in der Playliste von SIDPLAY springen, ohne SIDPLAY vorher zu aktivieren.
tell application "SIDPLAY" to keystroke funktioniert irgendwie nicht, sobald "using" drin vorkommt.
Hier mein Skript:
Code: |
tell application "System Events"
if (name of processes) contains "SIDPLAY" then
tell application "SIDPLAY" to activate
key code 124 using {command down, option down}
delay 0.3
set visible of process "SIDPLAY" to false
else if (name of processes) contains "iTunes" then
tell application "iTunes" to next track
end if
end tell
|
|
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.04.2007 - 15:15 Titel: key code und keystroke immer an die SystemEvents richten |
|
|
Den Befehl "keystroke" oder "key code" musst du immer direkt an die SystemEvents ("tell"-Block oder "to") richten. Andere Programme verstehen diese Befehle nicht.
Hier mal ein Beispiel (es wird ein neues Dokument angelegt per keycode, während TextEdit ausgeblendet ist):
tell application "System Events"
set visible of process "TextEdit" to false
end tell
tell application "TextEdit"
tell application "System Events"
keystroke "N" using command down
end tell
end tell
_________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
Tekl •-->

Anmeldedatum: 24.02.2005 Beiträge: 20
|
Verfasst am: 12.04.2007 - 15:28 Titel: |
|
|
Leider funktioniert dein Beispiel nicht. Wenn ich auf Ausführen im Skripteditor klicke wird TextEdit gestartet und versteckt und dann kommt ein Systemton, der zeigt, dass der Tastaturbefehl nicht angenommen wurde. Entferne ich using command down, sehe ich auch warum. Die Tastenbefehle gehen an das aktuelle Fenster, also erscheint im Skripteditor einfach ein N. |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.04.2007 - 17:32 Titel: |
|
|
vielleicht ist dein rechner zu schnell? setzt mal ein delay 1 vor den zweiten und vor den dritten tell-block und schliesse mal das leere text-edit dokument (falls vorhanden). bei mir klappt's. |
|
Nach oben |
|
 |
Tekl •-->

Anmeldedatum: 24.02.2005 Beiträge: 20
|
Verfasst am: 12.04.2007 - 17:39 Titel: |
|
|
Also so?
Code: |
tell application "System Events"
set visible of process "TextEdit" to false
end tell
delay 1
tell application "TextEdit"
delay 1
tell application "System Events"
keystroke "Hallo"
end tell
end tell |
Das Wort Hallo wird bei mir in den Skripteditor geschrieben, an mehreren Macs getestet. |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.04.2007 - 17:47 Titel: |
|
|
nee, vergiss es. ich behaupte das gegenteil. es wird auch ein neues dokument erzeugt, wenn ich TextEdit einfach nur ausblende + wieder einblende.
liegt einfach an den preferences des programms . es scheint wirklich so zu sein, dass du keine ausgeblendeten programme per keystrokes ansprechen kannst. sorry. |
|
Nach oben |
|
 |
Wolle-77 •--->


Anmeldedatum: 25.02.2003 Beiträge: 449 Wohnort: Geldern
|
Verfasst am: 12.04.2007 - 21:34 Titel: |
|
|
Also ich würde sagen, GUI-Scripting ist und tut das, was es der Definition nach vermuten läßt: Es simuliert Tastendrücke, die auch ein humaner Benutzer in der Benutzeroberfläche tätigen könnte.
Also es ist nichts anderes, als ob der Mensch die Tasten drückt oder eben das Script. Und auch ein Mensch kann immer nur dort was eingeben, was im Vordergrund ist.
Und leider ist das GUI-Scripting ja immer noch nicht so recht ausgereift. Oftmals funktioniert es erstaunlich gut (so ist es wunderhübsch, vie AS- und GUI-Scripting Cheats an Age of Empires II zu senden, welches in Parallels läuft und sich so Rohstoffe zu erschaffen...), jedoch bestimmte Dinge funktionieren immer noch sehr mangelhaft.
Naja, ich denke, GUI-Scripting ist ein netter Notnagel, jedoch (noch) keine ausgereifte Grundtechnik. _________________ Martin Wolter
--
Apple rocks the planet! |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
|
Nach oben |
|
 |
liemmayer •->

Anmeldedatum: 12.01.2021 Beiträge: 3 Wohnort: Bern, Switzerland
|
Verfasst am: 12.01.2021 - 22:33 Titel: |
|
|
Interessante Benutzerkommentare, danke für die Hilfe! _________________ Die Hauptsache ist, Zeit zu finden, Ihre Ängste vor dem Scheitern zu überwinden und Skeptiker zu ignorieren. |
|
Nach oben |
|
 |
jiuer7845 •---->

Anmeldedatum: 06.04.2021 Beiträge: 521
|
|
Nach oben |
|
 |
|