2009-02-24 5 views
19

Un ami avait du mal à trouver comment attribuer "Ctrl + +" comme touche de raccourci à un ToolStripMenuItem. J'ai fait remarquer que la clé Keys.OemPlus fonctionnerait et que la chaîne d'affichage pour le raccourci devait être définie, mais l'énumération Keys me mystifie.Quelles sont les clés "OEM" dans l'énumération System.Windows.Forms.Keys?

Quel est le problème avec ces clés "OEM"? J'ai fait un peu de recherche et il semble que c'est parce que les clés ne sont prises en charge dans Win2k ou plus tard, mais cela semble ridicule car je suis certain que les gens ont utilisé la clé plus décennies avant Win2k. Pourquoi n'y a-t-il pas de "OemEquals"? Existe-t-il d'autres clés complètement absentes de l'énumération Keys?

Je suis surtout à la recherche d'une réponse à la question de savoir pourquoi ces valeurs nommées spéciales existent, mais j'aimerais entendre une discussion sur les autres questions. Est-il prudent de supposer que puisque le signe plus est sur le signe égal sur mon clavier qu'utiliser Keys.OemPlus et en vérifiant la touche de modification Shift est un OK pour dire si Ctrl + = a été cliqué? Y a-t-il d'autres clés qui ont été omises?

Notez que cette ne une question WPF, bien que les System.Windows.Forms.Keys et System.Windows.Input.Key énumérations semblent identiques (bien que Key est nommé à tort selon les lignes directrices de conception-cadre;))

Répondre

25

Ils ont été introduits avec l'API Windows, ils ne sont pas spécifiques à WPF.

D'abord, ce sont KEY codes, pas de codes de caractères: ils identifient une touche sur votre clavier, pas un caractère - par ex. le caractère 'A' est généralement généré en appuyant sur la touche A tout en maintenant une touche SHIFT enfoncée ou en activant CAPS LOCK.

Les touches OEM sont les clés que varient avec les claviers locaux. Lorsque le clavier américain a des crochets et des accolades, les claviers allemands ont des trémas.

Ils sont appelés "OEM" car le fabricant de l'équipement d'origine (du clavier) était responsable de la définition de leur fonctionnalité.

+2

Je crois que les différentes clés multimédia sont également des clés OEM. –

+0

Ainsi par exemple pour 'Oem3' qui est la clé de retour' '' est-ce que dire que ce n'est pas commun sur les claviers non US donc ça ne sera pas 'Key.BackTick' mais tant que je suis sur une mise en page aux États-Unis, il devrait toujours représenter la clé arrière-tick? –

1

signifie OEM "Original Equipment Manufacturer" (ou quelque chose relativement proche de cela). Je pense que c'est une tentative de la part de WPF d'être plutôt plate-forme neutre. C'est juste une opinion cependant.