DE69719404T2 - Verfahren und System zur Erkennung von Zeigern - Google Patents

Verfahren und System zur Erkennung von Zeigern

Info

Publication number
DE69719404T2
DE69719404T2 DE69719404T DE69719404T DE69719404T2 DE 69719404 T2 DE69719404 T2 DE 69719404T2 DE 69719404 T DE69719404 T DE 69719404T DE 69719404 T DE69719404 T DE 69719404T DE 69719404 T2 DE69719404 T2 DE 69719404T2
Authority
DE
Germany
Prior art keywords
pointer
identifier
shape
cursor
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69719404T
Other languages
English (en)
Other versions
DE69719404D1 (de
Inventor
John Mark Zetts
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE69719404D1 publication Critical patent/DE69719404D1/de
Application granted granted Critical
Publication of DE69719404T2 publication Critical patent/DE69719404T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)
  • Position Input By Displaying (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die vorliegende Erfindung betrifft im weiten Sinne Computer und Datenverarbeitungssysteme und insbesondere die Verarbeitung von Bildschirmzeigern in solchen Systemen.
  • Mittels stiftsensitiver Softwareerweiterungen für Betriebssysteme wie das bevorzugte Betriebssystem IBM OS/2 wird es Benutzern ermöglicht, Zeichen direkt in ein Fenster zu schreiben, die anschließend zur Erkennung an eine Erkennungsmaschine für Handzeichnungen und Handschriften geschickt werden. Wenn das Fenster nicht Text in Form eines Bearbeitungsfeldes oder eines Texteingabefensters aufnimmt, behandelt das System die handgezeichneten Formen normalerweise als freie Formen. Stiftbasierte Systeme werden in der US- Patentschrift 5,252,951 von Alan Tannenbaum et al. unter dem Titel "Graphical User Interface with Gesture Recognition in a Multi-Application Environment" allgemein beschrieben.
  • Vereinbarungsgemäß zeigen Felder, die Text aufnehmen, dies durch Anzeige einer I-Mausschreibmarke an, wenn sich die Schreibmarke (pointer, Zeiger) in dem Textfeld befindet. Das Betriebssystem stellt für derartige Anwendungen eine Standard- I-Mausschreibmarke bereit, so dass 1) alle Eingabefelder ein einheitliches Aussehen aufweisen und 2) der Softwareentwickler nicht für jede Anwendung mit dem jeweiligen Produkt eine andere Version einer I-Mausschreibmarke entwerfen und vertreiben muss.
  • Die Software für stiftbasierte Systeme bedient sich dieser Standard-I-Schreibmarke, damit der Benutzer weiß, dass er ein Textfeld beschreibt. Sobald der Benutzer den Stift in die Nähe der Bildschirmoberfläche bringt und zu schreiben beginnt, bewegt das System den Mauszeiger zur Position des Stifts. Befindet sich der Mauszeiger in einem Textfeld, nimmt die Schreibmarke die Form eines I an. Das stiftbasierte System kennt die Schreibmarkenform nicht, sondern vergleicht die Kennung der Schreibmarke mit der Kennung der dem System bereitgestellten L-Schreibmarke. Wenn die Kennungen zusammenpassen, unternimmt das System zweierlei. Erstens ändert das System die Form des Mauszeigers vom I zu einem Stift, um den Benutzer darauf aufmerksam zu machen, dass er oder sie mit dem Stift direkt in das Feld schreibt. Zweitens behandelt das System die handgeschriebenen Zeichen zunächst nicht als freie Formen, sondern als Text. Die Untersuchung der Kenndaten der Anwendung, des Fensters und des Zeigers zum Interpretieren der Schreibstift- oder Stifteingabe wird unter dem Titel "Data Interpretation Techniques for a Pen-based Computer" im IBM Technical Disclosure Bulletin, Bd. 38, Nr. 09, September 1995 erörtert.
  • Das Problem dabei besteht jedoch darin, dass viele Anwendungsentwickler ihre Anwendungen mit ihrer eigenen Version einer I-Schreibmarke versehen.
  • Diese Entwickler gestalten ihre eigenen I-Schreibmarkenformen aus ästhetischen Gründen oder einfach, um ihre Anwendungen von denen der Wettbewerber abzuheben. In allen Fällen behalten diese speziellen I-Schreibmarken jedoch eine gewisse Ähnlichkeit zur Form der I-Schreibmarke, um eine gute Erkennbarkeit zu gewährleisten. Ansonsten könnte die Wahrnehmung von Benutzern gestört werden, so dass sie nicht erkennen, dass die Felder Texteingaben aufnehmen. Die meisten Textverarbeitungsanwendungen werden mit ihren eigenen I- Schreibmarken angeboten, wodurch die gegenwärtig vorhandenen Verfahren von stiftbasierten Systemen zum Vergleichen der Schreibmarkenkennungen in ihrer Wirkung eingeschränkt sind.
  • Ein weiteres Problem liegt bei stiftbasierten Systemen im Erkennen, wann eine Anwendung nicht in der Lage ist, Maus- und Tastatureingaben zu verarbeiten. Eine Anwendung signalisiert diese Bedingung "aktiv" normalerweise durch Anzeigen eines Sanduhrzeigers. Dies ist normalerweise eine ausreichende Anzeige, und der Benutzer stoppt die Eingaben, bis der Sanduhrzeiger wieder als Pfeilzeiger erscheint. Wenn die Anwendung aktiv ist, liegen jedoch in vielen Fällen bereits Maus- oder Tastatureingaben in der Systemwarteschlange vor, die an andere aktive Anwendungen auf dem Desktop gerichtet sind. Jedoch können sowohl unter dem Betriebssystem OS/2 als auch unter Windows die Eingaben in der Warteschlange nicht aus der Warteschlange entfernt und der Zielanwendung zugestellt werden, bevor die aktive Anwendung dem Betriebssystem effektiv mitgeteilt hat, dass sie der Warteschlange keine Maus- und Tastatureingaben mehr entnimmt. Das Betriebssystem verfügt im Gegensatz zum Benutzer über keine Möglichkeit zu erfahren, ob sich die Anwendung gegenwärtig in einem aktiven Zustand befindet. Wenn das Betriebssystem über eine Möglichkeit verfügte, diesen aktiven Zustand zu erkennen, könnte es sich einen Überblick über die Eingaben in die Warteschlange und die Ausgaben aus der Warteschlange verschaffen und alle Maus- und Tastatureingaben weiterleiten, die an eine nichtaktive Anwendung gerichtet waren, welche auf eine Benutzereingabe wartete. Dies würde zur Beseitigung eines Verarbeitungsengpasses führen.
  • In EP 0 533 607 wird ein Verfahren und ein System zum Bereitstellen der Mehrfachauswahl von Text auf einem Computerbildschirm beschrieben. Die Mehrfachauswahl von Text besteht in der Bereitstellung der Bearbeitungsfunktionen Bereichsauswahl durch Ziehen (Swipe) und Eingeben (Type). Ein normaler Eingabecursor wird gezeigt, um anzuzeigen, wo neuer Eingabetext eingefügt wird. Wenn der Text ausgewählt wurde, ist er als besonders wichtig gekennzeichnet. Der Cursor wechselt von der Normalform zu einer anderen Cursorform. Die zweite Cursorform unterscheidet sich von der Normalform und zeigt so an, dass durch die nachfolgende Eingabe die Auswahl- und Eingabeoperationen mit dem ausgewählten Text aktiviert werden.
  • In EP O 678 805 werden ein Verfahren und ein System für mehrfache Bildschirmzeiger für Computer mit grafischen Benutzeroberflächen beschrieben. Ein Zeigersystem stellt mehrfache Bildschirmzeiger bereit, die durch einen Computerbenutzer erzeugt und erkannt werden können, indem jeder Zeiger einer bestimmten Anwendung zugeordnet wird. Ein Benutzer kann einzelne Zeiger und Zeigerorte durch Auswählen eines Zeigerkennzeichners abrufen.
  • Gemäß der vorliegenden Erfindung wird nun ein Verfahren zum Betreiben eines stiftbasierten Computersystems bereitgestellt, um zu gewährleisten, dass der Standort eines aktuellen Zeigers in der Lage ist, Zeichendaten aufzunehmen, wobei der aktuelle Zeiger eine aktuelle Zeigerkennung und das System eine systemspezifische I-Schreibmarke mit einer zugehörigen systemspezifischen I-Schreibmarkenkennung aufweist, wobei das Verfahren die folgenden Schritte umfasst: Ermitteln, ob die aktuelle Zeigerkennung gleich der systemspezifischen I- Schreibmarkenkennung ist; Ermitteln, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als I-Schreibmarke markiert ist, wenn die aktuelle Zeigerkennung nicht gleich der systemspezifischen I- Schreibmarkenkennung ist; und Feststellen, ob der Zeiger eine T-Form aufweist, wenn die aktuelle Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist; Ändern des Zeigers zu einem Zeiger mit Stiftform (1570), um anzuzeigen, dass das Computersystem zur Aufnahme von Texteingaben bereit ist, als Reaktion auf die Gleichheit der Zeigerkennung und der systemspezifischen I-Schreibmarkenkennung oder wenn die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als eine I-Schreibmarke markiert (1785) ist oder wenn der Zeiger eine I-Schreibmarkenform aufweist.
  • Vorzugsweise umfasst das Verfahren den folgenden Schritt: Ändern des Zeigers zu einer stiftförmigen Schreibmarke, wenn die Zeigerkennung gleich der systemspezifischen I- Schreibmarkenkennung ist, und/oder wenn die Zeigerkennung in der Tabelle von Zeigerkennungen enthalten und in der Tabelle als eine I-Schreibmarke markiert ist.
  • Vorzugsweise stellt das Verfahren ein Verfahren zum Ermitteln bereit, ob ein systemfremder Zeiger gleich einem systemspezifischen Zeiger ist, wobei der systemfremde Zeiger eine Zeigerkennung aufweist und das Verfahren die folgenden Schritte umfasst:
  • Ermitteln, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als dem systemspezifischen Zeiger gleichwertig markiert ist; und Ermitteln anhand der Form des systemfremden Zeigers, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, wenn die Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist.
  • Bei einer bevorzugten Ausführungsform wird, wenn der systemfremde Systemzeiger anhand der Form als dem systemspezifischen Zeiger gleichwertig ermittelt wurde, diese Zeigerkennung zu der Tabelle der Zeigerkennungen hinzugefügt und als dem systemspezifischen Zeiger gleichwertig markiert. Vorzugsweise umfasst der Schritt des Ermittelns anhand der Form, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, den Schritt des Vergleichens des systemfremden Zeigers mit einer vordefinierten Maske. Unter bestimmten Umständen kann der systemfremde Zeiger zuerst mit einer vorbestimmten Grobmaske verglichen werden; wenn alle Bildelemente des systemfremden Zeigers innerhalb der Grobmaske liegen, wird der systemfremde Zeiger mit einer vordefinierten Feinmaske verglichen. Wenn alle Bildelemente des systemfremden Zeigers innerhalb der Maske (bzw. dieser Feinmaske) liegen, umfasst dieses Verfahren vorzugsweise die Schritte des Zählens der Anzahl der den systemfremden Zeiger ausmachenden Bildelemente sowie des Feststellens, ob der systemfremde Zeiger eine vorbestimmte Symmetriebedingung erfüllt, wenn die gezählte Anzahl der den systemfremden Zeiger ausmachenden Bildelemente größer als eine vorbestimmter Schwellwert ist.
  • Unter einem anderen Aspekt stellt die Erfindung ein stiftbasiertes Computersystem bereit, das eine Anzeige und eine auf der Anzeige darstellbare systemspezifische I- Schreibmarke aufweist, wobei die systemspezifische I- Schreibmarke eine systemspezifische I-Schreibmarkenkennung aufweist, und das ein System zum Feststellen aufweist, dass ein durch einen Zeiger mit einer Zeigerkennung angezeigter Ort auf der Anzeige in der Lage ist, Zeichendaten aufzunehmen, wobei das Computersystem Folgendes umfasst:
  • ein Mittel zum Feststellen, ob die Zeigerkennung gleich der systemspezifischen I-Schreibmarkenkennung ist;
  • ein Mittel zum Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als eine I-Schreibmarke markiert ist, wenn die Zeigerkennung nicht mit der systemspezifischen I-Schreibmarkenkennung übereinstimmt; und
  • ein Mittel zum Feststellen, ob der Zeiger eine I-Form aufweist, wenn die Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist.
  • Vorzugsweise stellt das System ein Computersystem mit einer Anzeige und einem System zum Feststellen bereit, dass ein systemfremder Zeiger mit einer Zeigerkennung einem systemspezifischen Zeiger gleichwertig ist, wobei das System Folgendes umfasst:
  • ein Mittel zum Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als dem systemspezifischen Zeiger gleichwertig markiert ist; und
  • ein Mittel zum Feststellen anhand der Form des systemfremden Zeigers, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, wenn die Zeigerkennung nicht in der Tabelle von Zeigerkennungen enthalten ist.
  • Unter einem weiteren Aspekt wird in einem stiftbasierten Computersystem, das eine systemspezifische I-Schreibmarke mit einer systemspezifischen I-Schreibmarkenkennung aufweist, ein Verfähren zum Feststellen bereitgestellt, ob ein Ort eines Zeigers in der Lage ist, Zeichendaten aufzunehmen, wobei der Zeiger eine Zeigerkennung aufweist und das Verfähren die folgenden durch den Computer ausgeführten Schritte umfasst:
  • Feststellen, ob die Zeigerkennung gleich der systemspezifischen I-Schreibmarkenkennung ist;
  • Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als eine I- Schreibmarke markiert ist, wenn die Zeigerkennung nicht mit der systemspezifischen I-Schreibmarkenkennung übereinstimmt; und
  • Feststellen, ob der Zeiger eine I-Form aufweist, wenn die Zeigerkennung nicht in der Tabelle von Zeigerkennungen enthalten ist.
  • Vorzugsweise umfasst das Verfahren die Schritte des Hinzufügens der Zeigerkennung zu der Tabelle von Zeigerkennungen, des Markierens der Zeigerkennung als eine I- Schreibmarke und des Umwandelns des Zeigers in einen stiftförmigen Zeiger, wenn ermittelt wurde, dass der Zeiger eine I-Form aufweist.
  • Bei der bevorzugten Ausführungsform enthält der Schritt des Feststellens, ob der Zeiger eine I-Form aufweist, die Schritte des Vergleichens des Zeigers mit einer vordefinierten Maske mit der Form einer I-Schreibmarke; des Zählens der Anzahl der Bildelemente des Zeigers, wenn alle Bildelemente des Zeigers innerhalb der Maske mit der Form einer I-Schreibmarke liegen; und des Umwandelns des Zeigers in einen stiftförmigen Zeiger, wenn die Anzahl der Bildelemente des Zeigers größer als ein vorbestimmter Schwellwert ist.
  • Dadurch können durch verschiedene Computerprogrammanwendungen angezeigte Mauszeiger entsprechend ihrem visuellen Erscheinungsbild bewertet werden, um den dynamischen Zustand oder die Umgebung der Anwendungen festzustellen. Durch die genaue Erkennung der Zeigerform kann sichergestellt werden, dass Zeiger mit ungeeigneter Form mit hoher Sicherheit abgewiesen werden. Die Erkennung der Zeigerform erfolgt auf eine rechnerisch effektive Weise, so dass der für den Erkennungsprozess erforderliche zusätzliche Systemaufwand sich nicht störend auf die Verfügbarkeit und Leistungsfähigkeit des Computers auswirkt und der Prozess in Computern mit unterschiedlichen Bildschirmauflösungen und Farbdarstellungen ausgeführt werden kann.
  • Bei einer bevorzugten Ausführungsform stellt das System fest, ob ein systemfremder Zeiger einem systemspezifischen Zeiger gleichwertig ist. Sowohl der systemspezifische als auch der systemfremde Zeiger weisen eine Zeigerkennung auf. Zuerst stellt das System fest, ob die Zeigerkennung des systemfremden Zeigers in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als dem systemspezifischen Zeiger gleichwertig markiert ist. Wenn die Zeigerkennung des systemfremden Zeigers nicht in der Tabelle von Zeigerkennungen enthalten ist, ermittelt das System anhand der Form des systemfremden Zeigers, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist.
  • Bei dieser Ausführungsform stellt das System anhand der Form ferner fest, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, indem es den systemfremden Zeiger mit einer vordefinierten Maske vergleicht. Wenn alle Bildelemente des systemfremden Zeigers innerhalb der Maske liegen, stellt das System fest, ob die Anzahl der Bildelemente, aus denen der systemfremde Zeiger besteht, größer als ein vorbestimmter Schwellwert ist. Wenn das System feststellt, dass der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, fügt das System die Zeigerkennung des systemfremden Zeigers zur Tabelle der Zeigerkennungen hinzu und markiert die Zeigerkennung als dem systemspezifischen Zeiger gleichwertig.
  • Bei einer weiteren bevorzugten Ausführungsform kann das System feststellen, ob der systemfremde Zeiger dem systemspezifischen Zeiger gleichwertig ist, indem der systemfremde Zeiger zuerst mit einer vordefinierten Grobmaske verglichen wird. Wenn alle Bildelemente des systemfremden Zeigers innerhalb der Grobmaske liegen, vergleicht das System den systemfremden Zeiger anschließend mit einer Feinmaske. Wenn alle Bildelemente des systemfremden Zeigers innerhalb der Feinmaske liegen, stellt das System fest, ob die Anzahl der Bildelemente, aus denen der systemfremde Zeiger besteht, einen vorbestimmten Schwellwert überschreitet. Dann kann das System feststellen, ob der systemfremde Zeiger eine vorbestimmte Symmetriebedingung erfüllt.
  • Die obigen Ausführungen besitzen besondere Bedeutung bei einem stiftbasierten Multitasking-Computersystem, bei dem einer einzigen Task die Aufgabe zufällt, Benutzereingaben wie Tastatur-, Maus- oder Stiftaktionen den verschiedenen gleichzeitig ausgeführten benutzergeführten Computerprogrammen zuzuleiten.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren zum Bewerten der Form von Zeigern in einem Computersystem bereit, das die folgenden Schritte umfasst: Bereitstellen einer vorbestimmten Maske der Zeigerform; und Vergleichen der vorliegenden Zeigerform mit der vordefinierten Maske einer Zeigerform, um festzustellen, ob die vorliegende Zeigerform der Maske der vorbestimmten Zeigerform entspricht.
  • Bei einer bevorzugten Ausführungsform umfasst der Schritt des Vergleichens die folgenden Schritte: Nachweisen, dass alle Bildelemente der vorliegenden Zeigerform ungleich Null innerhalb der Maske der vorbestimmten Zeigerform liegen; Nachweisen, dass die Anzahl der Bildelemente der vorliegenden Zeigerform ungleich Null einen vorbestimmten Schwellwert überschreitet; und Nachweisen, dass die vorliegende Zeigerform eine oder mehrere vorbestimmte Symmetriebedingungen erfüllt, damit die Übereinstimmung zwischen der vorliegenden Zeigerform und der Maske der vorbestimmten Zeigerform gegeben ist. Das für die Vergleichsform verwendete genaue Prüfverfahren kann natürlich den Benutzeranforderungen angepasst werden; unter bestimmten Umständen kann es zum Beispiel zulässig sein, dass ein kleiner Teil der Bildelemente der vorliegenden Zeigerform außerhalb der Maske der vorbestimmten Zeigerform liegt. Das endgültige Prüfverfahren dürfte von der jeweiligen Form abhängen, mit der der Vergleich durchgeführt werden soll.
  • Bei der bevorzugten Ausführungsform werden die Maske der vorbestimmten Zeigerform und die vorliegende Zeigerform als Bitmap gespeichert, und das Verfahren umfasst ferner die Schritte des Umwandelns der Bitmap der vorliegenden Zeigerform vom 8-Bit-Format in das 32-Bit-Format vor dem Vergleichsschritt und die Anfangsschritte des Ausrichtens der linken und der unteren Kante der Bildelemente der vorliegenden Zeigerform ungleich Null. Dies vereinfacht den nachfolgenden Vergleich.
  • Bei der bevorzugten Ausführungsform umfasst das Verfahren auch die folgenden Schritte: Verwalten einer Tabelle von Kennungen möglicher Zeigerformen, wobei der Eintrag für jede Form eine Markierung enthält, die anzeigt, ob die Form der Maske der vorbestimmten Zeigerform entspricht; und Hinzufügen eines Eintrags für die vorliegende Zeigerform zu der Tabelle und entsprechendes Setzen der zugehörigen Markierung nach dem Vergleichsschritt. Die Zeigerform wird dann durch die folgenden Schritte bewertet: Zuerst Feststellen, ob für die Kennung der vorliegenden Zeigerform ein Eintrag vorliegt; Untersuchen der Markierung für diesen Eintrag nach deren Auffinden, um festzustellen, ob die vorliegende Zeigerform der Maske der vorbestimmten Zeigerform entspricht; und Ausführen des Vergleichsschritts, wenn kein derartiger Eintrag gefunden wurde. Durch diese Tabelle kann das System sich erinnern, ob eine bestimmte Zeigerform zuvor bereits untersucht worden ist und sich so die wiederholte Verarbeitung derselben Zeigerform ersparen.
  • Die vorbestimmte Zeigermaske kann der Form einer Sanduhr entsprechen (und so den Zustand "aktiv" anzeigen). In diesem Fall unterstützt das Computersystem üblicherweise mindestens eine erste und eine zweite Anwendung und weist eine Eingabewarteschlange auf, in der Eingabedaten für die erste und die zweite Anwendung gespeichert sind; dabei weist die erste Anwendung der aktuellen Zeigerform die Form einer Sanduhr zu, wenn an der Spitze der Warteschlange Eingabedaten für die erste Anwendung vorliegen, die erste Anwendung jedoch im Augenblick zu beschäftigt ist, um diese Eingabedaten zu verarbeiten, und das Computersystem reagiert auf die Feststellung, dass die aktuelle Zeigerform der Form einer Sanduhr entspricht, indem dem Rest der Warteschlange Daten für die zweite Anwendung entnommen werden. Durch diesen Ansatz kann verhindert werden dass eine aktive erste Anwendung eine zweite Anwendung blockiert.
  • Die Maske der vorbestimmten Zeigerform kann auch einer I-Form entsprechen, die üblicherweise zum Anzeigen verwendet wird, dass Texteingaben möglich sind. Bei einem stiftbasierten Computersystem ändert das Computersystem, nachdem festgestellt wurde, dass die aktuelle Zeigerform einer I-Form entspricht, die aktuelle Zeigerform vorzugsweise in eine Stiftform, die anzeigt, dass im Augenblick unter Verwendung des Stiftes Text eingegeben werden kann.
  • Es ist natürlich klar, dass ein einziges Computersystem mehrere vordefinierte Maskenformen, beispielsweise eine Sanduhr und eine I-Form, speichern und die aktuelle Zeigerform mit jeder dieser vordefinierten Maskenformen vergleichen kann.
  • Im Folgenden werden beispielhaft bevorzugte Ausführungsformen der Erfindung genauer unter Bezug auf die folgenden Zeichnungen beschrieben:
  • Fig. 1 ist ein Hardware-Blockschaltbild der bevorzugten Ausführungsform;
  • Fig. 2 ist eine Architekturdarstellung der wichtigsten Softwarekomponenten der bevorzugten Ausführungsform;
  • Fig. 3A und 3B sind bildliche Darstellungen eines bearbeitbaren Textfensters, das einen Zeiger mit I-Form bzw. einen Zeiger mit Stiftform zeigt;
  • Fig. 4 ist eine bildliche Darstellung; die verschiedene Zeiger mit I-Form veranschaulicht;
  • Fig. 5A, 5B und 5C veranschaulichen eine I-Schreibmarke als Zeigerbild (5A), als Bild mit Ausrichtung der linken Kante (5B) und als Bild mit Ausrichtung der unteren Kante (5C);
  • Fig. 6 veranschaulicht eine im 8-Bit-Format und im 32-Bit- Format dargestellte Bitmap;
  • Fig. 7 veranschaulicht Zeigermasken mit I-Form für eine Anzeige VGA-Auflösung;
  • Fig. 8 veranschaulicht Zeigermasken mit I-Form für eine Anzeige mit XCA-Auflösung;
  • Fig. 9 ist eine Darstellung einer Zeigertabelle gemäß der bevorzugten Ausführungsform;
  • Fig. 10-18 sind Ablaufdiagramme einer Softwareimplementierung des Erkennungsverfahrens für die I- Zeigerform der bevorzugten Ausführungsform;
  • Fig. 19-22 sind Ablaufdiagramme einer Softwareimplementierung einer alternativen Ausführungsform, bei der die Erkennung der Form des Sanduhrzeigers durchgeführt wird, um festzustellen, wann sich Anwendungen in einem aktiven oder nichtverfügbaren Zustand befinden;
  • Fig. 23 ist ein Ablaufdiagramm von Zeigereinträgen, die aus der Zeigertabelle entfernt werden, wenn eine Anwendung geschlossen wird;
  • Fig. 24 ist eine bildliche Darstellung der Zeigerform Sanduhr ("Anwendung aktiv") von Windows ;
  • Fig. 25A und 25B sind Darstellungen der Grob- und Feinmaske für die Zeigerform Sanduhr;
  • Fig. 26 veranschaulicht eine Fehlausrichtung zwischen dem Zeigerbild Sanduhr und der Feinmaske;
  • Fig. 27 veranschaulicht die Symmetrielinien und Quadranten der Zeigerform Sanduhr; und
  • Fig. 28 veranschaulicht die Zeigerform Dame für die Programmanwendung Schach.
  • In Fig. 1 ist ein Hardware-Blockschaltbild eines Personal Computersystems 10 gezeigt, mit dem das System und das Verfahren der vorliegenden Erfindung realisiert werden kann.
  • Das System 10 enthält den Prozessor 11, der eine Zentraleinheit (central processing unit, CPU) 13 und einen flüchtigen Speicher (random access memory, RAM) 15 enthält. Das System 10 enthält vorzugsweise auch einen weiteren Speicher in Form einer Festplattenspeichereinheit 17 und eines Diskettenlaufwerks 19. Das Diskettenlaufwerk 19 ist so eingerichtet, dass es eine Diskette 21 aufnimmt, auf der Programmsoftware gespeichert sein kann. Das System 10 enthält auch über Benützerschnittstellen angeschlossene Hardwareeinheiten, einschließlich einer Anzeige 23, einer Tastatur 25, einer Maus 27 und eines Schreibstifts oder Stifts 29. Das System 10 enthält vorzugsweise einen Drucker 31.
  • In Fig. 2 ist eine Übersichtsdarstellung der wichtigsten Komponenten des Softwaresystems des stiftbasierten Systems der bevorzugten Ausführungsform veranschaulicht. In Fig. 2 unten sind die Ausgangssignale von Schreibstift 29, der Maus 27 und der Tastatur 25 an die Gerätetreiber 33 angeschlossen; dies sind Module, die die E/A-Aktivitäten ihrer zugehörigen Einheiten direkt unterstützen. Die Gerätetreiber 33 stellen Ereignisse in die Systemwarteschlangen 35 ein. Diese Ereignisse in den Systemwarteschlangen 35 werden nacheinander durch einen Darstellungsmanager 37 verarbeitet, der dann die Stift- und Mausereignisse zur weiteren Verarbeitung zu den Stifterweiterungen 39 weiterleitet.
  • Ein typisches System enthält sowohl stiftsensitive Anwendungen 41 als auch stiftunabhängige Anwendungen 43. Stiftsensitive Anwendungen verfügen über eigene Mittel zum Erkennen und Verarbeiten von Stifteingaben. Stiftunabhängige Anwendungen hingegen verfügen lediglich über Mittel zum Erkennen und Verarbeiten von Tastatur- und/oder Mauseingaben. Daher leiten die Stifterweiterungen 39 die Ereignisse direkt weiter zu den stiftsensitiven Anwendungen 41. Da jedoch die stiftunabhängigen Anwendungen 43 nicht in der Lage sind, die Stiftfunktionalität zu benutzen, enthält das System ein Kompatibilitätsmodul 45.
  • Das Kompatibilitätsmodul 45 fungiert für die stiftunabhängigen Anwendungen als stiftsensible Anwendung. Wenn der Benutzer zum Beispiel handschriftliche Zeichenereignisse in eine stiftunabhängige Anwendung eingibt, leiten die Stifterweiterungen 39 diese Ereignisse weiter zum Kompatibilitätsmodul 45, das wiederum alle Stiftbewegungen zur Handschriften-Erkennungsmaschine 47 (gesture and handwriting recognition engine, Erkennungsmaschine für formfreie und handgeschriebene Zeichen) weiterleitet. Die Handschriften- Erkennungsmaschine 47 verarbeitet die Stiftbewegungsereignisse und liefert an das Kompatibilitätsmodul 45 ein Erkennungsergebnis zurück.
  • Handelt es sich bei dem Erkennungsereignis um ein formfreies Zeichen, wird es vom Kompatibilitätsmodul 45 zu einem Liefersubsystem 49 für Erkennungsereignisse weitergeleitet, das auf die für den Benutzer eingerichteten Profile 51 zugreift, um festzustellen, welche Arbeitsschritte als Reaktion auf ein bestimmtes formfreies Zeichen in einer stiftunabhängigen Anwendung durchzuführen sind. Optional können bestimmte Tools 53 aufgerufen werden, um bestimmte Arbeitsschritte in dar stiftunabhängigen Anwendung 43 durchzuführen. Wenn das zum Kompatibilitätsmodul 45 zurückgegebene Erkennungsergebnis als Handschrift erkannt wird, wird die entstandene Textzeichenfolge direkt zur entsprechenden stiftunabhängigen Anwendung 43 weitergeleitet.
  • In Fig. 3A ist ein Computerbildschirm 60 dargestellt. Auf dem Bildschirm 60 ist ein Fenster 61 dargestellt, das wiederum ein Notizbuch 63 zeigt. In einer dem Fachmann bekannten Weise enthält das Notizbuch verschiedene Fähnchen und Schaltflächen sowie ein Texteingabefeld 65. Bei einem stiftbasierten System verschiebt das System den Zeiger zu der Stelle des Stifts und verarbeitet die Stiftaktionen gemäß den Kenndaten des Stiftstandorts, sobald der Benutzer den (nicht gezeigten) Stift oder Schreibstift in die Nähe des Bildschirms 60 bringt. In Fig. 3A befindet sich ein Zeiger im Textfeld 65 der eine I-Form 67 angenommen hat. Die. Form der I-Schreibmarke zeigt dem Benutzer an, dass das Textfeld 65 bereit ist, Texteingaben von der Tastatur entgegenzunehmen.
  • In Fig. 3B, die im Allgemeinen der Fig. 3A ähnelt, zeigt das System anstelle der I-Schreibmarke von Fig. 3A eine stiftförmige Schreibmarke 69. Die stiftförmige Schreibmarke 69 zeigt dem Benutzer an, dass das Textfeld 65 bereit ist, handschriftliche Eingaben in Form von Zeichen oder formfreien Zeichen entgegenzunehmen.
  • In Fig. 4 ist eine bildliche Darstellung einer Symbolbitmap 80 mit sechs repräsentativen Formen von I-Schreibmarken gezeigt, wie sie in einer Anwendung zur Symbolbearbeitung angezeigt würde. Die Symbolbitmap 80 stellt ein Gitter von 32 · 32 Elementen dar, wobei jedes Element ein Bildelement (picture element, pel) der VGA-Auflösung darstellt. Zu den in Figur veranschaulichten Formen der I-Schreibmarken zählen die I-Schreibmarke 81 von OS/2 und die I-Schreibmarke 83 von Windows .
  • Die in Fig. 4 veranschaulichten Formen der I-Schreibmarken zeigen die große Vielfalt von Zeigern auf der Ebene der Bildelemente, während die von den Benützern wahrgenommenen I- Formen unverändert bleiben. Fig. 4 veranschaulicht ebenfalls, dass eine I-Schreibmarke durch den Software-Entwickler an einer beliebigen Stelle der Bitmap angeordnet werden kann.
  • In Fig. 10 ist ein Übersichts-Ablaufdiagramm gezeigt, das eine Funktion in den Stifterweiterungen 39 von Fig. 2 darstellt, die bei jedem empfangenen Mausereignis aufgerufen wird. Diese Funktion wird im Schnitt 60 bis 100 mal pro Sekunde aufgerufen, während sich die Maus oder der Stift in Bewegung befindet, da dies die üblichen Abfrageraten für solche Einheiten sind. Für jede Teilbewegung der Zeigereinheit muss die Zeigerform am neuen Standort neu gezeichnet werden. Wenn sich die Zeigereinheit über einem Eingabefeld eines beliebigen Typs befindet, zeichnet das Betriebssystem oder die Anwendung eine I-Schreibmarke, um dem Benutzer mitzuteilen, dass eine Tastatureingabe zugelassen ist. Die Funktion von Fig. 10 veranlasst das Betriebssystem, anstelle der I- Schreibmarke einen Stiftzeiger 69 von Fig. 3B zu zeichnen, wenn festgestellt wird, dass der Zeiger gegenwärtig eine I- Form aufweist.
  • Beginnend mit Block 1500 wird die Kennung des aktuellen Zeigers abgefragt und in den Entscheidungsblöcken 1510 und 1520 geprüft, ob es sich um die systemspezifische I- Schreibmarke oder um einen anderen systemspezifischen Zeiger handelt. Ist der Zeiger eine systemspezifische I-Schreibmarke, ändert das System in Block 1570 die Zeigerform in die Stiftform und endet bei Block 1580.
  • Handelt es sich bei dem Zeiger um einen der anderen vom Betriebssystem bereitgestellten Zeiger, unternimmt das System nichts weiter und endet bei Block 1580. Ansonsten greift das System in Block 1530 auf die Zeigertabelle 1400 gemäß Fig. 9 zu, um festzustellen, ob es für die vorliegende Zeigerkennung einen Eintrag gibt.
  • Die Zeigertabelle 1400 in Fig. 9 ist eine Tabelle mit den Spalten ZEIGERKENNUNG (POINTER ID) 1405, VERARBEITUNGSKENNUNG (PROCESS ID) 1410 und I-SCHREIBMARKENMARKIERUNG (I-BEAM FLAG) 1415. Bei der bevorzugten Ausführungsform ist die Zeigertabelle 1400 so aufgebaut, dass sie in den Zeilen 0-249 bis zu 250 Einträge aufnehmen kann. Die Zeigertabelle wird, wie näher erläutert werden wird, durch Hinzufügen von Einträgen, wenn neue Zeiger erkannt werden, und durch Löschen von Einträgen, wenn Anwendungen geschlossen werden, verwaltet.
  • Wenn die Zeigertabelle 1400 in Fig. 10 im Entscheidungsblock 1540 einen Eintrag für den aktuellen Zeiger enthält, verzweigt das System, um in Entscheidungsblock 1560 zu prüfen, ob der Tabelleneintrag als I-Schreibmarke markiert ist. Trifft dies zu, zeichnet das System in Block 1570 den stiftförmigen Zeiger; ansonsten endet der Prozess bei Block 1580. Endet die Prüfung in Entscheidungsblock 1540 nach einem Eintrag in der Zeigertabelle negativ, wird eine andere Routine aufgerufen, um den Zeiger auf die I-Form zu prüfen, was allgemein durch den Verarbeitungsblock 1550 angezeigt und in den Fig. 12-18 genauer gezeigt wird. Ergibt die Routine in Entscheidungsblock 1560, dass der Zeiger eine I-Schreibmarke ist, ändert das System in Block 1570 den Zeiger zu einem Schreibstift; ansonsten endet die Routine bei Block 1580.
  • Zu Fig. 12 ist anzumerken, dass die Routine, die in Block 1550 von Fig. 10 auf die I-Form prüft, für jeden von einer Anwendung angebotenen Zeiger nur einmal aufgerufen wird. Das liegt daran, dass die Routine von Fig. 12 in den Blöcken 1750 und 1780 in die Spalte I-SCHREIBMARKENMARKIERUNG 1415 der. Zeigertabelle 1400 für jede Zeigermarkierung einen Eintrag vornimmt, unabhängig davon, ob der Zeiger positiv auf die I- Form geprüft worden ist. Sobald für eine bestimmte Zeigerkennung ein Eintrag in der Zeigertabelle 1400 vorliegt, lautet das Ergebnis der Prüfung des Tabelleneintrags im Entscheidungsblock 1540 von Fig. 10 immer "wahr", und der Systemaufwand für den Erkennungsprozess für die I-Form wird vermieden. Die Tatsache, dass von einer überwiegenden Anzahl von Anwendungen die vorgelegte systemspezifische I- Schreibmarke sowie andere systemspezifische Zeiger verwendet werden und dass die systemfremden Zeiger nur einmal geprüft werden, beschränkt die Verarbeitungsanforderungen dieser Funktion auf das Nötigste. Die zusätzliche Systembelastung wird noch nicht einmal durch einen versierten und erfahrenen Benutzer wahrgenommen.
  • In Fig. 11 ist die Vorverarbeitung gezeigt, die während des Hochfahrens des Rechners erforderlich ist, um das Stifterweiterungsmodul 39 (Fig. 2) auf die Prüfung vorzubereiten und die Zeigerformen zu überprüfen. In Block 1600 wird die Anzahl der gültigen Einträge in der Zeigertabelle 1400 auf Null gesetzt. Bei der bevorzugten Ausführungsform wird in Block 1610 eine Kopie der I- Schreibmarken-Bitmap von Windows geladen, in Block 1620 abgefragt und in Block 1630 in den globalen Speicher verschoben, um die schnelle Prüfung von Windows-I- Schreibmarken zu ermöglichen.
  • Das bevorzugte Betriebssystem OS/2 vermag ursprüngliche Windows-Anwendungen durch Laden jeder Windows-Anwendung in ihre eigene virtuelle DOS-Maschine auszuführen. Eine Besonderheit dieser Ausführungsform besteht darin, dass jede aktive Windows-Anwendung ihre eigene I-Schreibmarkenkennung erhält, obwohl sämtliche Anwendungen dieselbe von Windows vorgegebene I-Schreibmarke verwenden. Um den Erkennungsprozess zu beschleunigen, wird die Bitmap der Standard-I-Schreibmarke von Windows für schnelle Speicher-Speicher-Vergleiche mit dem vorliegenden Zeiger im Speicher aufbewahrt.
  • Während des Initialisierungsschrittes wird in Block 1640 die Kennung der vom System bereitgestellten I-Schreibmarke abgefragt. Diese Kennung wird bei der Prüfung im Entscheidungsblock 1510 von Fig. 10 benutzt.
  • In Fig. 12 ist eine Übersicht des Erkennungsprozesses dargestellt. Wie in Block 1700 allgemein angezeigt ist, ruft das System eine Routine zum Kopieren der Bitmap des vorliegenden Zeigers in den Speicher auf, wo diese untersucht und bearbeitet werden kann. Diese Verarbeitung ist in Fig. 13 dargestellt. Es muss erwähnt werden, das das Stifterweiterungsmodul 39 nicht genauso wie die Anwendung auf die Bitmaps zugreifen kann, da es als Erweiterung des Betriebssystem läuft und daher von der Umgebung der Anwendung nur wenig Kenntnis besitzt. Daher muss das Stifterweiterungsmodul 39 auf eher indirekte und umständliche Weise auf die Bitmapdaten zugreifen. Bei Verwendung der bekannten Anwendungsprogrammierschnittstellen (application program interface, API) des Betriebssystems OS/2 wird in Block 1800 ein Darstellungsraum zugewiesen und in Block 1810 die Bearbeitung der Bitmap der Zeigerform abgefragt. Dann wird die Bitmap in den Darstellungsraum überführt, wodurch das Lesen der Bitmapdaten aus dem beschränkten Speicher der Grafikmaschine und die Überführung in den globalen Speicher der Stifterweiterung in Block 1830 vorbereitet wird. Nach dem Empfang der Bitmapdaten werden diese in Block 1840 aus dem Darstellungsraum gelöscht und wird in Block 1850 die Ressource des Darstellungsraums freigegeben.
  • Nachdem Abfragen der Bitmapdaten in Block 1700 von Fig. 12 führt das System in Block 1710 einen optimierten Speicher- Speicher-Vergleich durch, um zu erkennen, ob es sich bei dem Zeiger um eine I-Schreibmarke von Windows, handelt. Bei positivem Vergleichsergebnis in Block 1720 wird in Block 1780 ein Eintrag in die Zeigertabelle 1400 eingefügt, dieser Eintrag in Block 1785 als I-Schreibmarke markiert und in Block 1790 die Anzahl der gültigen Einträge der Zeigertabelle um eins erhöht. Da die Zeigertabelle 1400 für 250 Einträge eingerichtet ist und die in Block 1530 aufgewendete Suchzeit reduziert werden soll, wird die Anzahl der gültigen Zeigereinträge sorgfältig gespeichert und die Suche nach dem letzten gefundenen gültigen Eintrag abgebrochen.
  • Bei negativem Vergleichsergebnis im Entscheidungsblock 1720 wird in Block 1730 eine andere Routine zum Durchführen weiterer Prüfungen des Zeigers aufgerufen. Liefert diese Routine im Entscheidungsblock 1740 ein negatives Ergebnis, wird in Block 1750 ein Eintrag in die Zeigertabelle eingefügt, dieser Eintrag in Block 1760 als Nicht-I-Schreibmarke markiert und in Block 1770 die Anzahl der gültigen Einträge der Zeigertabelle um eins erhöht; anschließend gibt die Routine in Block 1775 das negative Ergebnis an die aufrufende Routine zurück. Führt der Vergleich im Entscheidungsblock 1740 zum Ergebnis "wahr", wird in Block 1780 ein Eintrag in die Zeigertabelle eingefügt, dieser Eintrag in Block 1785 als I- Schreibmarke markiert, in Block 1790 die Anzahl der gültigen Einträge der Zeigertabelle um eins erhöht und in Block 1795 das Ergebnis zurückgegeben.
  • In Fig. 5A ist eine Bitmapmatrix 510 für eine beliebige Zeigerform einer I-Schreibmarke gezeigt. Die Bitmapmatrix 510 ist eine Matrix von 32 · 32 Binärdaten, in der die Bildelemente der I-Schreibmarkenform durch Einsen bezeichnet werden. Es sei erwähnt, dass die I-Schreibmarke in der Bitmapmatrix 510 28 Bildelemente in neun Spalten und vierzehn Zeilen umfasst und an einer beliebigen Stelle innerhalb der Bitmapmatrix 510 angeordnet ist.
  • Fig. 14 veranschaulicht den Ablauf der Prüfung einer ungefähren I-Schreibmarkenform, z. B. der I-Schreibmarkenform von Fig. 5A. Um die Verarbeitung durch diese in den Fig. 15-18 gezeigte Routine und ihre Subroutinen zu optimieren, wird die Bitmapmatrix in Block 1900 vom 8-Bit-Format in das 32-Bit-Format umgewandelt. Der für das Umformatieren der Daten betriebene Aufwand wird durch die Verwendung der CPU- Instruktionen, die 32 Bits parallel verarbeiten, mehr als ausgeglichen. Fig. 6 veranschaulicht die Umwandlung der Bitmatrix 510 vom 8-Bit-Format 600 in das 32-Bit-Format 610. In Block 1910 wird eine Maske der Zeigerform gemäß dem geprüften Zeigertyp und der Anzeigenauflösung ausgewählt. In den Fig. 7 und 8 sind eine Maske 710 für VGA-Auflösung bzw. eine Maske 810 für XGA-Auflösung veranschaulicht. Durch die Verwendung verschiedener Masken wird die Genauigkeit der Erkennung der Zeigerform erhöht. In Block 1920 wird die UND- Maske der Bitmap in ihr Komplement umgewandelt, um die Vorbereitung für das Verknüpfen der UND-Maske mit der ODER- Maske in Block 1930 zu treffen. Da die Form des Zeigers als UND-Maske oder als ODER-Maske oder als beide codiert sein kann, werden die beiden Masken verknüpft, um sicherzustellen, dass die gesamte Zeigerform erfasst wird. Da die UND-Maske normalerweise nur aus Einsen besteht und zum Codieren der Zeigerform in Nullen übergeht, wird diese in Block 1920 invertiert, um der Formatierung der entgegengesetzten ODER- Maske zu entsprechen.
  • An dieser Stelle ist die Bitmap von zwei Masken auf eine reduziert worden; um die Zeigerform mit der Maske zu vergleichen, muss die Zeigerform weiter isoliert werden. Hierzu werden Subroutinen aufgerufen, um in Block 1940 die Zeigerform auf die linke Kante und in Block 1950 auf die untere Kante der Bitmapmatrix auszurichten. Vor der Ausrichtung des Bildes auf die untere Kante prüft das System jedoch in Block 1945, ob die Zeigermatrix nicht leer ist, was durchaus vorkommen kann. In diesem Fall hält die Verarbeitung an, und die Routine gibt in Block 1955 ein negatives Ergebnis zurück. Die Ausrichtung auf die linke und die untere Kante führt zu der Bitmapmatrix 520 von Fig. 5B und zu der Bitmapmatrix 530 von Fig. 5C.
  • Jetzt befindet sich das Bild des Zeigers an einer definierten Stelle und eine weitere Routine kann aufgerufen werden, um in Block 1960 zu ermitteln, ob Bits außerhalb der Maske auf Eins gesetzt sind. Wenn auch nur ein einziges Bit außerhalb der Maske auf Eins gesetzt ist, fällt die Prüfung im Entscheidungsblock 1965 negativ aus und in Block 1985 wird der Wert "falsch" an die aufrufende Routine zurückgegeben. Wenn im Entscheidungsblock 1965 außerhalb der Maske keine auf Eins gesetzten Bits gefunden wurden, wird in Block 1975 eine weitere Subroutine aufgerufen, um die Anzahl der innerhalb der Maske auf Eins gesetzten Bits zuzählen. Wenn im Entscheidungsblock 1975 eine ausreichend hohe Anzahl auf Eins gesetzter Bits gefunden wurde, wird die Zeigerform näherungsweise als I-Schreibmarke angesehen und in Block 1980 ein Wert "wahr" zurückgegeben. Der Schwellwert für die Feststellung, ob die Zeigerform eine I-Schreibmarke ist, wird empirisch festgelegt, wobei der vorliegende Algorithmus für die VGA-Auflösung 17 und für die XGA-Auflösung 24 auf Eins gesetzte Bits erwartet.
  • Die vier generell in den Blöcken 1940, 1950, 1960 und 1970 in Fig. 14 aufgerufenen Subroutinen werden nun genauer betrachtet. In Fig. 15 ist die Ausrichtung der Bitmap nach dem linken Rand dargestellt. Die Ausrichtung des Zeigerbildes erfolgt nicht nach dem rechten, sondern nach dem linken Rand, da die Abtastzeilen von Bitmaps immer in Vielfachen von 32 Bits codiert sein müssen, um die Videobearbeitung zu optimieren und die Speicherplätze direkt an die Videohardware anpassen zu können. Aus diesem Grund weist jede Bitmap mit einer Auflösung zwischen 32 · 32 und 64 · 64 Bildelementen stets 64 Datenbits je Abtastzeile auf, auch wenn das Bild nur wenige Bits des zweiten 32-Bit-Wortes verwendet. Die Verwendung dieser überzähligen Bits wird als Auffüllen (padding) bezeichnet und ist in Spalte 820 der Bitmapmatrix 810 von Fig. 8 veranschaulicht; wenn der Algorithmus hingegen auf den rechten Rand ausrichten würde, müsste er das Bild erst um die aufgefüllten Nullen verschieben, was zeitaufwändig wäre. Bei Bitmaps mit einer Auflösung größer als 32 · 32 liegt das Zeigerbild normalerweise näher am linken Rand der Bitmap.
  • In Block 200 in Fig. 15 wird die Anzahl der Abtastzeilen aus dem Bitmap-Header geladen. Dann durchläuft die Subroutine eine Schleife mit den Blöcken 2010-2050, wobei in Block 2010 das äußerste linke Bit jeder Abtastzeile auf eine Eins geprüft wird. Nach der Prüfung jeder Abtastzeile wird in Block 2020 geprüft, ob alle äußersten linken Bits Nullen sind. Wenn dies der Fall ist, ist der Anfang des Zeigerbildes noch nicht gefunden worden; Jäher wird in Block 2030 jede Abtastzeile um ein Bit nach links verschoben und in Block 2040 die Verschiebungszahl um Eins erhöht. Durch eine Prüfung im Entscheidungsblock 2050 wird ermittelt, ob die Anzahl der verschobenen Bits größer als oder gleich der Anzahl von Abtastspalten ist. Durch diese Prüfung wird der Fall einer leeren Zeigerform erfasst und eine unendliche Schleife vermieden. Wenn im Entscheidungsblock 2050 die Verschiebungszahl größer als die Zahl der Abtastspalten ist, gibt die Subroutine in Block 2060 einfach einen Wert "wahr" zurück. Das Bild wird in Block 2030 so lange nach links verschoben, bis im Entscheidungsblock 2020 schließlich das am weitesten links stehende Bit der Abtastzeilen eine Eins enthält. In diesem Fall ist dieses Bild vollkommen auf den linken Rand ausgerichtet, und die Subroutine gibt in Block 2070 einen Wert "falsch" zurück.
  • Fig. 16 veranschaulicht den Ablauf des nächsten Schrittes des Erkennungsalgorithmus, bei dem das nach links ausgerichtete Bild auf den unteren Rand ausgerichtet wird. Zuerst wird in Block 2100 der Zeiger der Abtastzeile an den unteren Rand der Bitmapmatrix gesetzt, damit die Prüfung in der letzten oder untersten Abtastzeile beginnt. Es folgt eine Schleife mit den Blöcken 2100-2130, in der jede Abtastzeile in Block 2110 komplett auf ein Bit ungleich Null geprüft wird. Wenn ein Bit ungleich Null gefunden wird, wird der Zeiger der Abtastzeile in Block 2120 um eins vermindert. Wenn der Zeiger der Abtastzeile im Entscheidungsblock 2130 auf die oberste Abtastzeile der Bitmap zeigt, kehrt die Routine in Block 2140 zurück. Ansonsten wird die Schleife so lange erneut durchlaufen, bis eine Abtastzeile ungleich Null gefunden wird, die anzeigt, dass der untere Rand des Zeigerbildes gefunden wurde. An dieser Stelle wird die Schleife verlassen, und die Subroutine geht zur zweiten Hälfte über.
  • In der zweiten Hälfte der Subroutine wird in Block 2150 ein Quellenzeiger initialisiert, um auf die Abtastzeile am unteren Rand des Bildes zu zeigen; außerdem wird in Block 2155 ein Zielzeiger gesetzt, um auf den unteren Rand der Bitmapmatrix zu zeigen. Diese Zeiger werden zur Durchführung einer Speicher-Speicher-Übertragung der Bitmap benutzt, wodurch das Bild effektiv auf den unteren Rand ausgerichtet wird. Dies wird durch die Schleife mit den Schritten 2165 bis einschließlich 2185 erreicht. Die Abtastzeilen werden in Block 2160 nacheinander einzeln übertragen, und der Quellenzeiger und der Zielzeiger werden in den Blöcken 2175 bzw. 2180 jedes Mal um eins verringert. Nach der Übertragung aller Abtastzeilen wird im Entscheidungsblock 2165 geprüft, ob der aktuelle Quellenzeiger auf die oberste Zeile der Bitmap zeigt. In diesem Fall wird der Quellenzeiger in Block 2170 auf den unteren Rand der Bitmap gesetzt, so dass die gesamte Bitmap übertragen wird. Wenn der Zielzeiger im Entscheidungsblock 2185 schließlich am oberen Rand der Bitmap ankommt und damit den Abschluss der Übertragung anzeigt, wird die Schleife verlassen, und die Subroutine, kehrt in Block 2190 zurück.
  • Fig. 17 zeigt den logischen Ablauf der Prüfung des Zeigerbildes auf Bits die außerhalb der Formmaske auf Eins gesetzt sind. Der Zeiger der Abtastzeile wird wieder in Block 2200 auf den unteren Rand der Matrix gesetzt, um den Beginn des Zeigerbildes zu kennen. Der Zeiger der Formmaske wird in Block 2210 ebenfalls auf den unteren Rand der Maske gesetzt, um ihn mit der Abtastzeile der Bitmap gekoppelt zu bearbeiten. Die Schleife von Block 2220 bis einschließlich Block 2290 invertiert die Maskenzeile, indem in Block 2220 ihr Komplement gebildet und in Block 2230 eine UND-Operation ausgeführt wird, und vergleicht sie in Entscheidungsblock 2240 mit der zugehörigen Abtastzeile der Bitmap. Bei keiner Form, die ungefähr der I-Schreibmarke entspricht, sind Bits außerhalb der Maske gesetzt. Wird ein Bit ungleich Null gefunden, gibt die Subroutine in Block 2250 einen Wert "wahr" zurück, der der aufrufenden Routine eine von der I-Schreibmarke abweichende Form anzeigt. Ansonsten wird geprüft, ob der Zeiger das obere Ende der Bitmatrix erreicht hat, wodurch im Entscheidungsblock 2260 der Abschluss der Prüfung mitgeteilt wird. Ist dies nicht der Fall, werden die Zeiger der Abtastzeile und der Maskenzeile in Block 2280 bzw. 2290 um eins verringert, und die Schleife kehrt wieder zu Block 2220 zurück. Wenn im Entscheidungsblock 2260 die letzte Abtastzeile erreicht ist, wurden außerhalb der Maske keine Bits gefunden, und die Subroutine gibt in Block 2270 einen Wert "falsch" zurück.
  • Fig. 18 zeigt die Abschlussroutine des Erkennungsalgorithmus. Es ist nun festgestellt worden, dass alle Bits ungleich Null innerhalb der Maske liegen, was eine enge Übereinstimmung zwischen den beiden Formen anzeigt. Die letzte Aufgabe besteht im Zählen der innerhalb einer Maske gesetzten Bits, um zu ermitteln, ob die Form wirklich eine I-Schreibmarke ist.
  • Eigentlich wird die Maske bei diesem Schritt nicht benötigt, da alle Bits ungleich Null innerhalb der Maske liegen. Beim Initialisieren werden die Schleifenvariablen Verschiebungszahl, Abtastzeilenzahl und Bitzahl in Block 2300, 2305 bzw. 2310 gelöscht. Dann werden in Block 2315 bzw. 2320 zwei vordefinierte Konstanten, und zwar die Anzahl der Maskenzeilen ungleich Null und die Anzahl der Maskenspalten ungleich Null zur Verwendung in der Schleife geladen. In Block 2325 wird der aktuelle Zeiger der Abtastzeile auf den unteren Rand der Bitmapmatrix gesetzt und der Code durchläuft dann eine innere Schleife 2330-2350 und eine äußere Schleife 2355- 2370. Die innere Schleife 2330-2350 überstreicht jede Abtastzeile und zählt deren Bits ungleich Null, wohingegen die äußere Schleife 2335-2370 von einer Abtastzeile zur nächsten springt.
  • Im Entscheidungsblock 2330 wird das äußerste linke Bit der aktuellen Abtastzeile auf Eins geprüft. Wird eine Eins gefunden, wird die Bitzahl in Block 2335 um eins erhöht. In jedem Fall wird immer in Block 2340 die Verschiebungszahl um eins erhöht und im Entscheidungsblock 2345 geprüft, ob die Anzahl der verschobenen Bits gleich der Anzahl der Spalten ungleich Null ist. Ist dies nicht der Fall, wird die gesamte Abtastzeile in Block 2350 um ein Bit nach links verschoben, und die Schleife kehrt zum Entscheidungsblock 2330 zurück. Wenn die Anzahl der verschobenen Bits im Entscheidungsblock 2345 gleich der Anzahl der Maskenspalten ungleich Null ist, wird die Verschiebungszahl in Block 2355 gelöscht und der Zeiger der Abtastzeile in Block 2360 um eins verringert, um die nächste Abtastzeile zu prüfen. Wenn im Entscheidungsblock 2365 die Anzahl der geprüften Abtastzeilen gleich der Anzahl der Maskenzeilen ungleich Null ist, sind alle Abtastzeilen der Maske geprüft worden, und die Subroutine gibt die Gesamtzahl der in Block 2375 gezählten Bits ungleich Null zurück. Im gegenteiligen Fall wird die Abtastzeilenzahl in Block 2370 um eins erhöht, und die äußere Schleife kehrt zum Beginn der inneren Schleife beim Entscheidungsblock 2330 zurück. Auf diese Weise werden alle Bits ungleich Null in der Zeigerform gezählt und an die aufrufende Routine zurückgegeben.
  • Mit der Zahl der gültigen Einträge in der Zeigertabelle 1400 wird, wie oben erwähnt, sorgfältig umgegangen. Immer, wenn beim Verarbeiten der Mausbewegung eine neue Zeigerkennung einer Anwendung gefunden wurde, werden Einträge in die Tabelle eingefügt. Fig. 23 zeigt, wie die Tabelle weiter verwaltet wird, so dass nicht mehr benötigte Einträge entfernt werden. Die Routine in Fig. 23 wird immer dann aufgerufen, wenn das Betriebssystem eine Anwendung schließt oder beendet. Zu Beginn wird im Entscheidungsblock 2800 geprüft, ob bereits Einträge vorhanden sind. Sind keine Einträge vorhanden, braucht nichts gelöscht zu werden, und die Routine endet bei Block 2880. Wenn die Tabelle im Entscheidungsblock nicht leer ist, wird in Block 2810 die Prozesskennung der zu beendenden Anwendung abgefragt. Die Anzahl der gültigen Einträge wird in Block 2820 geladen und der Tabellenzeiger wird in Block 2830 auf den ersten Eintrag der Zeigertabelle 1400 gesetzt. Dann beginnt beim Entscheidungsblock 2840 eine Schleife, in der jeder Eintrag auf Gültigkeit geprüft wird. Ist der Eintrag gültig, dann wird der Eintrag im Entscheidungsblock 2850 darauf geprüft, ob er zu der zu beendenden Anwendung gehört. Wenn dies der Fall ist, wird in Block 2855 die Zahl der gültigen Einträge um eins erniedrigt und der Eintrag in Block 2860 aus der Tabelle entfernt. Ungeachtet des Prüfergebnisses im Entscheidungsblock 2850 wird die Schleifenzählung in Block 2865 um eins verringert und in Block 2870 geprüft, ob sie gleich Null ist. Wenn die Schleifenzählung ungleich Null ist, liegen noch gültige Einträge in der Zeigertabelle 1400 vor; dann wird der Tabellenzeiger in Block 2875 um eins erhöht, und die Schleife kehrt zum Entscheidungsblock 2840 zurück. Wenn beim Entscheidungsblock 2840 ein ungültiger Eintrag gefunden wurde, wird der Eintrag übergangen und der Tabellenzeiger in Block 2875 um eins erhöht; dann beginnt die Schleife von vorn. Wenn schließlich alle gültigen Einträge gefunden sind und die Schleifenzählung in Block 2870 Null erreicht, wird die Schleife verlassen und in Block 2880 die Routine beendet. Obwohl die Zeigertabelle 1400 für 250 Einträge eingerichtet ist, werden in den meisten praktischen Fällen nur sehr wenige Einträge geprüft.
  • In Fig. 24 ist die Bitmap 2410 für den Sanduhrzeiger von Windows veranschaulicht. Beim Betrachten der Form des Sanduhrzeigers in Fig. 24 sieht man, dass die Sanduhr eine "taillierte" Form besitzt, und eine wirksame Maske muss ebenfalls eine enge Taille aufweisen. Je breiter die Taille der Maske ist, um so stärker nimmt diese die Form eines Rechtecks an, was zu einer Verschlechterung der Erkennungsgenauigkeit führt. Desgleichen kann, wie in den Fig. 26A und 26B zu sehen ist, eine Fehlausrichtung der Maske bezüglich des Zeigers dazu führen, dass die Sanduhrform des Zeigers nicht erkannt wird. Fig. 26A veranschaulicht eine Bitmatrix 2610 der Feinmaske für einen Sanduhrzeiger und Fig. 26B eine Bitmatrix für einen Sanduhrzeiger 2620. Die Sanduhrform 2620 ist noch als Sanduhr zu erkennen, jedoch ist sie kurz und weist daher eine niedrige Taille auf, die durch die mittlere Abtastzeile 2630 angezeigt wird. Deshalb trifft der breite Oberteil des Sanduhrzeigers 2620 mit der durch die mittlere Abtastzeile 2640 angezeigten Taille der Maske 2610 zusammen, weshalb der Erkennungsalgorithmus infolge der außerhalb der Maske liegenden Bits ungleich Null versagen würde.
  • Ein mögliches Problem besteht darin, dass bei größeren Zeigermasken, wie etwa bei der Sanduhrmaske in Fig. 26A, mit einer größeren Wahrscheinlichkeit zu rechnen ist, dass manche Formen, die keine Sanduhr darstellen, durch die Maske erfasst werden. Obwohl man durch einen hohen Bit-Schwellwert in der Größenordnung von einhundertfünfzig eine hohe Filterwirkung erzielen könnte, dürfte dies nicht unbedingt in allen Fällen ausreichen. So ungewöhnlich die Sanduhrform auch sein mag, würden auch bei einem hohen Bit-Schwellwert bestimmte andere Formen, wie beispielsweise die Zeigerform der Schachdame der Bitmap 2810 von Fig. 28 die Prüfung überstehen. Die Fehldeutung des Damezeigers als aktive Anwendung würde zu schwerwiegenden Problemen in der Anwendbarkeit führen.
  • Um diesen Problemen Rechnung zu tragen, bedient sich die zweite Ausführungsform eines geänderten, wenngleich etwas längeren, Algorithmus, der eine Grobmaske 2510 und eine Feinmaske 2520 verwendet, die in den Fig. 25A bzw. 25B gezeigt sind, und berücksichtigt die in Fig. 27 gezeigte Symmetrie des Zeigerbildes.
  • In Fig. 27 ist zu erkennen, dass das Bild des Sanduhrzeigers 2710 sowohl bezüglich seiner mittleren Abtastzeile 2715 als auch seiner mittleren Abtastspalte 2720 symmetrisch ist. Die mittlere Abtastzeile 2715 und die mittlere Abtastspalte 2720 teilen das Zeigerbild 2710 in vier Quadranten auf.
  • Die Fig. 19 zeigt den leicht geänderten Logikablauf der zweiten Ausführungsform der vorliegenden Erfindung. Zu Beginn der Fig. 19 ist in Block 2400 die Zeigerform bereits auf den linken und den unteren Rand ausgerichtet und eine Prüfung auf Bits ungleich Null außerhalb der Grobmaske durchgeführt worden. Die Grobmaske ist so strukturiert, dass ein großer Teil der Zeiger ohne Sanduhrform ausgeschlossen wird, obwohl für die Gestaltung der Sanduhr noch ein großer Spielraum verbleibt. Wenn im Entscheidungsblock 2410 ein Bit außerhalb der Grobmaske gesetzt ist, stoppt die Verarbeitung und in Block 2495 wird ein Wert "falsch" zurückgegeben. Wenn im Entscheidungsblock 2410 keine Bits gesetzt sind, wird die Zeigerform in Block 2420 bezüglich der Feinmaske zentriert.
  • Fig. 20 zeigt den Ablauf des Zentrierverfahrens zum Vermeiden des Problems, dass es zu in den Fig. 26A und 26B veranschaulichten Fehlerkennungen von Abtastzeilen kommen kann. Es werden zwei Schleifen durchlaufen, in denen das System in Block 2500 die Anzahl der Zeigerabtastzeilen ungleich Null und in Block 2510 die Anzahl der Zeigerabtastspalten ungleich Null zählt. Die erhaltenen Zahlen der Zeilen und Spalten ungleich Null werden durch 2 geteilt, um in Block 2520 den Mittelpunkt der Zeigerform zu berechnen. Auch der Mittelpunkt der Feinmaske wird durch Teilen dieser beiden bekannten Konstanten durch 2 in Block 2530 berechnet. Um die Differenz zwischen den beiden Mittelpunkten der beiden Vergleichswerte zu ermitteln, werden in Block 2540 die Mittelpunkte X und Y der Zeigerform von den Mittelpunkten X und Y der Feinmaske abgezogen. Man beachte, dass die berechneten Verschiebungen X und Y Null oder einen positiven Wert annehmen, niemals aber negativ sein können, da die Zeigerform nicht größer als die Feinmaske sein kann.
  • Sobald die Verschiebung der Spalte (X) und der Abtastzeile (Y) bekannt ist, wird die Feinmaske in Block 2550 um einen Betrag gleich der Spaltenverschiebung auf den linken Rand und in Block 2560 um einen Betrag gleich der Abtastzeilenverschiebung auf den unteren Rand ausgerichtet. Das Gesamtergebnis dieser Schritte besteht darin, dass der Mittelpunkt der Feinmaske über dem Mittelpunkt der Zeigerform zu liegen kommt. Das Übereinanderlegen der Zeigerform und der Feinmaske lässt einen schmaleren und enger geschnittenen Umriss der Maske zu, wodurch die Erkennungsgenauigkeit erhöht wird. Die Routine gibt in Block 2570 den Mittelpunkt des Zeigers zurück, der für die Symmetrieprüfung benötigt wird.
  • In Fig. 19 ruft das System in Block 2450 eine Subroutine auf, um die je Quadrant der Feinmaske gesetzten Bits zu zählen Fig. 27 zeigt die Anordnung der Quadranten, deren gemeinsamer Ursprung der Mittelpunkt des Zeigerbildes ist. Fig. 22A ist die Subroutine, die die Bits jedes Quadranten der Feinmaske zählt. Die Subroutine von Fig. 22A ist mit der zuvor beschriebenen Subroutine von Fig. 18 der ersten Ausführungsform, welche die Bits in der Maske zählt, bis auf die Tatsache identisch, dass es hier für jeden Quadranten einen Bitzähler gibt. In Block 2705 werden alle 4 Quadrantenzähler gelöscht. Die Bitzählung beginnt wie in Fig. 18 mittels einer inneren und einer äußeren Schleife; sobald, jedoch im Entscheidungsblock 2730 Bits ungleich Null gefunden werden, wird in Block 2732 eine Subroutine aufgerufen, um den Quadrantenzähler um Eins zu erhöhen.
  • Fig. 22B zeigt die Ablauflogik für die Ermittlung, in welchem Quadranten sich ein Bit befindet. Zu Beginn der Subroutine werden in den Entscheidungsblöcken 2771, 2772 und 2773 drei Prüfungen durchgeführt, um zu ermitteln, ob die Spaltenzahl und die Abtastzeilenzahl gerade oder ungerade ist. Da für die Symmetrieprüfung das Bild in symmetrische Hälften aufgeteilt werden muss, muss bei einer ungeraden Anzahl Spalten oder Abtastzeilen die mittlere. Spalte oder Abtastzeile übergangen werden, da sie die Symmetrieachse darstellt. Bei einer geraden Anzahl Spalten oder Abtastzeilen fällt die wirkliche Symmetrieachse zwischen die zwei Spalten oder Zeilen, so dass die berechnete Mittelpunktspalte und -reihe Teil der Quadranten 3 und 4 bzw. 3 und 2 wird. Nach dem Ermitteln des Verhältnisses zwischen den Spalten- und Abtastzeilenzahlen wird in den Schritten 2701-2704, 2706-2709, 2716-2719 und 2721-2724 herausgefiltert, in welchen Quadranten die neu gefundenen Bits fallen. Im Fall einer ungeraden Spalten- oder Abtastzeilenzahl werden die auf der Symmetrieachse liegenden Bits nicht gezählt, und die Logik kehrt einfach zu Block 2763 zurück. In den Schritten 2751-2754 wird die Quadrantenzahl um eins erhöht, und die Subroutine kehrt zu Block 2763 zurück.
  • Nach der Rückkehr Von der Subroutine in Fig. 22B wird die Gesamtzahl der Bits ungleich Null in Block 2735 von Fig. 22A um eins erhöht. Nach Prüfung aller Abtastzeilen im Entscheidungsblock 2765 wird die äußere Schleife verlassen, und alle Bitzahlen werden in Block 2775 zur aufrufenden Routine zurückgegeben.
  • Wiederum in Fig. 19 wird für die Prüfung der Bitzahl im Entscheidungsblock 2560 ein für eine Sanduhrform passender Schwellwert verwendet, der empirisch zu einhundertfünfzig Bits angenommen wurde. Bei negativem Prüfergebnis wird dieses in.
  • Block 2495 zurückgegeben. Im gegenteiligen Fall wird das Zeigerbild in Block 2470 auf Symmetrie geprüft.
  • In Fig. 21 ist die Ablauflogik der Subroutine für die Symmetrieprüfung dargestellt. In Block 2600 wird die Feinmaske für die Sanduhrform von Fig. 25A abgefragt, um zu ermitteln, ob für diese bestimmte Zeigerform Symmetrieprüfungen erforderlich sind. Wenn im Entscheidungsblock 2610 keine Prüfungen erforderlich sind, gibt das System einfach in Block 2680 eine positive Symmetriemeldung an die aufrufende Routine zurück. Bei der Sanduhrform muss sowohl die Spalten- als auch die Zeilensymmetrie geprüft werden, wobei im Entscheidungsblock 2620 der Wert "wahr" erhalten wird und die Logik zu Block 2630 weitergeht, wo die Bitzahlen der Quadranten beiderseits der Spaltensymmetrieachse zueinander addiert werden. Diese beiden Zahlen werden miteinander verglichen; wenn sie sich im Entscheidungsblock 2640 um mehr als drei Bildelemente voneinander unterscheiden, werden die beiden Seiten als asymmetrisch gewertet, und die Subroutine gibt in Block 2690 eine negative Symmetriemeldung zurück. Anderenfalls wird im Entscheidungsblock 2650 geprüft, ob auch die Symmetrie der Abtastzeilen geprüft werden muss. Wenn dies nicht der Fall ist, wird die Subroutine in Block 2680 verlassen und ein positiver Symmetriewert zurückgegeben. Wenn hingegen die Symmetrie der Abtastzeile geprüft werden muss, wird der Schritt 2660 ausgeführt, bei dem die Bitzahlen der Quadranten beiderseits der Abtastzeilensymmetrieachse addiert werden. Unterscheiden sich diese beiden Zahlen im Entscheidungsblock 2670 um mehr als drei Bits, wird der Zeiger als vertikal asymmetrisch gewertet und in Block 2690 ein negatives Ergebnis zurückgegeben. Bei einem kleineren Unterschied gibt die Subroutine in Block 2680 einen Wert "wahr" an die aufrufende Routine zurück. Im Fall der Prüfung des Dame-Zeigers von Fig. 28 würde eine Asymmetrie bezüglich der horizontalen Achse festgestellt werden.
  • In Fig. 19 wird die Rückmeldung der aufgerufenen Subroutine verarbeitet und im Entscheidungsblock 2480 eine Prüfung der erforderlichen Symmetrie durchgeführt, wobei in Block 2490 bzw. 2495 entsprechend ein Wert "wahr" oder "falsch" zurückgegeben wird.
  • Diese Änderung zieht infolge der Verarbeitung einer zweiten Maske, der Überlagerung der beiden Bilder und der Symmetrieprüfung eine Leistungseinbuße nach sich, die jedoch durch die erhöhte Zuverlässigkeit des Erkennungsalgorithmus gemildert wird. Ferner wird die Leistungseinbuße dadurch gemildert, dass die Symmetrieprüfung vom Zeigertyp abhängt.
  • Aus den obigen Darlegungen ist zu erkennen, das die im vorliegenden Dokument beschriebene Verfahrensweise für die Erkennung von Zeigerformen gut geeignet ist. Wenn der Textzeiger etwa die Form einer I-Schreibmarke aufweisen muss, wird die Bitmap des Zeigers geprüft, ob die Zeigerform die visuelle Erscheinungsform einer I-Schreibmarke hat. Die Zeigerform wird mit der Maske einer I-Schreibmarke verglichen, die eine ausreichende Schwankungsbreite der Größe, der Form und der Merkmale der I-Schreibmarke zulässt und dabei alle Formen ausschließt, deren Aussehen einer I-Schreibmarke nicht ähnlich genug ist.
  • Die bevorzuge Ausführungsform berücksichtigt viele variable Größen. Zum Beispiel können zahlreiche Bildschirmauflösungen, z. B. Bildschirmtreiber für VGA-, SVGA- und XGA-Auflösung, jeweils unterschiedliche Zeiger-Bitmapgrößen aufweisen (z. B. 32 · 32, 40 · 40). Der Unterschied der Zeigerauflösung wird dem Erkennungsalgorithmus durch die Auswahl einer Formmaske anhand der Zeigergröße mitgeteilt. Die bevorzugte Ausführungsform wird auch nicht von der Farbanwendung bei einem Mauszeiger beeinflusst, da Farbänderungen außer Acht gelassen werden und der Zeiger wie ein einfarbiger Zeiger behandelt wird.
  • Eine Zeigerform ist keine Standard-Bitmap. Eine Zeiger-Bitmap besteht eigentlich aus zwei Masken, nämlich der XOR- und der UND = Maske, und einer Matrix von Farbindexwerten, die zusammengenommen das Bild einer Zeigerform ergeben, das bis auf die gewünschte Zeigerform transparent ist. Die Zeigerform kann entweder als XOR- oder als UND-Maske oder als beide codiert werden. Die XOR-Maske besteht normalerweise aus Nullen, und die Form wird durch Konvertieren der Null-Bits in Eins-Bits codiert. Umgekehrt besteht die UND-Maske normalerweise nur aus Einsen, und die Form wird durch Konvertieren der Einsen in Nullen codiert.
  • Das Zeigerbild mit 32 · 32 Bildelementen enthält 1024 Bildelemente, von denen ungefähr 18 zum Definieren der Form verwendet werden können. Der Entwickler eines Zeigers besitzt die Freiheit, den Zeiger irgendwo innerhalb der Grenzen der Bitmap zu codieren. Um dieses Problem zu umgehen, ordnet die bevorzugte Ausführungsform das Zeigerbild innerhalb der Bitmap an und verschiebt das Bild zum linken Rand der Bitmap.
  • Die bevorzugte Ausführungsform lässt ausreichend Freiraum für eine kreative Gestaltung der I-Schreibmarkenformen und weist gleichzeitig Formen mit hoher Sicherheit ab, die nicht der I- Schreibmarke entsprechen. Um die Genauigkeit zu erhöhen, können bei manchen Zeigerformen im Erkennungsprozess zusätzliche Schritte erforderlich sein, in denen die geprüfte Zeigerform genau auf eine Maske mit höherer Auflösung ausgerichtet werden muss. Ferner kann das System, um eine noch schärfere Filterung nach Zeigerformen zu erreichen, die entweder bezüglich der vertikalen oder der horizontalen Achse oder beider Achsen symmetrisch sind, in der geprüften Zeigerform nach solchen Symmetrien suchen.
  • Bitmaps sind so aufgebaut, dass sie schnelle Übertragungen auf Gerätetreiberebene ermöglichen. Deshalb endet das obere äußerst linke Bit ebenso wie das untere äußerst linke Bit im Binärformat. Außerdem sind Bitmaps Matrizen; das bedeutet, dass zwei im Bild benachbarte Bits um 15 Bits voneinander getrennt sein können, wenn zwischen ihnen eine Bytegrenze liegt. Deswegen müssen die Bits vor der Verarbeitung der Bitmap gründlich bearbeitet werden. Zwei benachbarte Bits können getrennt werden, wenn die Behandlung der Bitmapdaten vom 8-Bit-Format zum 32-Bit-Format wechselt. Deshalb werden die Bitmapdaten in der bevorzugten Ausführungsform vom 8-Bit- Format in das 32-Bit-Format umformatiert.
  • Stiftbasierte Systeme unterliegen sehr hohen Leistungsanforderungen, die keine rechenintensiven Operationen wie eine optische Erkennung für alle anwendungsdefinierten Zeiger bei Mausbewegungen oder Stiftannäherungen zulassen. Der Prozess der Klassifizierung von anwendungsdefinierten Zeigern für Text oder textfreie Anwendungen wird so weit optimiert, dass die Systemempfindlichkeit oder -leistung nicht merklich beeinträchtigt wird.
  • Obwohl die bevorzugte Ausführungsform sich der optischen Erkennung der I-Schreibmarkenform bedient, um zwischen Textfensterbereichen und Fensterbereichen ohne Text zu unterscheiden, kann dieser Ansatz bei jeder Task verwendet werden, bei der das Betriebssystem wie auch der Benutzer profitiert, wenn der spezielle Status einer Anwendung bekannt ist, wenn eine Zeigervorrichtung über die Anwendung streicht. So kann beispielsweise, wie in der zweiten Ausführungsform beschrieben, durch die Erkennung einer Sanduhr oder einer Uhr festgestellt werden, ob eine Anwendung im Augenblick aktiv ist und keine Benutzereingabe verarbeiten kann.

