web-dev-qa-db-fra.com

Manière générique de remapper chaque bouton de support

Aujourd'hui, j'ai essayé de remapper certaines touches de support du clavier sur des fonctions plus utiles, sans succès.

enter image description here

Le problème

  • Le fabricant ne fournit pas d’utilitaire pour lier et exécuter des commandes personnalisées.
    Mon clavier précédent de Logitech avait de telles options dans leur logiciel SetPoint
  • Les codes de clé (ou scancode) n'étaient pas reconnus par la plupart des programmes que j'avais l'habitude d'attraper les codes de clé sous-jacents.

    Par exemple, l'excellent outil SharpKeys possède un mode de capture dans lequel il vous indique la touche sur laquelle vous venez d'appuyer. Il m'a fallu un certain temps pour comprendre que le code de la clé m'avait été mal défini. Lors de mes tests, j'ai appuyé sur le "bouton étoile" en haut à droite et SharpKeys m'a dit qu'il s'agissait de la clé "D" avec le code clé 00_20. Mais le code de clé correct serait 00_181

    Une autre tentative a été la suivante script AutoHotKey , qui n'a pas non plus reconnu mes clés de support inhabituelles

La tâche

  • Trouvez les codes de clé corrects même pour les boutons multimédias inhabituels
  • Remappez toutes les touches multimédias sans l'installation d'un outil ou programme supplémentaire. Un tweak de registre, l'utilisation d'un pilote déjà installé ou d'une petite application portable est acceptable
10
nixda

C'est une manière générique de remapper les boutons du clavier. Même les plus étranges


  1. Utilisez KeyCodes (portable, 415 Ko) pour récupérer le code de clé. Téléchargez, extrayez et démarrez KeyCodes3.exe. Appuyez sur votre bouton mystérieux et vous verrez le code clé sous forme décimale

    enter image description here

    Une autre solution était ce script AHK qui utilise un hook de clavier et "KeyHistory"

    #Persistent
    #InstallMouseHook
    #InstallKeybdHook
    while !(getKeyState("F1", "T"))
          KeyHistory
    return
    esc::exitapp
    

    enter image description here

  2. Convertissez le nombre décimal en hexadécimal: 171 "AB

  3. Utilisez le version portable de AutoHotKey pour remapper le bouton.
    Téléchargez et extrayez la version .Zip de votre choix quelque part. Aucune installation nécessaire.
    Créer un nouveau fichier texte et coller

    #NoEnv, #Persistent, #SingleInstance
    vkB5::return                ;music node button  181 » B5   do nothing
    vkAC::return                ;home button        172 » AC   do nothing
    vkAA::return                ;search button      170 » AA   do nothing
    vkAB::Run, c:\myapp.exe     ;star button        171 » AB   execute tool
    vkB4::Send {Volume_Mute}    ;mail button        180 » B4   mute/unmute
    
    • vk représente le code de clé virtuelle suivi de votre code de clé hexadécimale que vous souhaitez remapper
    • :: est l'opérateur de remappage. Gauche est le déclencheur, à droite c'est votre nouveau bouton ou action
    • Send {<my_new_key>} pourrait être n'importe quelle clé de cette liste .
      Vous pouvez également exécuter un chemin personnalisé avec le commande Exécuter .
      Ou si vous souhaitez exécuter à nouveau un bouton de support, utilisez {vkAB} comme action.
  4. Créez un nouveau raccourci dans votre dossier de démarrage automatique pour démarrer votre script AHK à chaque démarrage. Par exemple

    "D:\Tools\AutoHotKey\AutoHotkey.exe" "D:\Tools\AutoHotKey\RemapKeys.ahk"
    

Après le redémarrage ou le démarrage manuel d’un script AHK, tous les boutons sont remappés.

9
nixda

En bref: vous trouverez le mappage des clés multimédia dans la clé de registre suivante: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey"

Par exemple. la clé de messagerie lance généralement l'application de messagerie par défaut.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15\RegisteredApp = "Mail"

Si vous voulez remplacer ceci pour ouvrir le Bloc-notes,

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15\ShellExecute = "notepad.exe"

(Ou changez HKLM si vous voulez modifier pour tous les utilisateurs, etc.)

RegisteredApp signifie que l'application enregistrée pour cette fonction sera appelée. (Comme Mail ci-dessus)

Association signifie que l'application associée à un type de fichier particulier sera ouverte. Par exemple La clé Media est enregistrée par défaut sur .cda, ce qui signifie que l'application utilisée par défaut pour la lecture de CD de musique s'ouvrira en appuyant sur cette touche.

ShellExecute ouvre un programme particulier à exécuter.

Pour plus de détails, lisez cet article

4
Denis Maslov