11
votes

WPF - Envoyer des clés Redux

Donc, j'utilise un contrôle de la grille WPF troisième partie qui est codé dur pour n'accepter que certaines touches de frappe pour effectuer des réactions de coupe courtes et l'une de celles-ci est la languette de changement de vitesse. Cependant, ma base d'utilisateur est utilisée pour frapper une flèche vers le haut et le bas de la flèche et leur dire «non» n'est pas une option actuelle. Donc, ma seule option que je pense consiste à intercepter la clé de prévisualisation et à envoyer une combinaison de traitreurs clé différente.

Maintenant, j'utilise le code suivant que j'ai trouvé ici pour envoyer un onglet lorsque l'utilisateur appuie sur la flèche vers le bas: < / p> xxx

Cependant, cette méthode est limitée en ce que vous ne semblez pas être capable de simuler une pression sur le bouton de décalage? WPF semble regarder les claviers.Modificateurs pour pouvoir "lire" un quart de travail ou un CTRL, mais il ne semble pas y avoir de facilité pour définir le clavier.Modificateurs de manière programmable. Toute aide là-bas?


0 commentaires

3 Réponses :


0
votes

Je simulez ce que vous dites bien en utilisant ce qui suit n'est pas ce que vous voulez dire? XXX PRE>

Sortie: P>

LeftShift
Tab


3 commentaires

Merci, mais je ne pense pas que c'était ça. Ce que je cherche, c'est une combinaison de clés de l'onglet de changement de vitesse en même temps.


Hmm je vois. C'est bizarre parce que l'utilisation de clé.leftshift | Key.Tab résulte dans une Ctrlleft pour une certaine raison étrangère mais probablement bonne raison. J'aurai un peu plus d'enquête quand je peux


@Rea_andrew: Vous voyez que cela se produit parce que clés ne sont pas des indicateurs pouvant être combinés, c'est une énumération où clé.leftshift = 116 et key.tab = 3 < / code>. Le résultat est de 119 quelle carte vers clé.rightctrl = 119 (Appuyez sur F12 dans Visual Studio lorsque le curseur est sur la touche pour ouvrir la définition).



1
votes

Essayez ce xxx

dans l'application WPF, SendKeys.Send ne fonctionne pas, mais Sendwait fonctionne bien.


0 commentaires

1
votes

Créer un makkeyboardDevice comme ceci (félicitations à Jared Parsons):

https://github.com/vsvim/vsvim/blob/master/src/vimtestutils/mock/mockkeyboardDevice.cs P>

Utilisation: P>

var modKey = ModifierKeys.Shift;
var device = new MockKeyboardDevice(InputManager.Current)
    {
        ModifierKeysImpl = modKey
    };
var keyEventArgs = device.CreateKeyEventArgs(Key.Tab, modKey);
...


0 commentaires