Claims (18)

1. Verfahren zum Betreiben eines stiftbasierten Computersystems, um festzustellen, ob die Position eines Zeigers zur Aufnahme von Zeichendaten bereit ist, wobei der Zeiger eine Zeiger-ID (Zeigerkennung) (1500) aufweist und das System eine systemspezifische I-Schreibmarke (81) mit einer systemspezifischen I-Schreibmarkenkennung aufweist und wobei das Verfahren die folgenden Schritte umfasst:
Feststellen (1510), ob die Zeigerkennung gleich der systemspezifischen I-Schreibmarkenkennung ist;
Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als I- Schreibmarke markiert ist, wenn die Zeigerkennung (1510) nicht gleich der systemspezifischen I-Schreibmarkenkennung (1520) ist;
Feststellen, ob der Zeiger eine I-Schreibmarkenform aufweist, wenn die Zeigerkennung (1540) nicht in der Tabelle von Zeigerkennungen (1400) enthalten ist; und
Umwandeln des Zeigers in einen stiftförmigen Zeiger (1570) als Reaktion auf die Gleichheit zwischen der Zeigerkennung und der systemspezifischen I-Schreibmarkenkennung oder wenn die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als I- Schreibmarke markiert (1785) ist oder wenn der Zeiger eine I-Schreibmarkenform aufweist, um anzuzeigen, dass das Computersystem zur Aufnahme von Texteingaben bereit ist.
2. Verfahren nach Anspruch 1, das ferner die folgenden Schritte umfasst: Einfügen der Zeigerkennung in die Tabelle der Zeigerkennungen und Markieren der Zeigerkennung als I- Schreibmarke (1560), wenn festgestellt wurde, dass der Zeiger eine I-Schreibmarkenform aufweist.
3. Verfahren nach Anspruch 1, bei dem der Schritt des Feststellens, ob der Zeiger eine I-Schreibmarkenform aufweist, den folgenden Schritt enthält: Vergleichen (1720) des Zeigers mit einer vordefinierten Maske mit I-Schreibmarkenform.
4. Verfahren nach Anspruch 3, bei dem der Schritt des Feststellens, ob der Zeiger eine I-Schreibmarkenform aufweist, ferner den folgenden Schritt umfasst: Zählen der Anzahl der den Zeiger umfassenden Bildelemente, wenn alle Bildelemente des Zeigers innerhalb der Maske mit I-Schreibmarkenform liegen.
5. Verfahren nach Anspruch 4, das den folgenden Schritt umfasst: Umwandeln des Zeigers in einen stiftförmigen Zeiger, wenn die Anzahl der den Zeiger umfassenden Bildelemente größer als ein vorbestimmter Schwellwert ist.
6. Verfahren nach Anspruch 3, bei dem der Zeiger in einer Bitmap enthalten ist und das Verfahren den folgenden Schritt umfasst: Konvertieren der Bitmap von der 8-Bit-Anordnung in die 32- Bit-Anordnung (610).
7. Verfahren nach Anspruch 3, bei dem der Vergleichsschritt die Anfangsschritte des Ausrichtens der Bildelemente der aktuellen Zeigerform, welche ungleich Null sind, nach links und nach unten umfasst.
8. Verfahren nach Anspruch 1, das ferner umfasst:
Feststellen, ob ein systemfremder Zeiger einem Systemzeiger gleichwertig ist, wobei der systemfremde Zeiger eine Zeigerkennung aufweist und das Verfahren ferner die folgenden Schritte umfasst:
Feststellen, ob die Zeigerkennung in einer Tabelle der Zeigerkennungen enthalten und in der Tabelle als dem Systemzeiger gleichwertig markiert (1785) ist und
Feststellen anhand der Form des systemfremden Zeigers, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, wenn die Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist (1760).
9. Verfahren nach Anspruch 8, das ferner den folgenden Schritt umfasst: Einfügen der Zeigerkennung in die Tabelle der Zeigerkennungen und Markieren der Zeigerkennung als dem Systemzeiger gleichwertig, wenn anhand der Form ermittelt wurde, dass der systemfremde Zeiger dem Systemzeiger gleichwertig ist.
10. Verfahren nach Anspruch 8, bei dem der Schritt des Feststellens anhand der Form, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, den folgenden Schritt umfasst: Vergleichen des systemfremden Zeigers mit einer vordefinierten Maske (710).
11. Verfahren nach Anspruch 10, bei dem der Schritt des Feststellens anhand der Form, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, ferner den folgenden Schritt umfasst: Zählen der Anzahl der den systemfremden Zeiger umfassenden Bildelemente, wenn alle Bildelemente des systemfremden Zeigers innerhalb der Feinmaske liegen.
12. Verfahren nach Anspruch 11, bei dem der Schritt des Feststellens anhand der Form, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, ferner den folgenden Schritt umfasst: Feststellen, ob der systemfremde Zeiger eine vorbestimmte Symmetriebedingung erfüllt, wenn die Anzahl der den systemfremden Zeiger umfassenden Bildelemente größer als ein vorbestimmter Schwellwert ist.
13. Verfahren nach Anspruch 12, bei dem der Schritt, des Feststellens anhand der Form, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, die folgenden Schritte umfasst:
Vergleichen des systemfremden Zeigers mit einer vordefinierten Grobmaske; und
Vergleichen des systemfremden Zeigers mit einer vordefinierten Feinmaske, wenn alle Bildelemente des systemfremden Zeigers innerhalb der Grobmaske liegen.
14. Verfahren nach Anspruch 13, bei dem der Schritt des Feststellens anhand der Form, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, ferner den folgenden Schritt umfasst: Zählen der Anzahl der den systemfremden Zeiger umfassenden Bildelemente, wenn alle Bildelemente des systemfremden Zeigers innerhalb der Feinmaske liegen.
15. Verfahren nach Anspruch 8, bei dem der systemfremde Zeiger ein Sanduhrzeiger ist (2410).
16. Verfahren nach Anspruch 8, beidem der systemfremde Zeiger eine I-Schreibmarke ist.
17. Stiftbasiertes Computersystem, das einen Bildschirm mit einer auf dem Bildschirm darstellbaren systemspezifischen I-Schreibmarke aufweist, wobei die systemspezifische I- Schreibmarke eine systemspezifische I-Schreibmarkenkennung aufweist, und das ferner ein System zum Feststellen aufweist, ob eine Position auf dem Bildschirm, die durch einen Zeiger mit einer Zeigerkennung angezeigt wird, zur Aufnahme von Zeichendaten bereit ist, wobei das System Folgendes umfasst:
Mittel zum Feststellen, ob die Zeigerkennung gleich der systemspezifischen I-Schreibmarkenkennung ist;
Mittel zum Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als I-Schreibmarke markiert ist, wenn die Zeigerkennung nicht gleich der systemspezifischen I-Schreibmarkenkennung ist; und
Mittel zum Feststellen, ob der Zeiger eine I- Schreibmarkenform aufweist, wenn die Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist.
18. System nach Anspruch 17, das ferner ein Mittel zum Feststellen umfasst, ob ein systemfremder Zeiger mit einer Zeigerkennung einem Systemzeiger gleichwertig ist, wobei das System Folgendes umfasst:
Mittel zum Feststellen, ob die Zeigerkennung in einer Tabelle von Zeigerkennungen enthalten und in der Tabelle als dem Systemzeiger gleichwertig markiert ist; und
Mittel zum Feststellen anhand der Form des systemfremden Zeigers, ob der systemfremde Zeiger dem Systemzeiger gleichwertig ist, wenn die Zeigerkennung nicht in der Tabelle der Zeigerkennungen enthalten ist.
DE69719404T 1996-05-31 1997-05-29 Verfahren und System zur Erkennung von Zeigern Expired - Fee Related DE69719404T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/660,056 US5898422A (en) 1996-05-31 1996-05-31 Method and system for recognition of pointers

