-
Technisches Gebiet
-
Die
vorliegende Erfindung betrifft eine Tastenereignissteuervorrichtung,
und insbesondere eine Tastenereignissteuervorrichtung zum Ändern des Ziels,
an welches spezielle Tastenereignisse zu liefern sind, und zum Durchführen des
Filterns von Tastenereignissen.
-
Stand der Technik
-
In
einem Fenstersystem, wie dem XWindowSystemTM (eine
eingetragene Marke des Massachusetts Institute of Technology), welches
ein beliebter Mechanismus zum Verwalten von Tastenzuständen und
zum Melden von Änderungen
der Zustände
ist, wird ein virtuelles Tastenereignis in Übereinstimmung mit der Tastenbedienung
ausgelöst,
wenn eine Hilfstaste, wie eine Umschalttaste oder eine Steuertaste, mit
einer anderen Taste kombiniert wird (siehe z. B. "XWindow handbook", ASCII Corporation,
1990", Oliver JONES,
betreut von Ryo NISHIMURA, übersetzt von
Akemi MIURA, (nachstehend als "Nicht-Patentdokument
1" bezeichnet)).
-
Eine
Technik der Ereignisverwaltung auf einem Fenstersystem, die eine
Vielzahl von Fenstern handhabt, ist ein Mehrfensterereignisverwaltungsgerät, welches
durch universelles Verwalten von Informationen hinsichtlich der
Fenstersteuerung ein automatisches Schalten eines Fokusfensters
als ein Ziel realisiert, welchem Ereignisse zu melden sind (siehe z.
B. Publikation zur Offenlegung
japanischer
Patente Nr. 2-139626 (nachstehend als "Patentdokument 1" bezeichnet)).
-
Jedoch
ziehen die in Nicht-Patentdokument 1 und Patentdokument 1 beschriebenen
Techniken nicht den Fall in Betracht, in welchem Funktionszuweisungen
von Tasten auf der Grundlage von Zeiträumen, für welche die Tasten gedrückt werden,
z. B. kurz gedrückt
(ein so genannter "Klick") oder lang gedrückt (ein
so genanntes "Halten") oder auf der Grundlage
der Bedienungsarten der Tasten, z. B. halb gedrückt oder ganz gedrückt, zu ändern sind.
-
Ein
Beispiel eines Mechanismus zum Ändern
der Funktionszuweisungen von Tasten auf der Grundlage von Zeiträumen, für welche
die Tasten gedrückt
werden, z. B. kurz gedrückt
oder lang gedrückt,
ist ein Mechanismus, welcher verschiedene Ereignisse in Übereinstimmung
mit der Tastenbedienung meldet, abhängig davon, ob es ein kurzes
Drücken
oder ein langes Drücken
ist (siehe z. B. Publikation zur Offenlegung
japanischer Patente Nr. 2000-353357 (nachstehend
als "Patentdokument
2" bezeichnet)).
-
In
der Situation, wenn verschiedene Funktionen in Übereinstimmung mit der Tastenbedienung abhängig davon,
ob es ein kurzes Drücken
oder ein langes Drücken
ist, zuzuweisen sind, kann es einen Fall geben, in dem es wünschenswert
ist, kurze Drückereignisse
zu unterdrücken,
sobald ein langes Drücken
festgestellt worden ist, aber es kann auch einen Fall geben, in
dem kurze Drückereignisse
gemeldet werden müssen,
sogar nachdem ein langes Drücken festgestellt
worden ist. In dem Fall, wenn eine bestimmte Funktion durchzuführen ist,
wenn eine Taste zum ersten Mal gedrückt wird, und eine nächste Funktion
durchzuführen
ist, wenn danach ein langes Drücken
festgestellt wird, wäre
es notwendig, Kurzdrückereignisse
zu melden, sogar nachdem ein langes Drücken festgestellt worden ist.
Ein Beispiel davon wäre
der Fall, in welchem ein Scrollen begonnen wird, wenn eine Taste
gedrückt
ist, und die Scrollgeschwindigkeit erhöht wird, wenn ein langes Drücken festgestellt
worden ist (siehe z. B. offengelegte
japanische Patentveröffentlichung Nr. 2003-162356 ).
-
In
diesem Fall würde
das Tastenliefergerät mit
der Funktion zum Melden von Änderungen
der Zustände
von Tasten den Zustand der korrespondierenden Taste oder der virtuellen
Taste in der Mitte einer Tastenbedienung melden, noch bevor eine
korrespondierende virtuelle Taste bestimmt wird, die dem Abschluss
einer Reihe von Tastenbedienungen folgt. In 21 ist
z. B. ein Ablauf gezeigt, in dem Fall, wenn eine virtuelle Taste "lang gedrückte Taste" und eine virtuelle
Taste "kurz gedrückte Taste" einem langen Drücken und
einem kurzen Drücken
einer gegebenen Taste zugewiesen werden, indem angenommen wird,
dass die Taste lang gedrückt
wird. Zum Zeitpunkt, wenn die Taste gedrückt wird, meldet das Tastenliefergerät zuerst
eine Änderung
im Zustand der "kurz
gedrückten" virtuellen Taste.
Weder die kurz gedrückte
Taste noch die lang gedrückte
Taste wird zum Zeitpunkt dieses Tastendrucks eindeutig festgestellt,
da sie noch in der Mitte der Tastenbedienung ist. Sobald eine bestimmte
Zeitdauer mit der gedrückten
Taste abläuft,
wodurch sich die Feststellung einer lang gedrückten Bedienung ergibt, meldet
dieses Verfahren danach eine Änderung
des Zustands der "lang
gedrückten" virtuellen Taste.
Nach dem obigen Verfahren empfängt
jede Anwendung eine Meldung eines virtuellen Tastenereignisses noch
vor der Feststellung einer Tastenbedienung. Nach diesem Verfahren
wird daher eine empfangene Reihe virtueller Tastenereignisse einer
Gesamtbestimmung an der Anwendungsseite unterzogen, um zu bestimmen,
welches Tastenereignis festgestellt worden ist, und ein korrespondierender
Vorgang wird durchgeführt.
-
Was
das Aufnehmen bzw. Grabben von Tastenereignissen betrifft, realisiert
das weit verbreitete XWindowSystem dieses wie folgt. Wenn eine Taste, die
ein Ziel des Grabbens ist, gedrückt
wird, wird das Ziel, an welches das Tastenereignis zu liefern ist,
von einer Anwendung, die aktiv ist, zu jener, die das Grabben angefragt
hat, geschaltet, und der Lieferpfad wird auf normal zurückgebracht,
wenn die Taste losgelassen wird (siehe z. B. das zuvor erwähnte Nicht-Patentdokument
1).
-
Es
kann auch einen Fall geben, in dem ein Benutzer einen Vorgang nicht
für nur
eine bestimmte Anwendung durchführt,
sondern für
alle bestehenden Anwendungen. Ein spezielles Beispiel wäre der Fall, in
dem alle Anwendungen den von ihnen angezeigten Bildschirm schließen, minimieren
oder maximieren. Da üblicherweise
verwendete Fenstersysteme keinen Mechanismus zum Liefern von Tastenereignissen
an alle Fenster aufweisen, wird in einem derartigen Fall eine Fensterverwaltung
zum Verwalten von Fenstern bereitgestellt, so dass eine universelle Bedienungsanfrage
an die Fensterverwaltung gemeldet wird, welche, nach Empfangen der
Obigen, Bedienungen für
alle Fenster durchführt.
Jedoch sind die durch eine üblicherweise
verwendete Fensterverwaltung für
alle Fenster durchzuführenden
Bedienungen, wie FVWM, auf Bedienungen hinsichtlich der Fenster
an sich begrenzt, z. B. Maximieren oder Minimieren des Fensters,
wegen der Natur der Fensterverwaltung (siehe z. B. David Fries,
et al., "The Official
FVWM Homepage",
20. Juli 2002, gesucht am 09. September 2002, URL:http://www.fvwm.org").
-
Als
Ergänzung
zum Obigen, gibt es ein Eingabegerät, welches, wenn Textzeichen
simultan in eine Vielzahl von Fenster einzugeben sind, die jeweiligen
Eingabezeichen auf korrespondierenden Fenstern durch Bezugnehmen
auf eine Zeichen-Fenster-Korrespondenztabelle
ausgibt, welche die Korrespondenz zwischen eingegebenen Zeichen
und Zielfenstern beschreibt, in welche die eingegebenen Zeichen
einzugeben sind (siehe z. B. Publikation zur Offenlegung
japanischer Patente Nr. 8-50542 ).
-
Jedoch
weist die zuvor erwähnte
herkömmliche
Technik ein erstes Problem dahingehend auf, dass, wenn eine Vielzahl
von Tastenereignissen, welche durch eine Reihe von Tastenbedie nungen
ausgelöst
werden, als ein Ergebnis des Grabbens von Tastenereignissen an sowohl
eine Anwendung, welche durch den Nutzer benannt wird, oder an eine
Anwendung, welche das Ziel der Tastenereignislieferung (nachstehend
als die "aktive
Anwendung" bezeichnet)
sein soll, als auch an die Anwendung, welche ein Empfänger der
vorigen Lieferung ist (nachstehend als die "Grabb-Anwendung" bezeichnet) geliefert wird, nur ein
Teil der Reihe der Tastenbedienungen an jede Anwendung gemeldet
wird, wodurch es unmöglich
wird, die Funktion genau festzustellen, so dass das System eine
unerwartete Operation durchführen
kann.
-
In 22 ist
z. B. ein Ablauf in dem Fall gezeigt, in welchem "lang gedrückte" und "kurz gedrückte" virtuelle Tasten
einer gegebenen Taste zugewiesen werden, und die Anwendung A eine
aktive Anwendung ist und die Anwendung B eine Grabb-Anwendung für die "lang gedrückte" virtuelle Taste
ist, wobei angenommen wird, dass die Taste lang gedrückt wird.
Wenn die Taste gedrückt
wird, wird zuerst ein "kurz
gedrücktes" virtuelle Tastendruckereignis
an die Anwendung A gemeldet. Als nächstes wird ein "lang gedrücktes" virtuelles Tastendruckereignis an
die Anwendung B gemeldet. Wenn die Taste losgelassen wird, wird
danach ein "kurz
gedrücktes" virtuelles Tastenloslassereignis
an die Anwendung A gemeldet und ein "lang gedrücktes" virtuelles Tastenloslassereignis wird
an die Anwendung B gemeldet. Obwohl die Tastenbedienung ein langes
Drücken
beweisen würde,
sobald alle aus der Reihe der vier virtuellen Tastenereignisse empfangen
werden, hat die Anwendung A nur eine Meldung des "kurz gedrückten" virtuellen Tastenereignisses
empfangen; daher wird sie einen Vorgang durchführen, welcher zu einem kurzen
Drücken
korrespondiert, obwohl der Benutzer keine Kurzdruckbedienung durchgeführt hat.
-
Es
könnte
denkbar sein, das zuvor erwähnte Problem,
in welchem "lang
gedrückte" und "kurz gedrückte" virtuelle Tasten einer
Taste zugewiesen werden, durch Nichtauslösen eines Druckereignisses zum
Zeitpunkt, wenn die Taste gedrückt
wird, zu lösen,
weil das Bedienungsergebnis des Nutzers nicht festgestellt werden
kann, und nur ein "lang
gedrücktes" oder "kurz gedrücktes" virtuelles Tastenloslassereignis
korrespondierend zum Bedienungsergebnis zum Zeitpunkt des Tastenloslassens
auszulösen, wenn
das Tastenbedienungsergebnis festgestellt wird. Da dieses Verfahren
jedoch kein Tastendruckereignis für eine Taste auslöst, die
ein langes Drücken
unterstützt,
werden verschiedene Typen von Tastenereignissen zwischen Tasten
ausgelöst,
welche keine lang gedrückte
Bedienung unterstützen, und
Tasten, welche eine lang gedrückte
Bedienung unterstützen.
Dies ergibt ein Problem dahingehend, dass jedes Mal, wenn eine Taste,
welche eine lang gedrückte
Bedienung unterstützt,
geändert
wird, jede Anwendung zum Verarbeiten von betroffenen Tastenereignissen
auch geändert
werden müsste.
Um mit diesem Problem umzugehen, könnte es denkbar sein, keine
Tastendruckereignisse auszulösen,
sogar für
Tasten, welche keine lang gedrückte
Bedienung unterstützen,
aber ein derartiges Verfahren führt
eine Verzögerung
der Tastenereignisse für
jede Taste ein, und beeinträchtigt
somit die Bedienbarkeit auf Seiten des Benutzers.
-
Es
gibt ferner ein zweites Problem dahingehend, dass, wenn eine spezielle
Taste in einem üblicherweise
verwendeten Fenstersystem, wie dem XWindowSystem, zu grabben ist,
das Lieferziel der Tastenereignisse auf den Empfänger der vorbedingten Lieferung
geschaltet wird, sobald diese Taste gedrückt wird, und bis zu der Zeit,
an der sie losgelassen wird. Abhängig
von der Reihenfolge der virtuellen Tastenlieferung, können diese
Tastenereignisse, welche gar nicht das Grabb-Ziel sind, daher auch
an den Empfänger
der vorbedingten Lieferung geliefert werden.
-
In 23 ist
z. B. ein Ablauf in dem Fall gezeigt, wenn die "lang gedrückten" und "kurz gedrückten" virtuellen Tasten einer gegebenen Taste
zugewiesen werden, und Anwendung A eine aktive Anwendung ist und
Anwendung B eine Grabb-Anwendung ist, welche die "kurz gedrückte" virtuelle Taste grabbt,
wobei angenommen wird, dass die Taste lang gedrückt wird. Da die Tastenereignisse
vom "lang gedrückten" virtuellen Tastendrückereignis
zum "lang gedrückten" virtuellen Tastenloslassereignis
an die Anwendung B zu liefern sind, wird sogar das "kurz gedrückte" virtuelle Tastenloslassereignis
an die Anwendung B gesendet, falls die virtuellen Tastenereignisse
in der Reihenfolge eines "kurz
gedrückten" virtuellen Tastendruckereignisses,
eines "lang gedrückten" virtuellen Tastendruckereignisses,
eines "kurz gedrückten" virtuellen Tastenloslassereignisses
und eines "lang
gedrückten" virtuellen Tastenloslassereignisses
ausgelöst
werden. Dies bedeutet, dass kein Tastenloslassen an die Anwendung
A gemeldet wird.
-
Ein
mögliches
Verfahren zum Verhindern einer derartigen falschen Lieferung von
Tastenereignissen wegen des Grabbens könnte es sein, das Grabben nicht
durchzuführen,
so dass Tastenereignisse immer an die aktive Anwendung geliefert
werden, wobei die aktive Anwendung die gelieferten Tastenereignisse
einer umfassenden Bestimmung unterzieht, um die Verarbeitung zu
schalten oder an andere Anwendungen zu melden. Dies weist jedoch
ein Problem dahingehend auf, dass, falls es wünschenswert ist, eine bestimmte
Verarbeitung für
eine bestimmte Tastenbedienung über
das gesamte System in einer einheitlichen Art durchzuführen, es
für jede Anwendung
notwendig wird, welche potenziell eine aktive Anwendung werden kann,
die obige Verbesserung zu unterstützen, woraus sich eine Erhöhung der Entwicklungskosten
ergäbe.
Außerdem
wird sich in dem Fall, wenn eine Anwendung eingeführt wird,
welche die obige Verbesserung nicht unterstützt, z. B. eine freie Anwendung,
welche durch eine dritte Partei entwickelt worden ist, jede auf
die obige Verbesserung bezogene Tastenbedienung in einer derartigen Anwendung
als ungültig
erweisen. Z. B. in dem Fall, wenn das gesamte System in einen Verhaltensmodus
als Reaktion auf ein langes Drücken
einer Verhaltenstaste übergeht,
muss jede Anwendung die Verarbeitung des Verhaltensmodusübergangs
als Reaktion auf die Meldung eines langen Drückens der Verhaltenstaste handhaben.
Darüber
hinaus wird sich auf einem heruntergeladenen Teil einer freien Software,
welche keine Beschreibung der obigen Verarbeitung enthält, dass
lange Drücken
der Verhaltenstaste als ungültig
erweisen, oder es kann ein anderer Vorgang durchgeführt werden.
-
Es
gibt ferner ein drittes Problem, dahingehend, dass in einem üblicherweise
verwendeten Fenstersystem, wie dem XWindow-System, um Konflikte zwischen Grabb-Vorgängen zu
vermeiden, nur das Fenster ein Empfänger der vorbedingten Lieferung
für eine
gegebene Taste werden kann, das an erster Stelle für eine Anfrage
war. Mit anderen Worten ist es für
eine Vielzahl von Fenstern nicht möglich, Tastenereignisse hinsichtlich
der gleichen Taste zur gleichen Zeit zu grabben.
-
Es
gibt ferner ein viertes Problem, dahingehend, dass in dem Fall,
wenn der Nutzer wünscht,
einen universellen Vorgang für
alle Fenster durchzuführen,
es mit der zuvor erwähnten
herkömmlichen Technik,
in welcher eine Fensterverwaltung für die Verwaltung und Steuerung
verantwortlich ist, möglich ist,
jeden Vorgang durchzuführen,
welcher keine Bedienung hinsichtlich der Fenster an sich für alle Fenster
ist, z. B. einen Vorgang des Rückgängigmachens einer
unmittelbar vorhergehenden Bedienung und der Neuspeicherung des
unmittelbar vorherigen Zustands oder ein Datensicherungsvorgang.
-
Die
früher
erwähnte
herkömmliche
Technik hinsichtlich eines eine Vielzahl von Fenstern ausgerichteten
Eingabegerätes
(siehe z. B. das obige Patentdokument 2) fasst nur Texteinga ben
ins Auge; darüber
hinaus wird eine gemeldete Texteingabe an eine Vielzahl von Fenstern
lediglich in Übereinstimmung
mit einer Zeichen-Fenster-Korrespondenztabelle geliefert. Daher
werden in dem Fall, wenn eine Vielzahl von Tastenereignissen während des
Tastenbedienungsvorgangs des Nutzers erzeugt werden, alle der erzeugten
Tastenereignisse jeweils an die korrespondierenden Fenster geliefert,
woraus sich somit das zuvor erwähnte
erste Problem ergibt, dass das System eine unerwartete Operation
durchführt.
-
Das
U.S. Patent Nr. 6,069,628 offenbart
einen Betrieb zur Navigation durch ein Anwendungsprogramm, eine
Anwendungsfensterkonfiguration und eine Anwendungsprogrammsymboleingabe, welche
in einer Navigatorfunktion bereitgestellt ist, die als Reaktion
auf Tastenanschläge
benannte Tastendarstellungen von Anwendungsprogrammen und Befehlen
ausführt.
-
SCHEIFLER
R. W. et al.: "The
X Window System" ACM
Transaction an Graphics, Association for Computing Machinery, New
York, NY, US, Vol. 5, No. 2, April 1986, Seiten 79–109 offenbart
eine Tastenereignissteuervorrichtung zum Erfassen eines Tastenereignisses,
welches ein Ergebnis einer Tastenbedienung von einem Tastenliefergerät anzeigt, welches
eine Änderung
im Zustand einer Taste meldet, und zum Liefern des erfassten Tastenereignisses
an ein vorbestimmtes Empfängerprogramm.
-
Aus
dem Stand der Technik, insbesondere dem XWindowSystem, ist weiterhin
eine Grabb-Annahmesektion zum Annehmen einer Anfrage von einem ersten
Empfängerprogramm
bekannt, um ein gewünschtes
Tastenereignis anstelle eines zweiten Empfängerprogramms zu grabben, das
ein üblicher Empfänger von
Tastenereignissen vom Tastenliefergerät ist.
-
Offenbarung der Erfindung
-
Die
vorliegende Erfindung wurde gemacht, um zumindest das zuvor erwähnte erste
Problem und das zweite Problem (und ferner das dritte und vierte Problem
nach einigen Varianten davon), zu lösen, und eine Aufgabe davon
ist es, eine Tastenereignissteuervorrichtung bereitzustellen, welche
in einer Umgebung, die eine Vielzahl von Fenstern enthält, Tastenereignisse
liefert, welche auf der Grundlage einer Vielzahl von Tastenereignissen
festgestellt werden, die während
des Bedienungsvorgangs eines Nutzers in einem Fenster auftreten,
das ein Empfänger
einer vorbedingten Lieferung oder ein Fokusfenster ist.
-
Die
obige Aufgabe wird durch die Merkmale der Patentansprüche 1, 9
und 10 gelöst.
Ausführungen
der Erfindung werden durch die Merkmale der Patentansprüche 2 bis
8 beschrieben.
-
Die
Tastenereignissteuervorrichtung nach der vorliegenden Erfindung
umfasst insbesondere: eine Grabb-Annahmesektion zur Annahme einer
Anfrage von einem ersten Empfängerprogramm
(z. B. die zuvor erwähnte
Grabb-Anwendung), um ein gewünschtes
Tastenereignis anstelle eines zweiten Empfängerprogramms (z. B. die zuvor
erwähnte
aktive Anwendung), das ein üblicher
Empfänger
von Tastenereignissen von einem Tastenliefergerät (z. B. das zuvor erwähnte Tastenliefergerät) ist,
zu grabben; und eine Grabb-Anfragesektion zum Zurückhalten von
zumindest einer Tastenereignisanfragereihe, die aus einer Vielzahl
von Tastenereignissen besteht, die bis zum Zeitpunkt ausgelöst werden
können,
an welchem ein Tastenereignis, das zu einem Ergebnis einer Tastenbedienung
durch einen Nutzer korrespondiert, festgestellt wird, und zur Anfrage
an das Tastenliefergerät,
alle Tastenereignisse an die Tastenereignissteuervorrichtung zu
melden, welche zu einem der zumindest einen Tastenereignisanfragereihe
gehören,
welche das gewünschte
Tastenereignis enthält.
-
Nach
der vorliegenden Erfindung erfasst eine einzelne Tastenereignissteuervorrichtung
universell alle Ereignisse hinsichtlich einer Vielzahl von Tasten,
die während
einer Reihe von Tastenbedienungen ausgelöst werden, wodurch die Fehlfunktion wegen
einer zwischen einem Fokusfenster und einem Fenster, welches ein
Empfänger
einer vorbedingten Lieferung ist, geteilten Lieferung verhindert werden
kann.
-
Nach
mehreren Varianten der vorliegenden Erfindung können die folgenden Effekte
erhalten werden.
-
Es
ist möglich,
das Problem des Grabbens von Tastenereignissen, welche gerade keine Grabb-Ziele
sind, und das Problem dahingehend, dass eine Vielzahl von Fenstern
nicht das gleiche Tastenereignis grabben kann, zu verhindern, welche wegen
der Gestaltung des vorbedingten Tastenerfassungsmechanismus eines
herkömmlich
verwendeten Fenstersystems bestehen.
-
Aus
dem Obigen wird das Grabben von Tastenereignissen für Anwendungen
möglich,
sogar in einer Umgebung, in der Tastenfunktionen abhängig von
der Tastenbedienung variieren. Daher genügt es, in dem Fall, wenn es
wünschenswert
ist, einen bestimmten Vorgang für
eine bestimmte Tastenbedienung über
das gesamte System einheitlich durchzuführen, wenn die eine Anwendung,
welche dieses Tastenereignis grabbt, zum Unterstützen derselben modifiziert
wird, und jede spezielle Verarbeitung der anderen bestehenden Anwendungen
ist unnötig.
Somit kann eine vereinheitlichte Verarbeitung über das gesamte System durchgeführt werden,
sogar bei einer Anwendung, wie einem heruntergeladenen Teil einer
freien Software oder dgl.
-
Durch
Senden eines bestimmten Ereignisses an alle Fenster wird es für den Nutzer
möglich, auf
allen Fenstern universell andere Vorgänge als Fensterbedienungen
durchzuführen,
welche nicht durch eine Fensterverwaltung unterstützt würden.
-
Darüber hinaus
braucht man im Fall der Anwendung der vorliegenden Erfindung in
einem bestehenden System nur zusätzlich
die Tastenereignissteuervorrichtung einzuführen, ohne das Fenstersystem
modifizieren zu müssen.
Daher ist es möglich, ein üblicherweise
verwendetes Fenstersystem zu verwenden, so dass der Softwareentwicklungsumfang,
die Entwicklungskosten und die Anzahl der zu entwickelnden Schritte
reduziert werden können.
-
Kurze Beschreibung der Zeichnungen
-
1 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach einer Ausführungsform 1 der vorliegenden
Erfindung veranschaulicht.
-
2 ist
ein Diagramm, welches eine beispielhafte Tastenereignisanfragereihe
nach der vorliegenden Erfindung veranschaulicht.
-
3 ist
ein Diagramm, welches eine andere beispielhafte Tastenereignisanfragereihe
nach der vorliegenden Erfindung veranschaulicht.
-
4 ist
ein Diagramm, welches eine beispielhafte Tastenereignisfeststellungsreihe
nach der vorliegenden Erfindung veranschaulicht.
-
5 ist
ein Diagramm, welches eine andere beispielhafte Tastenereignisfeststellungsreihe nach
der vorliegenden Erfindung veranschaulicht.
-
6 ist
ein Diagramm, welches eine beispielhafte Datenstruktur einer Tastenereignisfeststellungsreihe
nach der vorliegenden Erfindung veranschaulicht.
-
7 ist
ein Diagramm, welches eine exemplarische Datenstruktur einer Tastenereigniszurückhaltesektion
nach der vorliegenden Erfindung veranschaulicht.
-
8 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisgrabbanfragevorgangs nach
der Ausführungsform
1 der vorliegenden Erfindung veranschaulicht.
-
9 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisfiltervorgangs
nach der Ausführungsform
1 der vorliegenden Erfindung veranschaulicht.
-
10 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach einer Ausführungsform 2 der vorliegenden
Erfindung veranschaulicht.
-
11 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisfiltervorgangs
nach der Ausführungsform
2 der vorliegenden Form veranschaulicht.
-
12 ist
ein Diagramm, welches ein spezielles Beispiel eines Tastenereignisfiltervorgangs nach
der Ausführungsform
2 der vorliegenden Erfindung veranschaulicht.
-
13 ist
ein Diagramm, welches ein anderes spezielles Beispiel eines Tastenereignisfiltervorgangs
nach der Ausführungsform
2 der vorliegenden Erfindung veranschaulicht.
-
14 ist
ein Diagramm, welches noch ein anderes spezielles Beispiel eines
Tastenereignisfiltervorgangs nach der Ausführungsform 2 der vorliegenden
Erfindung veranschaulicht.
-
15 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach einer Ausführungsform 3 der vorliegenden
Erfindung veranschaulicht.
-
16 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisfiltervorgangs
nach der Ausführungsform
3 der vorliegenden Erfindung veranschaulicht.
-
17 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach einer Ausführungsform 4 der vorliegenden
Erfindung veranschaulicht.
-
18 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisgrabbanfragevorgangs
nach der Ausführungsform
4 der vorliegenden Erfindung veranschaulicht.
-
19 ist
ein Ablaufdiagramm, welches einen Ablauf eines Tastenereignisliefervorgangs
nach der Ausführungsform
4 der vorliegenden Erfindung veranschaulicht.
-
20 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach einer Ausführungsform 5 der vorliegenden
Erfindung veranschaulicht.
-
21 ist
ein Vorgangssequenzdiagramm einer herkömmlichen Technik, in dem Fall,
wenn "lang gedrückte" und "kurz gedrückte" virtuelle Tasten
unterstützt
werden.
-
22 ist
ein Vorgangssequenzdiagramm einer herkömmlichen Technik, in dem Fall,
wenn eine Funktionsstörung
einer kurz gedrückten
Verarbeitung auftritt.
-
23 ist
ein Vorgangssequenzdiagramm eines herkömmlichen Fenstersystems, in
dem Fall, wenn eine falsche Lieferung von Tastenereignissen auftritt,
welche keine Grabb-Ziele sind.
-
Bester Weg zum Ausführen der
Erfindung
-
Nachstehend
werden Ausführungsformen der
vorliegenden Erfindung mit Bezug auf die Figuren beschrieben.
-
Obwohl
die Ausführungsformen
den Fall beschreiben, in dem ein Fenstersystem als Tastenliefergerät gewählt ist,
ist die vorliegende Erfindung auch auf den Fall anwendbar, in dem
ein anderes Tastenliefergerät
als ein Fenstersystem eingesetzt wird, z. B. ein Mechanismus, welcher Änderungen
in Zuständen
von Tasten während
Inter-Task-Kommunikationen in einem Echtzeit-OS meldet. Lieferziele
von Tasten sind nicht auf Fenster begrenzt, sondern können jegliche
Programme (einschließlich
Anwendungen, Child-Fenstern oder dgl.) sein.
-
(Ausführungsform
1)
-
In 1 ist
als Ausführungsform
1 der vorliegenden Erfindung ein Fall veranschaulicht, in dem die
Tastenereignissteuervorrichtung einen Tastenereignisgrabbanfragevorgang
und einen Tastenereignisfiltervorgang durchführt.
-
1 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration der
Tastenereignissteuervorrichtung nach Ausführungsform 1 der vorliegenden
Erfindung veranschaulicht.
-
Ein
Fenstersystem 32, welches ein Beispiel eines Tastenliefergeräts ist,
hat die Funktion zum Liefern von Tastenereignissen an vorbestimmte
Fenster. Obwohl das Fenstersystem 32 üblicherweise Tastenereignisse
an ein Fokusfenster liefert, funktioniert das Fenstersystem 32 ferner
zum Liefern von speziellen Tastenereignissen an spezielle Fenster.
Das Fokusfenster ist ein Fenster, welches durch einen Nutzer oder
eine Anwendung als Lieferziel für
Tastenereignisse benannt worden ist.
-
Obwohl
das Fenstersystem 32 üblicherweise Tastenereignisse
an das Fokusfenster 34 liefert, werden bei der vorliegenden
Ausführungsform
einige Tastenereignisse vom Fenstersystem 32 über die Tastenereignissteuervorrichtung 12 an
ein Grabb-Fenster 10 gemeldet.
Das Grabb-Fenster 10 ist hierin ein Fenster, welches das
Grabben eines speziellen Tastenereignisses von der Tastenereignissteuervorrichtung 12 angefragt
hat. Das Grabb-Fenster 10 kann das Fokusfenster 34 sein.
-
Die
Tastenereignissteuervorrichtung 12 in 1 umfasst
eine Grabb-Annahmesektion 14, eine Grabb-Anfragesektion 16,
eine Tastenereignisliefersektion 18, eine Tastenereigniskonvertierungssektion 20,
eine Bestimmungssektion für
gelieferte Tastenereignisse 22, eine Tastenereigniszurückhaltesektion 24,
eine Tastenereignisentfernungssektion 26, eine Beseitigungssektion
für zurückgehaltenen
Inhalt 28 und eine Tastenereigniserfassungssektion 30.
-
Zuerst
wird ein Tastenereignisgrabbanfragevorgang beschrieben.
-
Die
Grabb-Annahmesektion 14 nimmt eine Grabb-Anfrage vom Grabb-Fenster 10 (welches
Informationen enthält,
welches Tastenereignis zu grabben ist) an, speichert diese Anfrage
und meldet der Grabb-Anfragesektion 16, dass eine Grabb-Anfrage angenommen
worden ist.
-
Die
Grabb-Anfragesektion 16 hält vorher eine Tastenereignisanfragereihe 36 zurück, welche aus
einer Vielzahl von Tastenereignissen besteht, wie in 2 beispielhaft
erläutert
ist. Die Grabb-Anfragesektion 16 kann eine Vielzahl von
Tastenereignisanfragereihen zurückhalten.
Falls die Tastenereignisse, welche Grabb-Ziele sind, wie von der Grabb-Annahmesektion 14 gemeldet,
zu einer der durch die Grabb-Anfragesektion 16 zurückgehaltenen
Tastenereignisanfragereihen gehören,
stellt die Grabb-Anfragesektion 16 eine Anfrage an das
Fenstersystem 32, alle Tastenereignisse zu grabben, die zu
dieser Tastenereignisanfragereihe gehören.
-
Jede
Tastenereignisanfragereihe besteht aus einer Vielzahl von Tastenereignissen,
die bis zu dem Zeitpunkt ausgelöst
werden können,
an dem ein Tastenereignis festgestellt wird, das zum Bedienungsergebnis
des Nutzers korrespondiert.
-
Falls
es z. B. ein lang gedrücktes
Tastenereignis und ein kurz gedrücktes
Tastenereignis gibt, welche jeweils eine lang gedrückte (so
genanntes "Halten") Bedienung und eine
kurz gedrückte
(so genannter "Klick") Bedienung für die Taste
X melden, und falls der Nutzer die Taste X lange gedrückt hat, wird
ein X-kurz gedrückt-Tastendruckereignis
vom Fenstersystem 32 ausgelöst, wenn der Nutzer die Taste
X gedrückt
hat. Wenn ein langes Drücken
nach Ablauf eines bestimmten Zeitraums festgestellt worden ist,
wird danach ein X-lang gedrückt-Tastendruckereignis
vom Fenstersystem 32 ausgelöst. Dann, wenn der Nutzer die
Taste X gehen lässt
(d. h. loslässt),
werden ein X-kurz gedrückt-Tastenloslassereignis
und ein X-lang gedrückt-Tastenloslassereignis
vom Fenstersystem 32 ausgelöst. Somit wird ein kurz gedrücktes Tastenereignis
auch während
der lang gedrückten
Tastenbedienung des Nutzers ausgelöst. Die Grabb-Anfragesektion 16 hält alle
der obigen vier Tastenereignisse, die bei einer lang gedrückten Tastenbedienung
ausgelöst
werden, als eine Tastenereignisanfragereihe 36 zurück, wie
in 2 gezeigt ist. Falls eine Grabb-Anfrage für eine der
obigen vier Tastenereignisse, die in der Tastenereignisanfragereihe 36 enthalten
sind, durch das Grabb-Fenster 10 gemacht wird, stellt die
Grabb-Anfragesektion 16 eine Anfrage an das Fenstersystem 32,
um alle der obigen vier Tastenereignisse, die in der Tastenereignisanfragereihe 36 enthalten
sind, zu grabben.
-
In
einem anderen Beispiel, in dem Fall, wenn ein virtuelles Tastenereignis
auszulösen
ist, wenn zwei Tasten A und B gleichzeitig gedrückt werden, so dass sich das
virtuelle Tastenereignis von jenem unterscheidet, das ausgelöst wird,
wenn die Taste A oder die Taste B alleine gedrückt wird, hält die Grabb-Anfragesektion 16 die
vier Tastenereignisse in der Tastenereignisanfragereihe 37 zurück, die
während
einer derartigen gleichzeitigen Druckbedienung (A drücken, A
loslassen, B drücken,
B loslassen) auftreten können,
wie in 3 gezeigt ist. Falls das Grabben in Bezug auf
eines dieser vier Tastenereignisse gemacht wird, fragt die Grabb-Anfragesektion 16 beim
Fenstersystem 32 an, alle der obigen vier Tastenereignisse,
die in der Tastenereignisanfragereihe 37 enthalten sind,
zu grabben.
-
Die
Grabb-Anfragesektion 16 kann zur gleichen Zeit die in 2 gezeigte
Tastenereignisanfragereihe 36 und die in 3 gezeigte
Tastenereignisanfragereihe 37 zurückhalten.
-
Sobald
die Tastenereignissteuervorrichtung 12 eine Anfrage an
das Fenstersystem 32 zum Grabben spezieller Tastenereignisse stellt,
wird das Fenstersystem 32 danach derartige spezielle Tastenereignisse
an die Tastenereignissteuervorrichtung 12 melden und wird
jedes andere Tastenereignis an das Fokusfenster 34 melden.
Im Ergebnis wird die Tastenereignissteuervorrichtung 12 alle
Tastenereignisse universell erfassen, die während einer speziellen Tastenbedienung
ausgelöst
werden, wodurch jede Funktionsstörung
wegen einer Reihe von Tastenereignissen verhindert wird, die während einer
zwischen einem Fokusfenster und einem Fenster, das ein Empfänger einer
vorherigen Lieferung ist (Grabb-Fenster), geteilt gelieferten Tastenbedienung
ausgelöst werden.
-
Als
nächstes
wird ein Tastenereignisfiltervorgang beschrieben.
-
Die
Tastenereigniserfassungssektion 30 erfasst ein Tastenereignis,
das vom Fenstersystem 32 gemeldet worden ist, und meldet
dieses Tastenereignis an die Bestimmungssektion für gelieferte
Tastenereignisse 22. Zur gleichen Zeit meldet die Tastenereigniserfassungssektion 30 an
die Tastenereignisentfernungssektion 26 und die Beseitigungssektion
für zurückgehaltenen
Inhalt 28, dass eine Erfassung eines Tastenereignisses
aufgetreten ist. Die Tastenereigniserfassungssektion 30 kann
diese Meldung durch Verwenden eines bestimmten Ereignisses machen,
welches anzeigt, dass eine Erfassung eines Tastenereignisses aufgetreten
ist, oder kann das erfasste Tastenereignis selbst zur Meldung verwenden.
-
Die
Bestimmungssektion für
gelieferte Tastenereignisse 22 empfängt das Tastenereignis von
der Tastenereigniserfassungssektion 30, speichert das Tastenereignis
in der Tastenereigniszurückhaltesektion 24 und
bestimmt das zu liefernde Tastenereignis. Wenn das zu liefernde
Tastenereignis eindeutig festgestellt worden ist, meldet die Bestimmungssektion für gelieferte
Tastenereignisse 22 dieses festgestellte Tasten ereignis
an die Tastenereigniskonvertierungssektion 20 und beseitigt
dieses festgestellte Tastenereignis, das in der Tastenereigniszurückhaltesektion 24 gespeichert
ist. Nur falls das zu liefernde Tastenereignis nicht eindeutig festgestellt
wird, kann die Bestimmungssektion für gelieferte Tastenereignisse 22 das
von der Tastenereigniserfassungssektion 30 empfangene Tastenereignis
in der Tastenereigniszurückhaltesektion 24 speichern.
Die Details der Tastenereigniszurückhaltesektion 24 werden
später
beschrieben.
-
Beim
Bestimmen des zu liefernden Tastenereignisses verwendet die Bestimmungssektion
für gelieferte
Tastenereignisse 22 eine zuvor festgelegte Tastenereignisfeststellungsreihe
als Bestimmungskriterium für
die Bestimmung. Die Tastenereignisfeststellungsreihe besteht aus
einer Vielzahl von Tastenereignissen zum Feststellen von Tastenbedienungen,
die nur auf der Grundlage eines einzelnen Tastenereignisses nicht
festgestellt werden können. Falls
z. B. eine kurz gedrückte
Bedienung und eine lang gedrückte
Bedienung für
eine gegebene Taste X möglich
sind, kann eine Tastenbedienung eines Nutzers nicht eindeutig einer
kurz gedrückten
Bedienung oder einer lang gedrückten
Bedienung zugeordnet werden, wenn ein X-kurz gedrückt-Tastendruckereignis
gerade vom Fenstersystem 32 ausgelöst worden ist. Mit anderen
Worten kann die Tastenbedienung des Nutzers nur auf eine kurz gedrückte Bedienung bestimmt
werden, wenn sowohl ein X-kurz gedrückt-Tastendruckereignis und
ein X-kurz gedrückt-Tastenloslassereignis
gesichert worden sind. Demnach wird dieses aus einem X-kurz gedrückt-Tastendruckereignis
und einem X-kurz gedrückt-Tastenloslassereignis
bestehende Paar zuvor als eine Tastenereignisfeststellungsreihe 38 in
der Bestimmungssektion für
gelieferte Tastenereignisse 22 zurückgehalten, wie in 4 gezeigt
ist. Was die lang gedrückte
Bedienung betrifft, kann die Tastenbedienung des Nutzers als eine
lang gedrückte
Bedienung bestimmt werden, sobald ein X-lang gedrückt-Tasten druckereignis
alleine ausgelöst
wird, und daher ist keine Tastenereignisfeststellungsreihe nötig, die
auf die lang gedrückte
Bedienung gerichtet ist. In der Bestimmungssektion für gelieferte
Tastenereignisse 22 kann eine Vielzahl von Tastenereignisfeststellungsreihen
festgelegt sein.
-
Als
ein anderes Beispiel einer Tastenereignisfeststellungsreihe, in
dem Fall, wenn ein virtuelles Tastenereignis (Drücken von X) auszulösen ist,
wenn zwei Tasten A und B gleichzeitig gedrückt werden, so dass sich das
virtuelle Tastenereignis von jenem unterscheidet, das ausgelöst wird,
wenn die Taste A oder die Taste B alleine gedrückt wird, werden vier Tastenereignisfeststellungsreihen 39a, 39b, 39c und 39d,
wie in (a) bis (d) von 5 gezeigt ist, in der Bestimmungssektion
für gelieferte
Tastenereignisse 22 festgelegt. In diesem Fall wird das
aus einem A-Tastendruckereignis und einem B-Tastendruckereignis bestehende Paar
durch die Tastenereigniskonvertierungssektion 20 in ein
X-Tastendruckereignis konvertiert, und das aus einem A-Tastenloslassereignis
und einem B-Tastenloslassereignis
bestehende Paar wird in ein X-Tastenloslassereignis konvertiert.
Das aus einem A-Tastendruckereignis und einem A-Tastenloslassereignis
bestehende Paar und das aus einem B-Tastendruckereignis und einem
B-Tastenloslassereignis bestehende Paar werden nicht konvertiert.
-
6 veranschaulicht
eine beispielhafte Datenstruktur einer Datenereignisfeststellungsreihe,
die in der Bestimmungssektion für
gelieferte Tastenereignisse 22 festgelegt ist. Die Einstellverwaltungsinformationen 40 enthalten
eine Liste von Adressen 42a, 42b, 42c, 42d einer
Vielzahl von Tastenereignisfeststellungsreihendaten 44,
die festgelegt sind. Alle Tastenereignisfeststellungsreihendaten 44 enthalten Adressen 46a, 46b, 46c und 46d von
Tastenereignisinformationen 48, die Informationen hinsichtlich
der jeweiligen zu dieser Reihe gehörenden Tastenereignisse anzeigen.
Als Informationen zum Spezifizieren eines Tastenereignisses enthalten
die Tastenereignisinformationen 48 einen Tastenereignistyp 50,
der den Ereignistyp anzeigt, z. B. Drücken oder Loslassen, und einen
Tastencode 52, der anzeigt, zu welcher Taste das Ereignis
korrespondiert. Die Tastenereignisinformationen 48 können jegliche
Informationen sein, die ein Tastenereignis spezifizieren können. Anstatt
den Tastenereignistyp 50 und den Tastencode 52 als
Tastenereignisinformation 48 zu beschreiben, kann jedem
Tastenereignis eine Kennung zugewiesen werden und die Kennung kann
als Tastenereignisinformation 48 beschrieben werden. Was die
Einstellart der Tastenereignisfeststellungsreihen betrifft, können die
Tastenereignisfeststellungsreihen zum Zeitpunkt der Systementwicklung
statisch einbezogen werden, oder können zu jedem beliebigen Zeitpunkt,
abhängig
von den Bedürfnissen
der Anwendung, dynamisch festgelegt werden. Die Tastenereignisfeststellungsreihe
wird festgelegt, so dass ihre Bestandteile Tastenereignisse sind,
für die
ein Tastenbedienungsergebnis nicht alleine auf der Grundlage eines
einzelnen Tastenereignisses feststellbar wäre, und um alle Tastenereignisse
zu enthalten, die zum Feststellen der Tastenbedienung nötig sind.
-
Die
Tastenereignisrückhaltesektion 24 hält vorübergehend
zumindest Tastenereignisse zurück, für die ein
Tastenbedienungsergebnis nicht allein auf der Grundlage eines einzelnen
Tastenereignisses feststellbar wäre,
und ist als Speichergerät
implementiert, wie ein Speicher, der vorübergehend die zurückzuhaltenden
Tastenereignisse zurückhalten kann. 7 veranschaulicht
eine beispielhafte Datenstruktur der in der Tastenereigniszurückhaltesektion 24 zurückgehaltenen
Daten. In den zurückgehaltenen
Daten 54 wird eine Liste von Adressen 56a, 56b, 56c, 56d, 56e der
zurückzuhaltenden
Ereignisdaten 58 zurückgehalten.
Alle Ereignisdaten 58 enthalten einen Tastenereignistyp 60,
der den Ereignistyp anzeigt, z. B. Drücken oder Loslassen, einen Fensteridentifizierer 62 zum
Identifi zieren des Fokusfensters zum Eintrittszeitpunkt dieses Ereignisses, eine
Ereigniseintrittszeit 64 und einen Tastencode 66,
der anzeigt, zu welcher Taste das Ereignis korrespondiert. Diese
Ereignisdaten 58 hängen
jedoch von den Einzelheiten des Fenstersystems 32 ab, welches
Ereignisse meldet, so dass aus dem zuvor erwähnten Tastenereignistyp 60,
dem Fensteridentifizierer 62, der Ereigniseintrittszeit 64,
dem Tastencode 66 jedes unnötige eliminiert werden kann.
Außerdem
können
die Ereignisdaten 58 Koordinaten auf einem Bildschirm enthalten,
auf dem das Ereignis eingetreten ist, und einen Bildschirmidentifizierer zum
Spezifizieren eines Bildschirms in dem Fall, wenn eine Vielzahl
von Bildschirmen besteht, und dgl.
-
In
dem Fall, wenn nur die Tastenereignisse, für die ein Tastenbedienungsergebnis
nicht allein auf der Grundlage eines einzelnen Tastenereignisses feststellbar
wäre, in
der Tastenereigniszurückhaltesektion 24 gespeichert
werden, sind die durch die Tastenereigniszurückhaltesektion 24 zurückzuhaltenden
Tastenereignisse auf die Tastenereignisse begrenzt, welche in einer
der Tastenereignisfeststellungsreihen enthalten sind, die in der
Bestimmungssektion für
gelieferte Tastenereignisse 22 festgelegt sind.
-
Die
Tastenereigniskonvertierungssektion 20 konvertiert die
Tastenereignisse, die durch die Bestimmungssektion für gelieferte
Tastenereignisse 22 bestimmt worden sind, in andere Tastenereignisse. Das
Konvertierungsverfahren von Tastenereignissen enthält: Kombinieren
einer Vielzahl von Tastenereignissen derart, dass sie in ein anderes
Tastenereignis konvertiert werden; Konvertieren eines einzelnen Tastenereignisses
in eine Vielzahl von Tastenereignissen; Konvertieren eines einzelnen
Tastenereignisses in ein anderes Tastenereignis; und dgl. Das Kombinieren
einer Vielzahl von Tastenereignissen kann, in dem Fall, wenn ein
Druckereignis einer RECHTS-Taste und ein Druckereignis einer OBEN-Taste
als die zu liefernden Tastenereignisse bestimmt worden sind, z.
B. das Konvertieren dieser beiden Tastenereignisse in ein OBEN-RECHTS-Tastendruckereignis
sein. Das Konvertieren eines einzelnen Tastenereignisses in eine
Vielzahl von Tastenereignisse ist eine Umkehrung des obigen Beispiels,
z. B. das Konvertieren eines OBEN-RECHTS-Tastendruckereignisses
in ein Druckereignis einer RECHTS-Taste und ein Druckereignis einer
NACH OBEN-Taste. Das Konvertieren eines einzelnen Tastenereignisses
in ein anderes Tastenereignis kann z. B. das Konvertieren eines
Druckereignisses einer RECHTS-Taste in ein Druckereignis einer OBEN-Taste
sein. Derartige Konvertierungen können durch vorheriges Einstellen
von Konvertierungsregeln in der Tastenereigniskonvertierungssektion 20 realisiert
werden, wie in den obigen Beispielen beispielhaft dargestellt ist,
und durch Konvertieren, mittels der Tastenereigniskonvertierungssektion 20,
der Tastenereignisse, die durch die Bestimmungssektion für gelieferte
Tastenereignisse 22 als die zu liefernden Tastenereignisse
bestimmt worden sind, wobei die Konvertierung in Übereinstimmung
mit den Konvertierungsregeln ausgeführt wird. Die Tastenereigniskonvertierungssektion 20 konvertiert
nicht notwendigerweise alle Tastenereignisse. Was Tastenereignisse
betrifft, die keine Konvertierungsziele sind, meldet die Tastenereigniskonvertierungssektion 20 diese
an die Tastenereignisliefersektion 18, ohne dafür etwas
durchzuführen.
-
Die
Tastenereignisliefersektion 18 meldet das/die von der Tastenereigniskonvertierungssektion 20 gemeldete(n)
Tastenereignis(se) an das Grabb-Fenster 10. Durch Schreiben
des/der Tastenereignisse(s), z. B. in eine Ereigniswarteschlange für das Grabb-Fenster 10,
wird die Ereignislieferung erreicht.
-
Auf
der Grundlage der Meldung von der Tastenereigniserfassungssektion 30 entfernt
die Tastenereignisentfernungssektion 26 ein spezielles
Tastenereignis, das in der Tastenereigniszurückhaltesektion 24 zurückgehalten
wird, wenn dies durch die Erfassung eines speziellen Tastenereignisses
durch die Tastenereignissteuervorrichtung 12 ausgelöst wird.
-
Z.
B. in dem Fall, wenn das Tastenereignis b zu entfernen ist, wenn
dies durch die Erfassung des Tastenereignisses a ausgelöst wird,
wird die Tastenereignisentfernungssektion 26 das Tastenereignis
b aus der Tastenereigniszurückhaltesektion 24 entfernen,
falls es darin zurückgehalten
wird, wenn die Erfassung des Tastenereignisses a von der Tastenereigniserfassungssektion 30 gemeldet
wird. Falls das Tastenereignis b nicht in der Tastenereigniszurückhaltesektion 24 zurückgehalten
wird, führt
die Tastenereignisentfernungssektion 26 nichts durch. Es wäre ferner
möglich,
eine Vielzahl von zu entfernenden Tastenereignissen zu benennen,
z. B. Entfernen der Tastenereignisse b und c, wenn das Tastenereignis
a erfasst wird.
-
Derartige
Tastendereignisentfernungsregeln werden festgelegt, wenn es notwendig
ist, ein vorheriges Tastenereignis zu streichen, wenn ein bestimmtes
Tastenereignis erfasst wird. Z. B. in dem Fall, wenn ein kurz gedrücktes Tastenereignis
und ein lang gedrücktes
Tastenereignis jeweils als Reaktion auf ein kurzes Drücken und
ein langes Drücken
einer Taste zu melden sind, wäre
es notwendig, wenn ein lang gedrücktes
Tastendruckereignis erfasst worden ist, das unmittelbar zuvor gemeldete
kurz gedrückte Tastendruckereignis
zu streichen. Daher wird eine Regel festgelegt, die besagt, dass
ein kurz gedrücktes
Tastendruckereignis entfernt wird, wenn dies durch ein lang gedrücktes Tastendruckereignis
ausgelöst
wird. In ähnlicher
Weise ist eine Regel festgelegt, die besagt, dass ein kurz gedrücktes Tastenloslassereignis
entfernt wird, wenn ein lang gedrücktes Tastenloslassereignis
erfasst wird. In dem Fall, wenn es Loslass- und Tastendruckereignistypen
gibt, kann durch Entfernen des in der Tastenereigniszurückhaltesektion 24 zurückgehaltenen
Tastenloslassereignisses, wenn ein Tastendruckereignis erfasst wird, eine
Funktionsstörung
wegen eines in der Tastenereigniszurückhaltesektion 24 verbleibenden
Loslassereignisses, das für
eine vorhergehende Tastenbedienung ausgelöst wurde, verhindert werden.
-
Falls
die Tastenereignissteuervorrichtung 12 nach einem bestimmten
Zeitraum keine Tastenereignisse erfasst hat, entfernt die Beseitigungssektion
für zurückgehaltenen
Inhalt 28 alle in der Tastenereigniszurückhaltesektion 24 zurückgehaltenen
Tastenereignisse. Die Beseitigungssektion für zurückgehaltenen Inhalt weist einen
Zeitgeber zum Messen einer Zeitdauer auf, für die keine Tastenereignisse
erfasst worden sind, und wird durch Neufestlegen des Zeitgebers,
jedes Mal, wenn die Tastenereignissteuervorrichtung 12 ein
Tastenereignis auf der Grundlage einer Meldung von der Tastenereigniserfassungssektion 30 erfasst,
und durch Beseitigen des in der Tastenereigniszurückhaltesektion 24 zurückgehaltenen
Inhalts, wenn die Zeit des Zeitgebers einen vorbestimmten Wert übersteigt,
der vorher festgelegt wurde, implementiert.
-
Nachstehend
wird ein spezielles Beispiel beschrieben. In dem Fall, wenn ein
kurz gedrücktes Tastenereignis
und ein lang gedrücktes
Tastenereignis jeweils als Reaktion auf ein kurzes Drücken und ein
langes Drücken
einer Taste zu melden sind, kann die Tastenbedienung nicht allein
mit einem kurz gedrückten
Tastendruckereignis festgestellt werden, weil danach eine lang gedrückte Bedienung
durchgeführt
werden könnte.
Eine kurz gedrückte
Bedienung kann nur festgestellt werden, wenn sowohl ein kurz gedrücktes Tastendruckereignis
und ein lang gedrücktes
Tastenloslassereignis gesichert werden. Daher wird in der Bestimmungssektion
für gelieferte Tastenereignisse 22 eine
Tastenereignisfeststellung mit zwei Bestandteilen, einem kurz gedrückten Tastendruckereignis
und einem lang gedrückten Tastenloslassereignis,
festgelegt. Die Bestimmungssektion für gelieferte Tastenereignisse 22 vergleicht
das durch die Tastenereigniszurückhaltesektion 24 zurückgehaltene
Tastenereignis und die Tastenereignisfeststellungsreihe, die festgelegt
worden ist, und stellt diese Tastenereignisse als die zu liefernden Tastenereignisse
fest, falls alle Tastenereignisse, die zu einer gegebenen Tastenereignisfeststellungsreihe gehören, in
der Tastenereigniszurückhaltesektion 24 zurückgehalten
werden.
-
Z.
B. in dem Fall, wenn drei Tastenereignisse a, b und c und ein aus
einem Tastenereignis a und einem Tastenereignis b bestehendes Paar
X und ein aus einem Tastenereignis a und einem Tastenereignis c
bestehendes Paar Y als Tastenereignisfeststellungsreihen festgelegt
sind, führt
die Bestimmungssektion für
gelieferte Tastenereignisse 22 nichts durch, während nur
das Tastenereignis a in der Tastenereigniszurückhaltesektion 24 zurückgehalten wird.
Danach, wenn das Tastenereignis b zusätzlich in der Tastenereigniszurückhaltesektion 24 zurückgehalten
wird, werden alle Tastenereignisse a und b, die zur Tastenereignisfeststellungsreihe
X gehören, zurückgehalten.
Daher werden die Tastenereignisse a und b als die zu liefernden
Tastenereignisse festgestellt; diese Tastenereignisse a und b werden
von der Tastenereigniszurückhaltesektion 24 entfernt;
und diese Tastenereignisse a und b werden an die Tastenereigniskonvertierungssektion 20 gemeldet.
Falls das Tastenereignis c zum zurückgehaltenen Inhalt hinzugefügt wird,
wenn das Tastenereignis a zurückgehalten
wird, sind in ähnlicher
Weise alle Tastenereignisse a und c, die zur Tastenereignisfeststellungsreihe
Y gehören,
gesichert worden, und daher werden die Tastenereignisse a und c
als die zu liefernden Tastenereignisse festgestellt. Falls das Tastenereignis
a zum zurückgehaltenen
Inhalt hinzugefügt
wird, wenn die Tastenereignisse b und c zurückgehalten werden, werden die
Tastenereignisse, die zur zu liefernden Tastenereignisfeststellungs reihe
X oder Y gehören,
durch ein Verfahren des Bildens eines Paars, das aus einem der Tastenereignisse
b und c, das zuerst zurückzuhalten
war, und dem Tastenereignis a besteht, oder durch ein Verfahren
des Zuweisens von Prioritäten
an die Tastenereignisfeststellungsreihen bestimmt.
-
In
dem Fall, wenn vier Tastenereignisse a, b, c und d und ein aus dem
Tastenereignis a und dem Tastenereignis b bestehendes Paar X und
ein aus dem Tastenereignis a und dem Tastenereignis c bestehendes
Paar Y als Tastenereignisfeststellungsreihen festgelegt sind, werden
die Tastenereignisse a, b und c, welche die Bestandteile der Paare
X und Y sind, in der Tastenereigniszurückhaltesektion 24 zurückgehalten,
aber das Tastenereignis d wird an die Tastenereignisliefersektion 18 über die
Tastenereigniskonvertierungssektion 20 geliefert, ohne
in der Tastenereigniszurückhaltesektion 24 zurückgehalten zu
werden.
-
Wie
vorher als ein zu lösendes
Problem erwähnt,
falls es notwendig ist, eine Änderung
des Zustands einer Taste unmittelbar an das Grabb-Fenster 10 zu
melden, kann dies durch Deaktivieren der Tastenereignisfeststellungsreihe,
zu welcher das Tastenereignis gehört, dessen unmittelbare Erfassung
gewünscht
wird, realisiert werden. Mit Bezug auf das obige Beispiel, falls
die unmittelbare Erfassung des Tastenereignisses b gewünscht wird,
kann durch Deaktivieren der Tastenereignisfeststellungsreihe X das
Tastenereignis b an die Tastenereignisliefersektion 18 über die
Tastenereigniskonvertierungssektion 20 gemeldet werden,
ohne in der Tastenereigniszurückhaltesektion 24 zurückgehalten
zu werden und ohne von der Tastenereignisliefersektion 18 an
das Grabb-Fenster 10 gemeldet zu werden.
-
Als
nächstes
wird ein Ablauf eines Tastenereignisgrabbanfragevorgangs nach Ausführungsform 1
der vorliegenden Erfindung mit Bezug auf das Ablaufdiagramm von 8 beschrieben.
-
Zuerst
nimmt die Grabb-Annahmesektion 14 ein Tastenereignis an,
das durch das Grabb-Fenster 10 zum Grabben angefragt worden
ist, speichert diese Anfrage und meldet der Grabb-Anfragesektion 16, dass
eine Anfrage angenommen worden ist (S10).
-
Als
nächstes
erfasst die Grabb-Anfragesektion 16 den Typ des Tastenereignisses,
das zum Grabben angefragt worden ist, und prüft, ob dieses Tastenereignis
in einer der Tastenereignisanfragereihen enthalten ist, die in der
Grabb-Anfragesektion 16 zurückgehalten werden (S12). Falls
das Tastenereignis in einer der Tastenereignisanfragereihen enthalten
ist (S12, JA), stellt die Grabb-Anfragesektion 16 eine Anfrage
an das Fenstersystem 32 zum Grabben aller Bestandteile
der Tastenereignisanfragereihe, in der das Tastenereignis enthalten
ist (S14). Andererseits, falls das Tastenereignis nicht in einer
der Tastenereignisanfragereihen enthalten ist (S302, NEIN), stellt die
Grabb-Anfragesektion 16 eine Anfrage an das Fenstersystem 32,
nur dieses Tastenereignis zu grabben (S16).
-
Als
nächstes
wird ein Ablauf eines Tastenereignisfiltervorgangs nach Ausführungsform
1 mit Bezug auf das Ablaufdiagramm von 9 beschrieben.
-
Zuerst
erfasst die Tastenereigniserfassungssektion 30 ein Tastenereignis
vom Fenstersystem 32, meldet das erfasste Tastenereignis
an die Bestimmungssektion für
gelieferte Tastenereignisse 22 und meldet der Beseitigungssektion
für zurückgehaltenen Inhalt 28 und
der Tastenereignisentfernungssektion 26, dass ein Tastenereignis
erfasst worden ist (S18). Dann setzt die Beseitigungssektion für zurückgehaltenen
Inhalt 28 den Zeitgeber zurück (S20). Falls ein Tastenereignis
erfasst wird, das eine Entfernung auslösen wird, prüft die Tastenereignisentfernungssektion 26,
ob ein zu entfernendes Tastenereignis in der Tastenereigniszurückhaltesektion 24 zurückgehalten wird
(S22), und falls ein solches zurückgehalten
wird (S22, JA), entfernt die Tastenereignisentfernungssektion 26 das
zu entfernende Tastenereignis aus der Tastenereigniszurückhaltesektion 24 (S24).
-
Als
nächstes
prüft die
Bestimmungssektion für
gelieferte Tastenereignisse 22, ob sich das erfasste Tastenereignis
alleine in der Feststellung der Bedienung ergibt, oder mit anderen
Worten, ob die Tastenbedienung nicht festgestellt werden kann bis
ein anderes Tastenereignis gemeldet wird (S26). Dies wird auf der
Grundlage bestimmt, ob das erfasste Tastenereignis in einer der
Tastenereignisfeststellungsreihen enthalten ist, die in der Bestimmungssektion
für gelieferte
Tastenereignisse 22 festgelegt sind. Falls das erfasste
Tastenereignis in keiner der Tastenereignisfeststellungsreihen enthalten
ist (S26, JA), fährt
der Vorgang bei Schritt S38 fort. Andererseits, falls das erfasste
Tastenereignis in einer der Tastenereignisfeststellungsreihen enthalten
ist (S26, NEIN), wird das erfasste Tastenereignis in der Tastenereigniszurückhaltesektion 24 zurückgehalten (S28).
-
Als
nächstes
prüft die
Bestimmungssektion für
gelieferte Tastenereignisse 22, ob es unter den festgelegten
Tastenereignisfeststellungsreihen ein Paar (Tastenereignisfeststellungsreihe)
gibt, wobei alle Tastenereignisse, welche dessen Bestandteile bilden,
in der Tastenereigniszurückhaltesektion 24 zurückgehalten
werden (S30). Falls ein derartiges Paar besteht, werden alle zu
diesem Paar gehörende Tastenereignisse
als die zu liefernden Tastenereignisse bestimmt, und diese zu liefernden
Tastenereignisse werden an die Tastenereigniskonvertierungssektion 20 gemeldet
(S32). Danach prüft
die Tastenereigniskonvertierungssektion 20, ob eine Regel zum
Kon vertieren dieser zu liefernden Tastenereignisse besteht (S34),
und, falls eine derartige Regel gefunden wird, konvertiert diese
zu liefernden Tastenereignisse nach dieser Regel (S36).
-
Die
Tastenereignisliefersektion 18 liefert an das Grabb-Fenster 10:
das durch die Prüfung
von Schritt S26 als nicht in einer der Tastenereignisfeststellungsreihen
enthalten bestimmte Tastenereignis; das zu liefernde konvertierte
Tastenereignis, falls eine Konvertierung in Schritt S36 angewandt
wurde; oder das in Schritt S32 bestimmte zu liefernde Tastenereignis,
falls keine Konvertierung von Schritt S36 angewandt wurde (S38).
-
Obwohl
im Ablaufdiagramm von 9 nicht gezeigt, beseitigt die
Beseitigungssektion für
zurückgehaltenen
Inhalt 28 den in der Tastenereigniszurückhaltesektion 24 zurückgehaltenen
Inhalt, falls der Zählwert
des Zeitgebers, der die Zeitdauer misst, für welche keine Tastenereignisse
vom Fenstersystem 32 an die Tastenereignissteuervorrichtung 12 gemeldet
worden sind, einen vorbestimmten Wert übersteigt.
-
Da
die Tastenereignissteuervorrichtung 12, wenn notwendig,
vorübergehend
die Tastenereignisse zurückhält, welche
vom Fenstersystem 32 während
einer Tastenbedingung ausgelöst
werden, und Tastenereignisse an das Grabb-Fenster 10 meldet, nachdem
die Tastenbedienung festgestellt wird, kann, wie oben beschrieben
ist, eine Funktionsstörung
wegen der Tastenereignisse, die während einer Tastenbedienung
ausgelöst
werden, verhindert werden.
-
In
dem Fall, wenn es notwendig ist, eine Änderung im Zustand einer Taste
unmittelbar an das Grabb-Fenster 10 zu melden, kann dies
durch Deaktivieren von Tastenereignisfeststellungs reihe(n) realisiert
werden, welche in der Bestimmungssektion für gelieferte Tastenereignisse 22 festgelegt
ist/sind.
-
Die
Beseitigungssektion für
zurückgehaltenen
Inhalt 28 und die Tastenereigniskonvertierungssektion 20 können weggelassen
werden, falls sie unnötig
sind.
-
Es
ist ferner möglich,
eine Funktion zu realisieren, die äquivalent zu jener der Tastenereignisentfernungssektion 26 ist,
ohne die Tastenereignisentfernungssektion 26 vorzusehen.
In diesem Fall wird eine lieferbar/unlieferbar-Markierung, die kennzeichnet,
welches Tastenereignis zu liefern ist und welches Tastenereignis
nicht zu liefern ist, wenn alle zu einer Tastenereignisfeststellungsreihe
gehörende
Tastenereignisse gesichert worden sind, zu jedem Teil von Tastenereignisinformationen 48 hinzugefügt, aus welchen
die Tastenereignisfeststellungsreihe besteht. Dann, wenn alle zu
der Tastenereignisfeststellungsreihe 102 gehörenden Tastenereignisse
in der Tastenereigniszurückhaltesektion 24 gesichert
worden sind (S30, JA), bestimmt die Bestimmungssektion für gelieferte
Tastenereignisse 22 bei S32 nur diejenigen, deren lieferbar/unlieferbar-Markierungen "lieferbar" als die zu liefernden
Tastenereignisse kennzeichnen, und entfernt die als "unlieferbar" gekennzeichneten
von der Tastenereigniszurückhaltesektion 24.
Im Ergebnis können
die Tastenereignisse, die während
einer Tastenbedienung erzeugt werden, unterdrückt werden, ohne die Tastenereignisentfernungssektion 26 vorzusehen,
und es ist möglich,
nur die Tastenereignisse zu liefern, die das Tastenbedienungsergebnis
definieren.
-
(Ausführungsform
2)
-
Als
Ausführungsform
2 der vorliegenden Erfindung wird eine beispielhafte Tastenereignissteuervorrichtung
beschrieben, die einen Tastenereignisfiltervorgang durchführt, der
sich von jenem der Ausführungsform
1 unterscheidet.
-
10 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach Ausführungsform 2 der vorliegenden
Erfindung veranschaulicht. In 10 sind
Komponentenelemente, die ähnlich
zu jenen in 1 gezeigten sind, durch die
gleichen Bezugszeichen bezeichnet, und deren Beschreibungen werden
weggelassen.
-
Die
in 10 gezeigte Tastenereignissteuervorrichtung 68 umfasst
eine Grabb-Annahmesektion 14, eine Grabb-Anfragesektion 16,
eine Tastenereignisliefersektion 18, eine Tastenereigniserzeugnissektion 70,
eine Tastendruckereignisablagesektion 72, eine Tastenloslassereignisablagesektion 74 und
eine Tastenereigniserfassungssektion 30.
-
Die
Grabb-Annahmesektion 14, die Grabb-Anfragesektion 16,
die Tastenereignisliefersektion 18 und die Tastenereigniserfassungssektion 30 sind ähnlich zu
jenen in Ausführungsform
1 und deren Beschreibungen werden weggelassen.
-
Die
Tastenloslassereignisablagesektion 74 speichert abzulegende
Ziele intern, und legt unter den von der Tastenereigniserfassungssektion 30 gemeldeten
Tastenereignissen, alle Tastenloslassereignisse ab, die mit den
Ablagezielen übereinstimmen. Da
die Tastenloslassereignisablagesektion 74 jedes Tastenloslassereignis
ablegt, kennzeichnet die Tastenloslassereignisablagesektion 74 das
Tastenereignis außerdem
nicht länger
als ein Ablageziel. In einem Anfangszustand gibt es kein Ablageziel
in der Tastenloslassereignisablagesektion 74. Wenn ein Tastendruckereignis
(angenommen ein "L-Tastendruckereignis") von der Tastenereigniserfassungssektion 30 gemeldet
wird, wird das S-Tastenloslassereignis, welches ein Gegenstück des S-Tastendruckereignisses
ist, als ein Ablage ziel festgelegt, falls ein Tastendruckereignis
(angenommen ein "S-Tastendruckereignis") besteht, welches
mit einer Druckzeit auszulösen
ist, die kürzer
ist als die Druckzeit, mit welcher das L-Tastendruckereignis ausgelöst wird.
-
Es
wird ein beispielhafter Vorgang der Tastenloslassereignisablagesektion 74 beschrieben.
Vorausgesetzt, dass ein Tastendruckereignis X0 erzeugt wird, wenn
eine gegebene Taste X gedrückt wird;
ein Tastendruckereignis X1 erzeugt wird, nachdem sie für eine Zeit
T1 gedrückt
gehalten wird; ein Tastendruckereignis X2 erzeugt wird, nachdem
sie für
eine Zeit T2 (T1 < T2)
gedrückt
gehalten wird; ein Tastenloslassereignis X0 erzeugt wird, wenn die
Taste X losgelassen wird; ein Tastenloslassereignis X1 erzeugt wird,
wenn die Taste X1 losgelassen wird, nachdem sie für die Zeit
T1 oder mehr gedrückt
worden ist; und ein Tastenloslassereignis X2 erzeugt wird, wenn
die Taste X losgelassen wird, nachdem sie für die Zeit T2 oder mehr gedrückt worden
ist, führt
die Tastenloslassereignisablagesektion 74 dann nichts zu
dem Zeitpunkt durch, wenn das Tastendruckereignis X0 erfasst wird,
weil es kein Tastenereignis gibt, das mit einer kürzeren Druckzeit
als dieser erzeugt werden könnte.
Wenn das Tastendruckereignis X1 erfasst wird, legt die Tastenloslassereignisablagesektion 74 das
korrespondierende Tastenloslassereignis X0 als ein Ablageziel fest,
da ein Tastendruckereignis (Tastendruckereignis X0) besteht, das
mit einer kürzeren
Druckzeit als jener für
das Tastendruckereignis X1 erzeugt werden könnte. Wenn das Tastendruckereignis
X2 erfasst wird, legt die Tastenloslassereignisablagesektion 74 ihre
korrespondierenden Tastenloslassereignisse X0 und X1 als Ablageziele
fest, da Tastendruckereignisse (Tastendruckereignis X0 und Tastendruckereignis
X1) bestehen, die mit einer kürzeren
Druckzeit als jener für
das Tastendruckereignis X2 erzeugt werden könnten. Danach, wenn das Tastenloslassereignis
X0 erfasst wird, legt die Tastenloslassereignisablagesektion 74 das
Tastenloslassereignis X0 ab, falls das Tastenloslassereignis X0
als Ablageziel festgelegt worden ist, und kennzeichnet danach das
Tastenloslassereignis X0 nicht länger
als ein Ablageziel. In ähnlicher
Weise wird, wenn das Tastenloslassereignis X1 erfasst wird, das
Tastenloslassereignis X1 abgelegt, falls das Tastenloslassereignis
X1 als Ablageziel festgelegt worden ist, und danach ist das Tastenloslassereignis
X1 nicht länger
als ein Ablageziel gekennzeichnet.
-
Nachdem
von der Tastenloslassereignisablagesektion 74 ein anderes
Tastenloslassereignis erfasst wird, als das Tastenloslassereignis,
das auszulösen
ist, wenn eine gegebene Taste losgelassen wird, nachdem für die längste Zeit
gedrückt
worden ist, erzeugt die Tastenereigniserzeugungssektion 70 ein
Tastendruckereignis, das zu diesem Tastenloslassereignis korrespondiert,
und meldet es an die Tastenereignisliefersektion 18. Mit
Bezug auf das obige Beispiel ist das auszulösende Tastenereignis für die Taste
X, wenn sie losgelassen wird, nachdem sie für die längste Zeit gedrückt worden
ist, das Tastenloslassereignis X2. Daher erzeugt die Tastenereigniserzeugungssektion 70 das
Tastendruckereignis X0 beim Erfassen des Tastenloslassereignisses
X0 und erzeugt das Tastendruckereignis X1 beim Erfassen des Tastenloslassereignisses
X1. Dies gilt in ähnlicher
Weise für
jede andere Taste; z. B., falls Loslassereignisse für die Taste
Y die Tastenloslassereignisse Y0 bis Y4 sind, und falls das Tastenloslassereignis
Y4 zu erzeugen ist, wenn die Taste losgelassen wird, nachdem sie
für die
längste
Zeit gedrückt
worden ist, erzeugt die Tastenereigniserzeugungssektion 70 jeweils
die Tastendruckereignisse Y0 bis Y3 als Reaktion auf die Erfassung
der Tastenloslassereignisse Y0 bis Y3.
-
Die
Tastendruckereignisablagesektion 72 legt jedes andere Tastendruckereignis
als das Tastendruckereignis, welches auszulösen ist, wenn jede Taste für die längste Zeit
gedrückt wird,
ab. Mit Bezug auf das obige Beispiel ist das für die Taste X auszulösende Tastendruckereignis,
wenn sie für
die längste
Zeit gedrückt
wird, das Tastendruckereignis X2. Wenn das Tastendruckereignis X0
und das Tastendruckereignis X1 erfasst werden, legt sie die Tastendruckereignisablagesektion 72 daher
ab. Dies gilt in ähnlicher
Weise für
jede andere Taste; z. B., falls die Druckereignisse für die Taste
Y die Tastendruckereignisse Y0 bis Y4 sind, und falls das Tastendruckereignis
Y4 zu erzeugen ist, wenn sie für
die längste Zeit
gedrückt
wird, legt die Tastendruckereignisablagesektion 72 die
Tastendruckereignisse Y0 bis Y3 ab, wenn sie erfasst werden.
-
Als
nächstes
wird ein Ablauf eines Tastenereignisfiltervorgangs durch die Tastenereignissteuervorrichtung
nach Ausführungsform
2 der vorliegenden Erfindung mit Bezug auf das Ablaufdiagramm von 11 beschrieben.
In 11 sind alle Schritte, die ähnlich zu jenen in 9 sind,
durch die gleichen Bezugszeichen bezeichnet.
-
Zuerst
erfasst die Tastenereigniserfassungssektion 30 ein Tastenereignis
vom Fenstersystem 32 und meldet das erfasste Tastenereignis
an die Tastenloslassereignisablagesektion 74 (S18). Die
Tastenloslassereignisablagesektion 74 prüft, ob das
erfasste Tastenereignis ein Tastendruckereignis ist (S40). Falls
es ein Tastendruckereignis ist (S40, JA), legt die Tastenloslassereignisablagesektion 74 in sich
ein Tastenloslassereignis als ein Ablageziel fest, welches ein Gegenstück eines
Tastendruckereignisses ist, das mit einer kürzeren Druckzeit als jener
für das
Tastendruckereignis erzeugt werden könnte, und meldet das erfasste
Tastendruckereignis an die Tastendruckereignisablagesektion 72 (S42).
Dann prüft die
Tastendruckereignisablagesektion 72, ob das von der Tastenloslassereignisablagesektion 74 gemeldete
Tastendruckereignis eines ist, welches zu erzeugen ist, wenn die
Taste für
die längste
Zeit gedrückt wird
(S44). Falls das Tastendruckereignis nicht jenes ist, das zu erzeugen
ist, wenn für
die längste
Zeit gedrückt
(S44, NEIN), wird es abgelegt (S46). Falls das Tastendruckereignis
jenes ist, das zu erzeugen ist, wenn für die längste Zeit gedrückt (S44,
JA) wird, wird dieses Tastendruckereignis an die Tastenereignisliefersektion 18 gemeldet.
-
Andererseits,
falls das durch die Tastenereigniserfassungssektion 30 erfasste
Tastenereignis ein Tastenloslassereignis ist (S40, NEIN), prüft die Tastenloslassereignisablagesektion 74,
ob das erfasste Tastenloslassereignis als Ablageziel festgelegt worden
ist (S48). Falls das erfasste Tastenloslassereignis als Ablageziel
festgelegt worden ist (S48, JA), legt die Tastenloslassereignisablagesektion 74 das
Tastenloslassereignis ab (S50) und kennzeichnet das Tastenloslassereignis
danach nicht länger
als Ablageziel (S52). Andererseits, falls das erfasste Tastenloslassereignis
nicht als Ablageziel eingestellt worden ist (S48, NEIN), meldet
die Tastenloslassereignisablagesektion 74 das erfasste
Tastenloslassereignis an die Tastenereigniserzeugungssektion 70.
Dann prüft
die Tastenereigniserzeugungssektion 70, ob das von der
Tastenloslassereignisablagesektion 74 gemeldete Tastenloslassereignis
eines ist, das zu erzeugen ist, wenn die Taste für die längste Zeit gedrückt wird
(S54), und falls es jenes ist, das zu erzeugen ist, wenn für die längste Zeit
gedrückt
(S54, JA), meldet sie nur das Tastenereignis, welches von der Tastenloslassereignisablagesektion 74 an
die Tastenereignisliefersektion 18 gemeldet worden ist. Falls
es nicht jenes ist, das zu erzeugen ist, wenn die Taste für die längste Zeit
gedrückt
wird (S54, NEIN), erzeugt die Tastenereigniserzeugungssektion 70 ein Tastendruckereignis,
das ein Drücken
derselben Taste als das zum gemeldeten Tastenloslassereignis korrespondierende,
und meldet das Tastenereignis, das von der Tastenloslassereignisablagesektion 74 gemeldet
worden ist, und das erzeugte Tastenloslassereignis an die Tastenereignisliefersektion 18 (S56).
-
Zuletzt
liefert die Tastenereignisliefersektion 18 das Tastenereignis,
welches von der Tastenereigniserzeugungssektion 70 oder
der Tastendruckereignisablagesektion 72 an das Grabb-Fenster 10 gemeldet
worden ist (S38).
-
Durch
den obigen Vorgang werden z. B., in dem Fall, wenn Tastendruck-
und Loslassereignisse korrespondierend zu einem kurzen Drücken (0),
einem mittleren Drücken
(1) und einem langen Drücken
(2) einer gegebenen Taste auszulösen
sind, nur Tastenereignisse, welche ein langes Drücken (Drücken 2, Loslassen 2) anzeigen,
an die Tastenereignisliefersektion 18 gemeldet, falls die
Taste, wie in 12 gezeigt ist, lang gedrückt wird;
nur Tastenereignisse, welche ein mittleres Drücken (Drücken 1, Loslassen 1) an die
Tastenereignisliefersektion 18 gemeldet, falls die Taste,
wie in 13 gezeigt ist, mittel gedrückt wird;
und nur Tastenereignisse, welche ein kurzes Drücken (Drücken 0, Loslassen 0) an die
Tastenereignisliefersektion 18 gemeldet, falls die Taste,
wie in 14 gezeigt ist, kurz gedrückt wird.
-
In
dem Fall, in dem es zwei Tastenereignistypen gibt, d. h. Loslassen
und Drücken,
und sie als Ereignisse auf verschiedenen Tasten in Abhängigkeit der
Länge,
für welche
eine Taste gedrückt
wird, zu melden sind, unterdrückt
die Tastenereignissteuervorrichtung daher die Tastenereignisse,
welche während
der Tastenbedienung ausgelöst
werden, und meldet die festgestellten Tastenereignisse, wenn die Tastenbedienung
festgestellt wird, wodurch eine Funktionsstörung wegen Tastenereignissen,
welche während
einer Tastenbedienung ausgelöst
werden, verhindert werden kann.
-
In
dem Fall, wenn es notwendig ist, unmittelbar eine Änderung
im Zustand einer Taste zu melden, kann dies durch Nichtverwenden
der Tastenereignissteuervorrichtung 12 realisiert werden,
so dass das Grabb-Fenster 10 direkt Tastenereignisse vom
Fenstersystem 32 erfasst.
-
(Ausführungsform
3)
-
Als
Ausführungsform
3 der vorliegenden Erfindung wird eine beispielhafte Tastenereignissteuervorrichtung
beschrieben, die einen Tastenereignisfiltervorgang durchführt, welcher
sich von jenen der Ausführungsformen
1 und 2 unterscheidet.
-
15 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach Ausführungsform 3 der vorliegenden
Erfindung veranschaulicht. In 15 werden Komponentenelemente,
welche ähnlich
zu jenen in 1 gezeigten sind, durch die
gleichen Bezugszeichen bezeichnet, und deren Beschreibungen werden weggelassen.
-
Die
Tastenereignissteuervorrichtung von 15 umfasst
eine Grabb-Annahmesektion 14, eine Grabb-Anfragesektion 16,
eine Tastenereignisliefersektion 18, eine Tastenereigniszurückhaltesektion 24,
eine Tastendruckereignisverarbeitungssektion 78, eine Tastenloslassereignisverarbeitungssektion 80 und
eine Tastenereigniserfassungssektion 82.
-
Die
Grabb-Annahmesektion 14, die Grabb-Anfragesektion 16,
die Tastenereignisliefersektion 18 und die Tastenereigniszurückhaltesektion 24 sind ähnlich zu
jenen in Ausführungsform
1 und deren Beschreibungen werden weggelassen.
-
Die
Tastenereigniserfassungssektion 82 erfasst ein Tastenereignis,
welches vom Fenstersystem 32 gemeldet wird, und gibt es
an die Tastendruckereignisverarbeitungssektion 78 oder
die Tastenloslassereignisverarbeitungssektion 80, abhängig vom
Typ des Tastenereignisses, ab. Die Tastendruckereignisverarbeitungssektion 78 gibt
ein lang gedrücktes
Tastendruckereignis an die Tastenereignisliefersektion 18 ab
und gibt ein kurz gedrücktes
Tastendruckereignis an die Tastenereigniszurückhaltesektion 24 ab.
Die Tastenloslassereignisverarbeitungssektion 80 gibt ein
lang gedrücktes
Tastenloslassereignis an die Tastenereignisliefersektion 18 ab. Wenn
ein kurz gedrücktes
Tastenloslassereignis empfangen wird, falls ein Tastendruckereignis
in der Tastenereigniszurückhaltesektion 24 zurückgehalten wird,
gibt die Tastenloslassereignisverarbeitungssektion 80 dieses
Tastendruckereignis und das empfangene kurz gedrückte Tastenloslassereignis
an die Tastenereignisliefersektion 18 ab.
-
Als
nächstes
wird ein Ablauf eines Tastenereignisfiltervorgangs durch die Tastenereignissteuervorrichtung
nach Ausführungsform
3 der vorliegenden Erfindung mit Bezug auf das Ablaufdiagramm von 16 beschrieben.
In 16 werden alle Schritte, welche ähnlich zu
jenen von 9 sind, durch die gleichen Bezugszeichen
bezeichnet.
-
Zuerst
erfasst die Tastenereigniserfassungssektion 82 ein Tastenereignis
vom Fenstersystem 32 (S18), und falls das erfasste Tastenereignis
ein Tastendruckereignis ist, gibt sie es an die Tastendruckereignisverarbeitungssektion 78 ab,
und falls es ein Tastenloslassereignis ist, gibt sie es an die Tastenloslassereignisverarbeitungssektion 80 ab
(S58).
-
Falls
das Tastenereignis an die Tastendruckereignisverarbeitungssektion 78 abgegeben
wird, bestimmt die Tastendruckereignisverarbeitungssektion 78,
ob das Tastenereignis, welches von der Tastenereigniserfassungssektion 30 abgegeben
worden ist, ein lang gedrücktes
Tastendruckereignis ist (S60). Falls es kein lang gedrücktes Tastendruckereignis
ist (S60, NEIN), wird das Tastenereignis in der Tastenereigniszurückhaltesektion 24 gespeichert (S66).
Andererseits, falls das abgegebene Tastenereignis ein lang gedrücktes Tastendruckereignis
ist (S60, JA), wird das in der Tastenereigniszurückhaltesektion 24 gespeicherte
Tastendruckereignis entfernt (S62), das lang gedrückte Tastendruckereignis
an die Tastenereignisliefersektion 18 abgegeben und die Tastenereignisliefersektion 18 liefert
das abgegebene Tastenereignis an das Grabb-Fenster 10 (S64).
-
Falls
das Tastenereignis an die Tastenloslassereignisverarbeitungssektion 80 abgegeben
wird, bestimmt die Tastenloslassereignisverarbeitungssektion 80,
ob das Tastenereignis, welches von der Tastenereigniserfassungssektion 82 abgegeben
worden ist, ein lang gedrücktes
Tastenloslassereignis ist (S68). Falls es kein lang gedrücktes Tastenloslassereignis
ist (S68, NEIN), wird geprüft,
ob ein Tastendruckereignis in der Tastenereigniszurückhaltesektion 24 zurückgehalten
wird (S72). Falls ein Tastendruckereignis zurückgehalten wird (S72, JA),
wird das Tastendruckereignis von der Tastenereigniszurückhaltesektion 24 zurückgeholt
und an die Tastenereignisliefersektion 18 abgegeben, und
ferner wird das von der Tastenereigniserfassungssektion 82 abgegebene
Tastenloslassereignis an die Tastenereignisliefersektion 18 abgegeben,
und die Tastenereignisliefersektion 18 liefert das abgegebene
Tastenereignis an das Grabb-Fenster 10 (S76). Andererseits,
falls kein Tastendruckereignis in der Tastenereigniszurückhaltesektion 24 zurückgehalten
wird (S72, NEIN), wird das Tastenloslassereignis, welches von der
Tastenereigniserfassungssektion 82 abgegeben worden ist,
abgelegt (S74). Falls das Tastenereignis, welches von der Tastenereigniserfassungssektion 82 abgegeben
worden ist, ein lang gedrücktes
Tastenloslassereignis ist, wird das Tastenereignis an die Tastenereignisliefersektion 18 abgegeben
und die Tastenereignislie fersektion 18 liefert das abgegebene
Tastenereignis an das Grabb-Fenster 10 (S70).
-
Somit
unterdrückt
die Tastenereignissteuervorrichtung in dem Fall, wenn es zwei Tastendrucktypen
gibt, d. h. Loslassen und Drücken,
und diese als Ereignisse auf unterschiedlichen Tasten in Abhängigkeit
der Länge,
für welche
eine Taste gedrückt
wird, zu melden sind, die Tastenereignisse, welche während der
Tastenbedienung ausgelöst
werden, und meldet die festgestellten Tastenereignisse, wenn die Tastenbedienung
festgestellt wird, wodurch eine Funktionsstörung wegen der Tastenereignisse,
welche während
einer Tastenbedienung ausgelöst
werden, verhindert werden kann.
-
(Ausführungsform
4)
-
Es
wird ein beispielhafte Tastenereignissteuervorrichtung nach Ausführungsform
4 der vorliegenden Erfindung beschrieben.
-
17 ist
ein Blockschaltbild, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach Ausführungsform 4 der vorliegenden
Erfindung veranschaulicht. In 17 werden Komponentenelemente,
welche ähnlich
zu jenen in 1 gezeigten sind, durch die
gleichen Bezugszeichen bezeichnet und deren Beschreibungen werden weggelassen.
-
Ein
Eingabetastenereignis, welches vom Fenstersystem 32 gemeldet
worden ist, wird über
die Tastenereignissteuervorrichtung 96 an ein Grabb-Fenster 10,
ein Fokusfenster 34, ein anderes Fenster 84 oder
andere Tastenereignissteuervorrichtungen 83a, 83b gemeldet.
In dem Fall, wenn eine Vielzahl von Grabb-Fenstern besteht, wird
für jedes Grabb-Fenster
eine Tastenereignissteuervorrichtung verwendet, um Attribute (z.
B. Tastenereignisfeststellungsreihen und Tastenereignisse, die zu
grabben sind) der Tastenereignissteuervorrichtung 96 hinsichtlich
jedes Grabb-Fensters festlegen zu können. Das andere Fenster 84 ist
ein anderes Fenster, welches weder das Grabb-Fenster noch das Fokusfenster
ist. Die anderen Tastenereignissteuervorrichtungen 83a, 83b sind
andere Tastenereignissteuervorrichtungen als die Tastenereignissteuervorrichtung 96 und
werden jeweils von einem anderen Grabb-Fenster als dem Grabb-Fenster 10 verwendet.
Das Grabb-Fenster 10 kann das Fokusfenster 34 sein.
-
Die
Tastenereignissteuervorrichtung 96 in 17 umfasst
eine Grabb-Annahmesektion 14, eine Übertragungsanfragesektion 86,
eine Suchsektion 88, eine Grabb-Anfragesektion 16,
eine Sektion zur verteilten Tastenereignislieferung 90,
eine Tastenereignisübertragungssektion 92,
eine Sendesektion 94, eine Tastenereigniskonvertierungssektion 20, eine
Bestimmungssektion für
gelieferte Tastenereignisse 22, eine Tastenereigniszurückhaltesektion 24, eine
Tastenereignisentfernungssektion 26, eine Beseitigungssektion
für zurückgehaltenen
Inhalt 28 und eine Tastenereigniserfassungssektion 30.
-
Die
Grabb-Annahmesektion 14, die Grabb-Anfragesektion 16,
die Tastenereigniskonvertierungssektion 20, die Bestimmungssektion
für gelieferte
Tastenereignisse 22, die Tastenereigniszurückhaltesektion 24,
die Tastenereignisentfernungssektion 26, die Beseitigungssektion
für zurückgehaltenen
Inhalt 28 und die Tastenereigniserfassungssektion 30 sind ähnlich zu
jenen in Ausführungsform 1
und deren Beschreibungen werden weggelassen.
-
Die
Grabb-Anfragesektion 16 hält alle der Vielzahl von Tastenereignissen
zurück,
welche bis zu der Zeit ausgelöst
werden können,
zu welcher ein zum Bedienungsergebnis des Nutzers korrespondierendes
Tastenereignis als Tastenereignisanfragereihen festgestellt wird.
Falls ein Tastenereignis, welches ein Grabb-Ziel ist, das von der
Grabb-Annahmesektion 14 gemeldet worden ist, zu einer der
Tastenereignisanfragereihen gehört,
stellt die Grabb-Anfragesektion 16 eine Anfrage an das
Fenstersystem 32, alle zu jener Tastenereignisanfragereihe
gehörende
Tastenereignisse zu grabben. Falls auf der Grundlage der Reaktion
des Fenstersystems 32 herausgefunden wird, dass das zum
Grabben angefragte Tastenereignis bereits durch eine andere Tastenereignissteuervorrichtung
gegrabbt worden ist, meldet die Grabb-Anfragesektion 16 dies
an die Suchsektion 88.
-
Nach
Empfangen einer Meldung von der Grabb-Anfragesektion 16,
dass die Grabb-Anfrage zum Fenstersystem 32 fehlgeschlagen
ist, weil das durch das Grabb-Fenster 10 angefragte Tastenereignis
bereits durch eine der anderen Tastenereignissteuervorrichtungen
gegrabbt worden ist, sucht die Suchsektion 88 unter der
Vielzahl von anderen Tastenereignissteuervorrichtungen nach der
Tastenereignissteuervorrichtung, welcher das Grabben des durch das
Grabb-Fenster 10 angefragten Tastenereignisses bereits
gelungen ist. Ein spezielles Beispiel dieses Suchverfahrens kann
ein Verfahren des Speicherns eines Identifizierers einer Tastenereignissteuervorrichtung,
deren Grabb-Anfrage in einem geteilten Speicher oder dgl. erfolgreich
gewesen ist, und des Durchführens
einer Untersuchung des geteilten Speichern sein, ein Verfahren des
Sendens einer Suchanfrage nach allen Tastenereignissteuervorrichtungen
beim Durchführen
einer Suche und Erhaltens von Reaktionen dazu, oder dgl.
-
Die Übertragungsanfragesektion 86 fragt
bei der Tastenereignissteuervorrichtung, welcher bereits das Grabben
gelungen ist (es wird hierin angenommen, dass dies die andere Tastenereignissteuervorrichtung 83a ist),
wie durch die Suchsektion 88 herausgefunden, dem Tastenereignis,
für welches
das Grabb-Fenster 10 das
Grabben angefragt hat, zu erlauben, an die Tastenereigniserfassungssektion 30 der
Tastenereignissteuervorrichtung 96 übertragen zu werden. Die Meldung
dieser Übertragungsanfrage wird
durch Verwenden einer Ereignisübermittlungsfunktion
realisiert, welche durch das Fenstersystem, z. B. XSendEvent im
Falle des XWindowSystems, einem geteilten Speicher oder dgl. bereitgestellt
wird.
-
Die
Sendesektion 94 hält
die zu sendenden Tastenereignistypen zurück, und wenn ein zu sendendes
Tastenereignis von der Tastenereigniskonvertierungssektion 20 erfasst
wird, sendet sie das Tastenereignis an alle Fenster, die gegenwärtig bestehen.
-
Nach
Empfangen einer Übertragungsanfrage
von der Übertragungsanfragesektion
der anderen Tastenereignissteuervorrichtung 83b speichert
die Tastenereignisübertragungssektion 92 das
angefragte Tastenereignis und den Identifizierer der Tastenereignissteuervorrichtung 83b,
welche die Anfrage durchgeführt
hat, und überträgt nach
Erfassen des angefragten Tastenereignisses dieses Tastenereignis
an die Tastenereignissteuervorrichtung 83b, welche die
Anfrage durchgeführt
hat.
-
Die
Sektion zur verteilten Tastenereignislieferung 90 liefert
das/die zu liefernde(n) Tastenereignis(se), wie durch die Bestimmungssektion
für gelieferte
Tastenereignisse 22 bestimmt (oder die Tastenereignisse
nach der Konvertierung, falls das/die zu liefernde(n) Tastenereignis(se)
durch die Tastenereigniskonvertierungssektion 20 konvertiert
wurde(n)) an das Grabb-Fenster 10 und das Fokusfenster 34. Die
Sektion zur verteilten Tastenereignislieferung 90 meldet
das Tastenereignis, für
welches die Grabb-Annahmesektion 14 eine Anfrage vom Grabb-Fenster 10 angenommen
hat, an das Grabb-Fenster 10 und jedes andere Tastenereignis an
das Fokusfenster 34. Die Bestimmung des Fokusfensters wird
durch eine Fokusfenstererfassungsfunktion des Fenstersystem, z.
B. XGetWindowFocus im Fall des XWindowSystems realisiert.
-
Als
nächstes
wird ein Ablauf eines Tastenereignisgrabbanfragevorgangs nach Ausführungsform 4
der vorliegenden Erfindung mit Bezug auf das Ablaufdiagramm von 18 beschrieben.
In 18 sind die Schritte, welche ähnlich zu jenen in 8 sind,
durch die gleichen Bezugszeichen bezeichnet und deren Beschreibungen
werden weggelassen.
-
Schritt
S10, Schritt S12, Schritt S14 und Schritt S16 sind gleich zu jenen
in Ausführungsform 1.
-
Nach
dem Stellen einer Anfrage an das Fenstersystem 32 zum Grabben
eines Tastenereignisses bei Schritt S14 oder Schritt S16 prüft die Grabb-Anfragesektion 16 das
Ergebnis der Grabb-Anfrage
(S78). Falls die Grabb-Anfrage fehlgeschlagen ist, weil das angefragte
Tastenereignis bereits durch eine andere Tastenereignissteuervorrichtung
gegrabbt worden ist (S78, JA), meldet die Grabb-Anfragesektion 16 dies
an die Suchsektion 88. Als Reaktion auf diese Meldung sucht
die Suchsektion 88 nach der Tastenereignissteuervorrichtung, welche
das angefragte Tastenereignis gegrabbt hat (S80).
-
Zuletzt
meldet die Übertragungsanfragesektion 86 eine Übertragungsanfrage
an die durch die Suchsektion 88 gefundene Tastenereignissteuervorrichtung
(hierin wird angenommen, dass dies die andere Tastenereignissteuervorrichtung 83a ist)
zum Übertragen
des Tastenereignisses, für
welches eine Grabb-Anfrage durch das Grabb-Fenster 10 durchgeführt worden
ist, wodurch der Vorgang beendet wird (S82).
-
Als
nächstes
wird der Vorgang der Tastenereigniserfassung nach Ausführungsform
4 beschrieben. In Ausführungsform
4 unterscheidet sich der Vorgang von Schritt S111 in 6 von
jenem in Ausführungsform
1. Die Vorgänge,
nachdem ein Tastenereignis erfasst wird und bis zu liefernde Tastenereignisse bestimmt
werden, sind gleich zu S101 bis S110 in 6 und deren
Beschreibungen werden weggelassen.
-
19 zeigt
ein Ablaufdiagramm des Tastenereignisliefervorgangs nach Ausführungsform
4. Zuerst prüft
die Sendesektion 94 ein zu lieferndes Tastenereignis, wie
von der Tastenereigniskonvertierungssektion 20 empfangen,
zum Bestimmen, ob es unter den intern gespeicherten Tastenereignistypen enthalten
ist, die zu senden sind (S84). Falls das zu liefernde Tastenereignis
unter jenen zu sendenden enthalten ist (S84, JA), liefert die Sendesektion 94 das
zu liefernde Tastenereignis an alle durch das Fenstersystem 32 angezeigten
Fenster, wodurch der Vorgang beendet wird (S68).
-
Andererseits,
falls das zu liefernde Tastenereignis nicht unter jenen zu sendenden
enthalten ist (S84, NEIN), meldet die Sendesektion 94 das
zu liefernde Tastenereignis an die Tastenereignisübertragungssektion 92.
Nach Empfangen der Meldung prüft
die Tastenereignisübertragungssektion 92,
ob eine Übertragungsanfrage
für das
zu liefernde empfangene Tastenereignis von einer anderen Tastenereignissteuervorrichtung
durchgeführt
wird (S88). Falls eine Übertragungsanfrage
für das
zu liefernde Tastenereignis durchgeführt wird (S88, JA), überträgt die Tastenereignisübertragungssektion 92 das
zu liefernde Tastenereignis an die Tastenereignissteuervorrichtung,
welche die Übertragungsanfrage
durchgeführt
hat (hierin wird angenommen, dass dies die andere Tastenereignissteuervorrichtung 83b ist)
und meldet dieses zu liefernde Tastenereignis an die Sektion zur
verteilten Tastenereignislieferung (S90). Als nächstes prüft die Sektion zur verteilten
Tastenereignislieferung 90 das von der Tastenereignisübertragungssektion 92 empfangene
zu liefernde Tastenereignis, um zu prüfen, ob es unter den durch
das Grabb-Fenster 10 angefragten Tastenereignistypen enthalten
ist (S92). Falls das zu liefernde Tastenereignis durch das Grabb-Fenster 10 zum
Grabben angefragt worden ist (S92, JA), überträgt die Sektion zur verteilten
Tastenereignislieferung 90 das zu liefernde Tastenereignis
an das Grabb-Fenster 10 (S94). Andererseits, falls das
zu liefernde Tastenereignis durch das Grabb-Fenster 10 nicht
zum Grabben angefragt worden ist (S92, NEIN), liefert die Sektion
zur verteilten Tastenereignislieferung 90 das zu liefernde
Tastenereignis an das Fokusfenster 34 (S96).
-
Wie
oben beschrieben, wird es durch übertragen
von Tastenereignissen zwischen Tastenereignissteuervorrichtungen
für eine
Vielzahl von Fenstern möglich,
das gleiche Tastenereignis zur gleichen Zeit zu grabben.
-
Die
Sendesektion 94, die Suchsektion 88 und die Übertragungsanfragesektion 86 können weggelassen
werden, falls sie unnötig
sind.
-
In
der vorliegenden Ausführungsform
können
die den Tastenereignisfiltervorgang betreffenden Elemente, die in
Ausführungsform
1 beschrieben sind (d. h. die Tastenereigniskonvertierungssektion 20,
die Bestimmungssektion für
gelieferte Tastenereignisse 22, die Tastenereigniszurückhaltesektion 24,
die Tastenereignisentfernungssektion 26 und die Beseitigungssektion
für zurückgehaltenen
Inhalt 28) durch jene ersetzt werden, welche in Ausführungsform
2 beschrieben wurden (d. h. die Tastenereigniserzeugungssektion 70,
die Tastendruckereignisablagesektion 72 und die Tastenloslassereignisablagesektion 74).
-
(Ausführungsform
5)
-
Es
wird eine beispielhafte Tastenereignissteuervorrichtung nach Ausführungsform
5 der vorliegenden Erfindung beschrieben.
-
20 ist
ein Blockdiagramm, welches eine beispielhafte Konfiguration einer
Tastenereignissteuervorrichtung nach Ausführung 5 der vorliegenden Erfindung
veranschaulicht. In 20 sind Komponentenelemente,
welche ähnlich
zu jenen in 1 und 17 gezeigten
sind, durch die gleichen Bezugszeichen bezeichnet und deren Beschreibungen werden
weggelassen.
-
Ausführungsform
5 unterscheidet sich von Ausführungsform
3 darin, dass anstelle einer Tastenereignisliefersektion 18 eine
Sektion zur verteilten Tastenereignislieferung vorgesehen ist. Die
Sektion zur verteilten Tastenlieferung 90 untersucht die Grabb-Annahmesektion 14 dahingehend,
ob ein von der Tastenloslassereignisverarbeitungssektion 78 oder
der Tastendruckereignisverarbeitungssektion 80 abgegebenes
Tastenereignis durch das Grabb-Fenster 10 zum Grabben angefragt
worden ist, und falls es zum Grabben angefragt worden ist, liefert
sie das Tastenereignis an das Grabb-Fenster 10. Andererseits,
falls das abgegebene Tastenereignis durch das Grabb-Fenster 10 nicht
zum Grabben angefragt worden ist, wird das Tastenereignis zum Fokusfenster 34 geliefert.
-
Die
Tastenereignissteuervorrichtung in jeder der obigen Ausführungsformen
1 bis 5 kann typischerweise durch Verwenden eines Computers implementiert
werden, der eine Berechnungseinheit und Speichergeräte, wie
eine Festplatte und ein RAM, und ein Programm, welches bewirkt,
dass der Computer die Vorgänge
der jeweiligen Schritte der oben beschriebenen Ablaufdiagramme ausführt, umfasst. Das
Programm kann auf einem Speichergerät vorgespeichert sein, oder
kann über
ein Kommunikationsnetzwerk an die Berechnungseinheit geliefert werden,
oder kann über
ein Aufzeichnungsmedium, wie eine CD-R oder eine DVD, an die Berechnungseinheit
geliefert werden.
-
Industrielle Anwendbarkeit
-
Nach
der vorliegenden Erfindung kann z. B. in dem Fall, wenn nur vorbestimmte
Tastenereignisse, die von einem Fenstersystem ausgelöst werden, als
Vorbedingung an ein bestimmtes Fenster zu liefern sind, eine Funktionsstörung verhindert
werden.