当前位置:网站首页>Explication détaillée du mécanisme de distribution des événements d'entrée multimodes

Explication détaillée du mécanisme de distribution des événements d'entrée multimodes

2022-07-04 21:02:00 InfoQ

Un.、 Aperçu des entrées multimodes

Le Service d'entrée multimode est conçu pour aider les développeurs à fournir aux utilisateurs une variété de modes d'interaction homme - ordinateur,Sur la base d'une amélioration continue à l'appui des intrants traditionnels,L'entrée multimode fonctionne également OpenAtom OpenHarmony(Ci - après dénommée“OpenHarmony”)Avantages distribués de,Améliorer l'expérience d'interaction entre les appareils,Vers de nouveaux scénarios、Les nouvelles entreprises fournissent un soutien au niveau du système.

Entrée multimode Input Les composants sont: OpenHarmony Cadre de gestion des événements d'entrée au niveau du système;Amarrage sud de divers équipements d'entrée,Rassembler plusieurs événements d'entrée(Appuyez sur la touche、Touch),Par la réunification/Après normalisation,Distribution aux consommateurs(Services du système、Application).
L'amarrage de l'équipement d'entrée vers le sud comprend divers types d'équipement d'entrée.,Par exemple::Écran tactile、Souris、Clavier、TouchPad、Télécommande.

2.、Introduction au flux de données sur les événements d'entrée et l'état de l'appareil

Tout d'abord,,Regardons les flux de données clés dans l'architecture d'entrée multimode,Permet une compréhension approfondie de l'utilisateur à partir de l'origine d'une demande interactive,Au système、Appliquer l'ensemble du processus pour donner une réponse interactive unique.

Comme le montre la figure ci - dessous,Comprend deux types de flux de données clés:

 Saisissez le flux de données de l'état du périphérique:
Les données d'état de l'équipement d'entrée décrivent le changement d'état de l'équipement d'entrée et ses attributs.,Y compris::Insertion de l'appareil、Supprimer l'état、Identification unique de l'équipement、Nom du matériel、Mode d'entrée supporté par l'équipement, etc..
Saisissez les données d'état du périphérique,Module de gestion de l'état du périphérique d'entrée soumis au serveur d'entrée multimode par le pilote du périphérique du noyau. Gestion et maintenance de l'état global du périphérique d'entrée dans le module de gestion du périphérique d'entrée , En même temps, l'état de l'appareil est encapsulé comme une interface de surveillance fournie au module d'affaires supérieur pour surveiller l'état de l'appareil d'entrée du système .

  Flux de données d'événements d'entrée interactive :
Les données de l'événement d'entrée interactive sont utilisées pour décrire le clavier 、Souris、 Événement d'entrée de l'écran tactile ; Les événements clavier comprennent: :Code clé、 Horodatage des touches 、 Informations sur l'équipement auquel appartient la clé ; Les événements de la souris comprennent: :Souris X/Y Coordonnées、Bouton de la souris(Par exemple::À gauche de la souris|Moyenne|A droite)Événements, etc.; Les événements tactiles comprennent: :Horodatage、 Position tactile  X/Y Coordonnées, etc..

Les données de l'événement d'entrée sont rapportées par le pilote de périphérique au module de réception de l'événement d'entrée pour compléter le transfert de l'événement d'entrée de l'espace du noyau à l'espace Utilisateur , Ensuite, le module de prétraitement des événements d'entrée complète le traitement normalisé des événements d'entrée (Appuyez sur la touche KeyCode  Normalisation de la cartographie, etc. ), Enfin, la distribution des événements est effectuée par le module de distribution des événements d'entrée selon le mécanisme et les principes de distribution prédéfinis du système .

Voir le diagramme de flux de données suivant , Il est clair qu'après qu'un utilisateur a lancé une demande d'interaction via un appareil d'entrée , Saisissez l'ensemble du processus d'escalade et de distribution des événements .

null
Fig.1  Saisissez le diagramme de flux de données de l'événement et de l'état de l'appareil