Publications (2)

Publication Number Publication Date
DE69719404D1 DE69719404D1 (de) 2003-04-10
DE69719404T2 true DE69719404T2 (de) 2003-12-04

Family

ID=24647945

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69719404T Expired - Fee Related DE69719404T2 (de) 1996-05-31 1997-05-29 Verfahren und System zur Erkennung von Zeigern

Country Status (5)

Country Link
US (1) US5898422A (de)
EP (1) EP0810514B1 (de)
JP (1) JPH1083274A (de)
DE (1) DE69719404T2 (de)
SG (1) SG52944A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3837812B2 (ja) * 1997-01-30 2006-10-25 株式会社ワコム カートリッジ付コードレス電子ペン
KR100595926B1 (ko) 1998-01-26 2006-07-05 웨인 웨스터만 수동 입력 통합 방법 및 장치
US7345681B2 (en) * 2004-02-17 2008-03-18 Microsoft Corporation Pen data capture and injection
US7855718B2 (en) 2007-01-03 2010-12-21 Apple Inc. Multi-touch input discrimination
US8130203B2 (en) 2007-01-03 2012-03-06 Apple Inc. Multi-touch input discrimination
US8269727B2 (en) * 2007-01-03 2012-09-18 Apple Inc. Irregular input identification
JP5361358B2 (ja) * 2008-12-11 2013-12-04 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
JP2010181616A (ja) * 2009-02-05 2010-08-19 Canon Inc 表示装置及び表示方法
US20110157001A1 (en) * 2009-07-09 2011-06-30 Nokia Corporation Method and apparatus for display framebuffer processing
US9690599B2 (en) 2009-07-09 2017-06-27 Nokia Technologies Oy Method and apparatus for determining an active input area
JP5840174B2 (ja) * 2013-06-21 2016-01-06 キヤノン株式会社 情報処理装置、その装置の制御方法、プログラム
US10097538B1 (en) * 2017-08-12 2018-10-09 Growpath, Inc. User authentication systems and methods

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4686332A (en) * 1986-06-26 1987-08-11 International Business Machines Corporation Combined finger touch and stylus detection system for use on the viewing surface of a visual display device
US4625202A (en) * 1983-04-08 1986-11-25 Tektronix, Inc. Apparatus and method for generating multiple cursors in a raster scan display system
JP2557359B2 (ja) * 1986-12-26 1996-11-27 株式会社東芝 情報処理装置
US5007085A (en) * 1988-10-28 1991-04-09 International Business Machines Corporation Remotely sensed personal stylus
US5157384A (en) * 1989-04-28 1992-10-20 International Business Machines Corporation Advanced user interface
US5252951A (en) * 1989-04-28 1993-10-12 International Business Machines Corporation Graphical user interface with gesture recognition in a multiapplication environment
US5255363A (en) * 1990-06-19 1993-10-19 Mentor Graphics Corporation Graph-based programming system and associated method
AU8649291A (en) * 1990-09-06 1992-03-30 Next Computer, Inc. Method and apparatus for identifying wait states and for providing a wait cursor in a computer system
US5276816A (en) * 1990-12-31 1994-01-04 International Business Machines Corporation Icon object interface system and method
US5231698A (en) * 1991-03-20 1993-07-27 Forcier Mitchell D Script/binary-encoded-character processing method and system
US5664210A (en) * 1991-08-19 1997-09-02 International Business Machines Corporation Method and system of providing multiple selections in text on a computer display
GB2266823A (en) * 1992-04-21 1993-11-10 Ibm Correlation of cursor position in a computer system
US5442376A (en) * 1992-10-26 1995-08-15 International Business Machines Corporation Handling multiple command recognition inputs in a multi-tasking graphical environment
US5515081A (en) * 1993-11-30 1996-05-07 Borland International, Inc. System and methods for improved storage and processing of BITMAP images
US5586243A (en) * 1994-04-15 1996-12-17 International Business Machines Corporation Multiple display pointers for computer graphical user interfaces
US5473343A (en) * 1994-06-23 1995-12-05 Microsoft Corporation Method and apparatus for locating a cursor on a computer screen
US5570113A (en) * 1994-06-29 1996-10-29 International Business Machines Corporation Computer based pen system and method for automatically cancelling unwanted gestures and preventing anomalous signals as inputs to such system

