web-dev-qa-db-fra.com

Créer des "fausses clés" que l'ordinateur interprète comme réelles?

Explication

Bon, voici donc une photo de la disposition générale d’un clavier.

Ce que je me demande, c'est: Est-il possible d'émuler des touches supplémentaires sur un clavier autre que les touches standard? Par exemple, je pourrais faire croire à mon ordinateur que mon clavier a également 3 touches supplémentaires étiquetées FK1, FK2 et FK3.

Ces trois touches supplémentaires ne seraient pas des lettres, comme Home, Insert, Page up, etc.
En gros, ils ne feraient rien, à moins d’être affectés à quelque chose. Par exemple, si je mets un raccourci clavier dans un programme pour utiliser FK1 , il l'enregistrera.

Pourquoi?

Je suis content que vous ayez demandé. Je joue beaucoup à un jeu appelé ArmA 3 , et ceux d'entre vous qui sont familiarisés avec le jeu savent qu'il utilise à peu près toutes les touches du clavier.
Pour communiquer avec mes amis dans ce jeu, j'utilise TeamSpeak. J'ai une table d'harmonie pour teamspeak et je veux pouvoir activer différents sons à l'aide de raccourcis clavier au lieu de tout en maintenant les touches Alt-tabantes et cliquables, mais il ne reste pratiquement aucune clé libre dans ArmA avec tous les mods que j'utilise.

Même si vous pouviez créer ces "fausses clés", comment les utiliseriez-vous dans le jeu si elles n'étaient pas sur un clavier réel?

Excellente question .
Mon clavier est un Logitech G910 Orion Spark, qui contient 27 macros. Je suppose que je peux configurer chacune de ces macros pour appeler les faux boutons du clavier lors de l'utilisation.

C'est probablement extrêmement déroutant à lire, mais j'ai fait de mon mieux.

Windows 10 Pro (x64)

19
Josh Silveous

Lorsque vous appuyez sur une touche de votre clavier, le matériel génère un "code de balayage", que le logiciel interprète ensuite comme une certaine pression sur une touche.

réaffectation de clé

KeyTweak vous permet de réaffecter la pression de touche que Windows interprète à partir de chaque code d'analyse en ajoutant des entrées de registre appropriées.

Malheureusement, cela ne vous permet pas d'ajouter de fausses clés supplémentaires. Le plus proche est de permettre la réaffectation des touches de contrôle multimédia/Web de certains claviers. De plus, il ne vous permet pas d’attribuer des codes de touches que votre clavier n’utilise pas normalement. Donc, si vous avez un clavier américain, il ne vous laissera pas attribuer Ó ou £. Donc, vous seriez toujours limité à utiliser les lettres de clé normales, que vous dites avoir épuisées.

le simulant

AutoHotkey permet aux codes de balayage et aux symboles inhabituels d'être générés par des scripts.

Ce script génère £ chaque fois que vous appuyez sur Win + p (j'ai récupéré le symbole sur Internet et je l'ai collé dans l'éditeur de texte que j'utilisais pour créer le script):

#p::
send, £

En fonction de votre jeu, vous pourrez peut-être utiliser un script comme celui-ci pour obtenir £ comme clé de votre jeu. Toutefois, si le jeu attend que les codes de balayage du clavier soient générés, cela ne fonctionnera pas. Cela dépend de la façon dont le jeu interagit avec le matériel.

Heureusement, AutoHotkey peut également générer des codes de numérisation au clavier. Ce script générera un espace lorsque vous appuierez sur Win + p, car le code de balayage 39 (hex) est un espace (voir Liste des codes de balayage ).

#p::
send, {sc39}

AutoHotkey a également une autre méthode pour générer des clés virtuelles. Je n'ai pas étudié la différence, mais ce script générera de l'espace en utilisant une touche virtuelle lorsque vous appuierez sur win + p:

#p::
send, {vk20}

Cette référence répertorie tous les codes de clé virtuelle, y compris de nombreuses clés non standard que vous n’avez pas encore utilisées: https://autohotkey.com/board/topic/98757-how-to -create-a-new-virtual-keys/

Vous pouvez essayer de créer un script qui envoie une clé virtuelle non standard à votre jeu. Si le jeu l'enregistre et vous permet de le sauvegarder dans sa page de configuration du clavier, vous êtes sur le point de le faire fonctionner.

La dernière pièce du puzzle consiste à demander aux macros Logitech d'appeler le script AutoHotkey qui génère la clé virtuelle. Vous créez un script AutoHotkey sans touche de raccourci. Il est donc immédiatement déclenché lors de son exécution - tel que

send, {vk7B}

ou

send, £

Associez les fichiers * .ahk au programme Autohotkey, puis demandez à la macro Logitech d'ouvrir le script enregistré.

Remarque: je n'ai pas testé cela dans aucun jeu. Il y aura probablement des résultats différents dans différents jeux - en fonction de ce qu'ils acceptent comme des entrées valides. Dans le lien Touches virtuelles ci-dessus, les utilisateurs discutent de la possibilité de faire exactement ce que vous voulez et semblent utiliser avec succès les touches F13 à F24, alors essayez peut-être d'abord.

vk7B    sc58    F12
vk7C    sc64    F13
vk7D    sc65    F14
vk7E    sc66    F15
vk7F    sc67    F16
vk80    sc68    F17
vk81    sc69    F18
vk82    sc6A    F19
vk83    sc6B    F20
vk84    sc6C    F21
vk85    sc6D    F22
vk86    sc6E    F23
vk87    sc76    F24

EDIT: Comme demandé dans les commentaires; un script simple pour créer F13 pourrait ressembler à:

b::
send, {vk7C}

Chaque fois que vous appuyez sur 'b' alors que ce script est actif (dans votre bac, près de l'horloge), F13 sera envoyé. Ce script reste actif et s'exécute chaque fois que vous appuyez sur "b" jusqu'à ce que vous le supprimiez. Une fois que le jeu enregistre la configuration F13 dans la configuration de la clé, supprimez ce script et créez-en un comme ceci pour que Logitech appelle:

send, {vk7C}

Celui-ci ne restera pas actif, il s'exécutera une fois puis se terminera à chaque appel.

14
Sir Adelaide

Toutes mes excuses pour la réponse tardive. J'avais besoin d'accéder aux touches de fonction antérieures à F12, ce que les fabricants de clavier actuels ne semblent pas prendre en compte, mais assez facile avec AutoHotkey. J'ai utilisé cela pour ajouter ces touches sous forme de macros à ma souris, ce qui ne prend pas en charge l'ajout de clés arbitraires autrement.

z::
send, {F13}
return

x::
send, {F14}
return

c::
send, {F15}
return

v::
send, {F16}
return

b::
send, {F17}
return

n::
send, {F18}
return

m::
send, {F19}
return

l::
send, {F20}
return

k::
send, {F21}
return

j::
send, {F22}
return

h::
send, {F23}
return

g::
send, {F24}
return
0
blha303