Note:: Description schématique des flèches du diagramme de flux de données

Entrez les instructions du module de distribution des événements pour le prétraitement des événements :
  • Le processus de distribution des événements d'entrée passe d'abord par le module d'interception des événements d'entrée , Lorsqu'un intercepteur est enregistré , L'entrée d'un événement mettra fin à l'escalade continue , L'intercepteur approprié interceptera tous les événements d'entrée . Cette fonction d'interception d'événements supporte actuellement principalement le mode d'accessibilité .
  • Lorsqu'aucun intercepteur n'est enregistré , Les événements d'entrée sont signalés au module d'écoute des événements d'entrée , Application au niveau du système (Par exemple::Configuration du système、Bureau) Saisissez les événements en écoutant , Prise en charge des caractéristiques au niveau du système (Par exemple::Barre d'état cachée/Disparaître, etc.).
  • L'écoute des événements par le module d'écoute des événements ne bloque pas la poursuite de l'escalade des événements ; Prise en charge de l'écoute des événements , Les événements d'entrée continuent également d'être signalés .
  • Les événements clés sont signalés au module de distribution des clés d'abonnement pour traitement , Distribué au traitement de la demande correspondant , Fin du processus de distribution des événements .
  • Les autres événements de l'écran tactile et de la souris ne passent pas par le module de distribution des clés d'abonnement , Continuera à être signalé à la fenêtre d'application pour traitement .

Trois、 Principes de distribution des événements d'entrée multimodes


1. Souris/ Principes de distribution des événements à écran tactile

Souris/ Les coordonnées de l'écran tactile indiquent quelle cible , L'événement d'entrée est distribué à la cible correspondante .
Souris/ Distribution d'événements à écran tactile description spéciale du scénario :
  • Si aucun bouton de la souris n'est enfoncé , Quelle cible est actuellement pointée par la souris , L'événement d'entrée de la souris est distribué à la Cible verrouillée par les coordonnées .
  • Si un bouton de la souris est enfoncé , Utilisez la Cible verrouillée par les coordonnées de la souris lorsque le premier bouton est enfoncé comme point de départ , Jusqu'à ce que tous les boutons soient levés .
  • Lors de l'entrée de l'écran tactile , Diviser l'offre en appuyant sur le premier doigt sur la Cible verrouillée comme événement d'entrée , Jusqu'à ce que tous les doigts soient levés .

2.  Principes de distribution des événements clés

Distribution d'événements clés avec focus dans l'interface visuelle actuelle de l'utilisateur comme sous - offre , Sur quelle cible se concentre l'interface actuelle , Les événements clés sont distribués à l'objet correspondant .

Quatre、OpenHarmony 3.1 Version nouvelle description de l'interface


Afin de mieux soutenir les services d'application et de système de niveau supérieur pour la détection et le traitement en temps réel des événements de changement d'état d'échange à chaud des dispositifs d'entrée ,In OpenHarmony 3.1  Nouvelle version ouverte  JS API Interface, Peut soutenir l'adoption  JS API  Événements de branchement à chaud pour les appareils de surveillance . Fournir également l'identification unique de l'équipement d'entrée Hot swap en enregistrant l'interface de rappel . L'interface de surveillance Hot swap de l'appareil d'entrée est compatible avec  inputDevice.getDevice  La coordination des interfaces permet d'obtenir des informations détaillées sur l'équipement d'échange à chaud ,Y compris::Saisissez le nom du périphérique、 Type d'entrée supporté par l'appareil (Clavier|Écran tactile|Souris|Joystick)Attendez..

1.  Description de l'interface ajoutée au sous - système d'entrée multimode
Saisissez l'interface de moniteur externe Hot swap :function on(type: &quot;change&quot;, listener: Callback<DeviceListener>): void; Saisissez un périphérique pour annuler l'interface d'écoute :function off(type: “change”, listener?: CallbackDeviceListener): void;

2.  Nouvelle description des paramètres de l'interface d'interface
【DeviceListener】

null
【ChangeType】
null

3.  Scénario d'application de l'interface Hot swap de l'appareil d'entrée
Affichage adaptatif du clavier souple : Dans la scène d'édition de texte , Méthode d'entrée en surveillant les opérations d'échange à chaud du dispositif d'entrée du clavier physique , Si le clavier souple de décision adaptatif est affiché . Lorsqu'il y a un clavier physique , Le clavier souple n'a pas besoin d'être affiché , L'opération d'entrée de l'utilisateur complète l'entrée par le clavier physique . Lorsqu'il n'y a pas de clavier physique , Méthode d'entrée , L'utilisateur termine l'opération d'entrée avec un clavier souple .

4.  Exemple d'utilisation de l'interface Hot swap du périphérique d'entrée
Après une compréhension préliminaire de l'interface de moniteur Hot swap de la souris , Regardons de plus près , Comment utiliser l'interface Hot swap du dispositif d'entrée dans le développement pratique :

  • Importer le module en premier
import inputDevice from '@ohos.multimodalInput.inputDevice';

2)  Mise en œuvre de la surveillance des événements d'échange à chaud du dispositif d'entrée par l'intermédiaire de l'interface de surveillance :

//  Méthode d'entrée en s'abonnant à l'état du clavier physique dans la logique d'affichage du clavier souple :Insérer/Retirez
// SelonisPhysicalkeyboardExist La valeur de détermine si le clavier souple est éjecté
...
let isPhysicalkeyboardExist = false;
inputDevice.on(&quot;change&quot;, (callback) => {
 console.log(&quot;type: &quot; + callback.type + &quot;, deviceId: &quot; + callback.deviceId);
 inputDevice.getDevice(callback.deviceId, (ret) => {
 console.log(&quot;The keyboard type of the device is: &quot; + ret);
 if (ret == keyboard.ALPHABETIC_KEYBOARD && callback.type == 'add') { //  Le dispositif de prise à chaud est un clavier
 isPhysicalkeyboardExist = true;
 } else if (ret == keyboard.ALPHABETIC_KEYBOARD && callback.type == 'remove') {
 isPhysicalkeyboardExist = false;
 }
 });
});
...

3) Implémenter l'événement Hot swap du périphérique d'entrée en annulant l'interface d'écoute annuler l'écoute :

listener: function(data) {
 console.log(&quot;type: &quot; + data.type + &quot;, deviceId: &quot; + data.deviceId);
}
//  Annuler séparément listenerSurveillance.
inputDevice.off(&quot;change&quot;, this.listener);
//  Annuler tous les écoutes
inputDevice.off(&quot;change&quot;);//  Après avoir annulé l'écoute , Le clavier souple apparaît par défaut

Note:: Annuler l'interface d'écoute d'événements Hot swap ,GinsenglistenerFacultatif; Lors de l'entrée de la bande de référence listener Pour annuler un rappel d'écoute spécifique . Lorsque le paramètre d'entrée est absent listener, Pour annuler tous les rappels d'écoute .

Par l'introduction ci - dessus,Je crois que tout le monde a raison OpenHarmony  Les mécanismes de traitement et de distribution des événements d'entrée pour le Sous - système d'entrée Multi - mode sont bien compris .Et nous avons aussi raison. OpenHarmony 3.1  L'interface d'écoute Hot swap pour les nouveaux appareils d'entrée est décrite en détail dans la version , En savoir plus sur le Sous - système d'entrée multimode pour les développeurs  API  Interface bienvenue  Gitee En savoir plus:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-inputdevice.md

Je crois que tout le monde a ces connaissances de base comme base pour le développement ultérieur , Dans le développement ultérieur peut être plus facile , Développer de meilleures applications d'expérience interactive pour . J'ai hâte de travailler avec les développeurs pour construire l'expérience utilisateur ultime .Enfin, J'espère que vous vous joindrez à nous pour construire ,Oui. OpenHarmony Communauté(
https://gitee.com/openharmony
)Communiquer et explorer ensemble.

null
原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207041945451116.html