Also Published As

Publication number Publication date
DE69719404D1 (de) 2003-04-10
EP0810514B1 (de) 2003-03-05
EP0810514A3 (de) 1998-09-16
EP0810514A2 (de) 1997-12-03
JPH1083274A (ja) 1998-03-31
US5898422A (en) 1999-04-27
SG52944A1 (en) 1998-09-28

Similar Documents

Publication Publication Date Title
DE3689034T2 (de) Elektronisches System zur Text-Grafik-Aufbereitung.
DE69026647T2 (de) Zoommodusbetriebsarten in einem Anzeigegerät
DE69328802T2 (de) Vorrichtung und Verfahren zur Identifizierung von Eingabedaten, die von einer Stift-basierten Benutzerschnittstelle erzeugt werden
DE3587209T2 (de) Datenanzeigesystem mit Möglichkeit zum Mischen von Anzeigequellen und mit Benutzung eines Anzeigegerätes vom Speichertyp.
DE4301766C2 (de) Verfahren zum Darstellen eines doppelseitigen, umwendbaren elektronischen Papiers
DE69615236T2 (de) Verfahren zur vergrösserten Sichtbarkeit und Auswahlmöglichkeit von Ikonen
DE69332727T2 (de) Informationsverarbeitungsgerät
DE3689416T2 (de) Mustermerkmalextraktion.
DE3885085T2 (de) Verfahren zur automatischen Änderung der Abmessungen von angezeigten Objekten in Bezug auf die Änderungen der Abmessungen des Bildfensters.
DE60219048T2 (de) Sektionsextrahierungswerkzeug für pdf-dokumente
DE3787162T2 (de) Feedbacksystem für eine berührungsaktive Anzeige.
DE3787125T2 (de) Mehrfensteranzeigesystem.
DE69525401T2 (de) Verfahren und Gerät zur Identifikation von Wörtern, die in einem portablen elektronischen Dokument beschrieben sind
DE69321569T2 (de) Verfahren und Vorrichtung zur Zeicheneingabe
DE69511786T2 (de) Zeichenerkennungsgerät und Verfahren zur Steuerung desselben
DE3751075T2 (de) Verfahren und System zur Steuerung einer Multibildschirmanzeige.
DE60205750T2 (de) Lenkung der aufmerksamkeit des benutzers auf bestimmte icons, denen sich ein zeiger nähert, in interaktiven benutzerschnittstellen
DE69610478T2 (de) Zeichenerkennungssystembestimmung von abgetasteten und "echtzeit"-handgeschriebenen zeichen
DE3629104C2 (de)
DE3787496T2 (de) Verfahren und Einrichtung zum Steuern von Mehrfenstern und Arbeitsstation mit Mehrfensterfunktion.
DE3586342T2 (de) Anlage fuer automatische auspassung und aufbereitung handgeschriebener textbilder.
DE68917771T2 (de) Virtueller Anzeigeadapter.
DE60314563T2 (de) Überlagerung mit elektronischer Tinte
DE69719404T2 (de) Verfahren und System zur Erkennung von Zeigern
DE3619420C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee