Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

CODE-TABELLE key code + keystroke AppleScript (SystemEvents)

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 19.03.2006 - 23:44    Titel: CODE-TABELLE key code + keystroke AppleScript (SystemEvents) Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 29.03.2006 - 19:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 29.03.2006 - 19:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 30.03.2006 - 15:06    Titel: Antworten mit Zitat

Hmn also einen UIElementInspector finde ich bei mir nicht vor ... kannst du mir vielleicht mal nen link geben ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 30.03.2006 - 16:21    Titel: Antworten mit Zitat

Den kostenlosen UI-Inspector von Apple gibt's hier:

http://developer.apple.com/samplecode/UIElementInspector/UIElementInspector.html


Wirklich gut, aber nicht kostenlos, ist der PreFAB UI-Browser (30-Tage-Demo):

http://www.prefab.com/uibrowser/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Tekl
•-->
•-->


Anmeldedatum: 24.02.2005
Beiträge: 20

BeitragVerfasst am: 11.04.2007 - 23:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.04.2007 - 15:15    Titel: key code und keystroke immer an die SystemEvents richten Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Tekl
•-->
•-->


Anmeldedatum: 24.02.2005
Beiträge: 20

BeitragVerfasst am: 12.04.2007 - 15:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.04.2007 - 17:32    Titel: Antworten mit Zitat

vielleicht ist dein rechner zu schnell? Embarassed 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Tekl
•-->
•-->


Anmeldedatum: 24.02.2005
Beiträge: 20

BeitragVerfasst am: 12.04.2007 - 17:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.04.2007 - 17:47    Titel: Antworten mit Zitat

nee, vergiss es. ich behaupte das gegenteil. Embarassed es wird auch ein neues dokument erzeugt, wenn ich TextEdit einfach nur ausblende + wieder einblende.
liegt einfach an den preferences des programms Rolling Eyes . es scheint wirklich so zu sein, dass du keine ausgeblendeten programme per keystrokes ansprechen kannst. sorry.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 12.04.2007 - 21:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 14.04.2008 - 07:57    Titel: Antworten mit Zitat

Aktueller UIElementInspector Link: http://developer.apple.com/samplecode/UIElementInspector/index.html
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter