[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt KeybordEvent in CS6 und CC unterschiedlich

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

KeybordEvent in CS6 und CC unterschiedlich

drerol74
Beiträge gesamt: 434

18. Sep 2014, 17:12
Beitrag # 1 von 8
Bewertung:
(3000 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo SkripterInnen,

folgendes Script-UI-Problem beschäftigt mich gerade:
Gegeben ist ein ganz normales Eingabefeld (edittext) innerhalb einer Palette. Wenn sich der Cursor in diesem Feld befindet und eine bestimmte Taste gedrückt wird, soll eine Funktion ausgelöst werden. Diese Funktion ändert dann den Inhalt des Textfeldes.

Code
#targetengine "testSession"   

__showUI ();


function __showUI() {

var _ui = new Window("palette", "Keydown-Test");
with (_ui) {
var _startInput = add("edittext", undefined, "Bitte ins Feld klicken und eine Taste drücken", { multiline: false });
var _cancelUI = add("button", undefined, "Cancel");
} /* END _ui */
_startInput.addEventListener("keydown", function (_keybordEvent) {
__keydown (_keybordEvent, this);
}, false);
_cancelUI.onClick = function() {
_ui.close(2);
}
_ui.show();
return;
} /* END function __showUI */



function __keydown(_keybordEvent, _input) {
_input.text = "> 1x " + _input.text;
return;
} /* END function __keydown */


Unter CS6 wird das Ereigniss beim Drücken einer der Pfeil-Tasten genau 1-mal ausgelöst. Unter CC jedoch 2-mal.

Ich konnte bis jetzt keine unterschiedlichen Eigenschaften der beiden Event-Objekte finden. Lediglich die Eigenschaft timeStamp ist geringfügig anderes.

Tritt bei euch dieses Verhalten auch auf? Wie könnte man hier eine Unterscheidung zwischen erstem und zweitem Ereignis treffen, um das 2. abzufangen?

Schöne Grüße
Roland
X

KeybordEvent in CS6 und CC unterschiedlich

WernerPerplies
Beiträge gesamt: 2552

18. Sep 2014, 17:38
Beitrag # 2 von 8
Beitrag ID: #532179
Bewertung:
(2985 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,

ich kann Dir nichts zum Verhalten von CC sagen, aber generell gilt:

Wenn das Event zuverlässig zweimal je Tastendruck auftritt, reicht eine ein einfaches Flag als Boolean Variable:

var keyDown = false; -> global oder als Eigenschaft des Fensters gespeichert.

Im Handler fragst Du dann:

if (!(keyDown))
{
// habe ich vergessen:
keyDown = true;
erledige hier Deinen Job
}
else
keyDown = !(keyDown);

- nicht getestet, müsste aber klappen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#532176]
(Dieser Beitrag wurde von WernerPerplies am 18. Sep 2014, 17:42 geändert)

KeybordEvent in CS6 und CC unterschiedlich

drerol74
Beiträge gesamt: 434

18. Sep 2014, 23:22
Beitrag # 3 von 8
Beitrag ID: #532202
Bewertung:
(2932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

danke für deine Antwort.

Antwort auf: Wenn das Event zuverlässig zweimal je Tastendruck auftritt


Das ist ein Teil des Problems. In Indesign CS6 1x in der CC-VErsion 2x. D.h. in CC funktioniert dein Vorschlag, in CS6 dann aber nicht.

Ich müsste also eine zusätzliche Versions-Weiche einbauen. Das möchte ich – wenn irgendwie möglich – vermeiden. Denn wenn es sich wirklich in CC um einen Bug handelt, könnte der in Zukunft unter Umständen beseitigt werden.

Deshalb möchte ich gerne den Vorgang dahinter erstmals verstehen, bevor ich das Symptom bekämpfe. Aber vermutlich wird mir ohnehin nichts anderes übrig bleiben.

Schöne Grüße
Roland


als Antwort auf: [#532179]

KeybordEvent in CS6 und CC unterschiedlich

WernerPerplies
Beiträge gesamt: 2552

19. Sep 2014, 06:14
Beitrag # 4 von 8
Beitrag ID: #532205
Bewertung:
(2893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ drerol74 ] Hallo Werner,

Zitat danke für deine Antwort.

Da nich für!

Antwort auf: Wenn das Event zuverlässig zweimal je Tastendruck auftritt


Zitat Das ist ein Teil des Problems. In Indesign CS6 1x in der CC-VErsion 2x. D.h. in CC funktioniert dein Vorschlag, in CS6 dann aber nicht.



Deinen Einwand habe ich befürchtet.
Zitat Ich müsste also eine zusätzliche Versions-Weiche einbauen.


Keine gute Idee, das Gegenargument nennst Du ja selbst hier.

Zitat Das möchte ich – wenn irgendwie möglich – vermeiden. Denn wenn es sich wirklich in CC um einen Bug handelt, könnte der in Zukunft unter Umständen beseitigt werden.


Zitat Deshalb möchte ich gerne den Vorgang dahinter erstmals verstehen, bevor ich das Symptom bekämpfe.


Das mit dem Verstehen, manchmal gibt es etwas zu verstehen, oft sind es Bugs, historische Entwicklungen, Änderungen im Betriebssystem...

Hast Du Dir denn schon mal das Event selbst angesehen (übergebener Parameter)?

Sind die Events wirklich identisch, oder gibt es unterschiedliche Zustände, Codes, Tasten, Richtung (Up/Down), Control Keys ...

Wenn das alles nichts hergibt, misst Du am besten die Zeit zwischen den Events, dann legst Du einen Wert fest, der, wenn überschritten, ein neues Event signalsiert.

Das ist alles keine Hexerei, sondern oft übliches Vorgehen in der Eventprogrammierung.


Zitat Aber vermutlich wird mir ohnehin nichts anderes übrig bleiben.

Schöne Grüße
Roland



Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#532202]

KeybordEvent in CS6 und CC unterschiedlich

drerol74
Beiträge gesamt: 434

19. Sep 2014, 11:33
Beitrag # 5 von 8
Beitrag ID: #532216
Bewertung:
(2836 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Hast Du Dir denn schon mal das Event selbst angesehen (übergebener Parameter)?


Ja, wobei ich nicht ausschließen möchte, dass ich etwas übersehen habe.

Code
KeyboardEvent.AT_TARGET = 2 
KeyboardEvent.BUBBLING_PHASE = 3
KeyboardEvent.CAPTURING_PHASE = 1
KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1
KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3
KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2
KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0
KeyboardEvent.NOT_DISPATCHING = 0
KeyboardEvent.altKey = false
KeyboardEvent.bubbles = true
KeyboardEvent.cancelable = true
KeyboardEvent.captures = true
KeyboardEvent.ctrlKey = false
KeyboardEvent.currentTarget = [object EditText]
KeyboardEvent.detail = 1
KeyboardEvent.eventPhase = target
KeyboardEvent.keyIdentifier = Up
KeyboardEvent.keyLocation = 0
KeyboardEvent.keyName = Up
KeyboardEvent.metaKey = false
KeyboardEvent.shiftKey = false
KeyboardEvent.target = [object EditText]
KeyboardEvent.timeStamp = Fri Sep 19 2014 10:45:36 GMT+0200
KeyboardEvent.type = keydown
KeyboardEvent.view = [object EditText]



Alles gleich, bis auf »timeStamp«. Dann werd ich es mal mit der Zeitauswertung versuchen ...

Schöne Grüße
Roland


als Antwort auf: [#532205]

KeybordEvent in CS6 und CC unterschiedlich

WernerPerplies
Beiträge gesamt: 2552

19. Sep 2014, 11:46
Beitrag # 6 von 8
Beitrag ID: #532217
Bewertung:
(2832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,

Zitat Ja, wobei ich nicht ausschließen möchte, dass ich etwas übersehen habe.


Für den Fall, dass Du mal wieder Objekte miteinander vergleichen willst:
WpsCompareObjects
Da kann man dann eigentlich nichts mehr übersehen.
Zitat Alles gleich, bis auf »timeStamp«. Dann werd ich es mal mit der Zeitauswertung versuchen ...

Das müsste auf jeden Fall klappen.

Aber unterschiedliche TimeStamps sind für mich auch unterschiedliche Auslöser!

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#532216]

KeybordEvent in CS6 und CC unterschiedlich

Dirk Becker
Beiträge gesamt: 174

20. Sep 2014, 18:40
Beitrag # 7 von 8
Beitrag ID: #532270
Bewertung:
(2724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

ich hätte da noch Ansätze, die ich leider nicht selber ausprobieren konnte.

Das dritte Argument von addEventListener beeinflusst die Phasen, in denen der Event zugestellt wird. Vielleicht kann man damit etwas hinbiegen. Ausserdem würde ich mal versuchen, ob über event.preventDefault() oder auch event.stopPropagation() das Wiedersehen unterdrückt werden kann.

Grüße,
Dirk


als Antwort auf: [#532217]

KeybordEvent in CS6 und CC unterschiedlich

drerol74
Beiträge gesamt: 434

20. Sep 2014, 22:31
Beitrag # 8 von 8
Beitrag ID: #532271
Bewertung:
(2692 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dirk,

genial, danke dir für den Tipp. preventDefault bricht den Eventhandler tatsächlich ab, sodass er nicht nochmals ausgeführt wird. stopPropagation hatte ich schon probiert udn auch capturePhase auf true (dann ging gar nichts), aber das noch nicht.

Rätselhaft bleibt für mich das Verhalten dennoch: bei den Funktionstasten (alt, ctrl, ...) und eben den Pfeiltasten wird in der CC-Version 2 x ausgelöst, bei den anderen Tasten nur 1 x. Verwendet man keyup statt keydown, wird sogar 3 x ausgelöst. Eben eine weitere Eigenart bei Script-UI in CC ...

Schöne Grüße
Roland


als Antwort auf: [#532270]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Veranstaltungen
25.01.2021 - 26.01.2021

Digicomp Academy AG, Bern oder Zürich
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/PHOTM1

Neuste Foreneinträge


Langsamer MacMini

Balken hinter einen Bildteil

Tabellenspalte als „auf der Seite aussen liegend“ definieren

Nicht "Silben über Spalten hinweg trennen" (CC 2018/ CC 2021)

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

InDesign CS6 (8.1.0)-Patch

komische DOC – seltsames Verhalten beim Import in InDesign

Statische Fußnoten-Ziffern

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt

Covid und das Wohlbefinden
medienjobs