Inscrit le: 12 Aoû 2006, 00:00 Messages: 235 Points d'aide: 37/60
Créations :
Voir ses créations
|
Bonsoir à tous, Je ne suis pas passé ici depuis... Longtemps. Petit instant de nostalgie. Je l'ai pas trouvé dans les scripts proposés, donc voici une version très simple d'utilisation de la gestion du clavier (faite par TLN et moi il y a... Je sais plus..) Comment que ça marche ?En event, très simplement : "Condition...", quatrième onglet, sélectionner "script" et entrer : - Code: Tout sélectionner
press "a"
* La condition sera remplie si la touche a est enfoncée- Code: Tout sélectionner
trigger "b"
* La condition sera remplie si la touche b est cliquéeLa liste des touches est dans le script. Vous pouvez changer les champs à votre aise ("sg" et "click gauche" corresponde à la même touche) ainsi que les noms des méthodes. En script (en ruby), de la même façon, sauf qu'il faut penser à mettre à jour avec Input.update. Comment installer le script ?En plaçant ceci avant Main dans la liste des scripts. - Code: Tout sélectionner
#=================================== # Clavier #--------------------------------------------------------------- # Gestion avancée du clavier (script et event) #=================================== Press = Win32API.new("user32","GetKeyState",['i'],'i') #--------------------------------------------------------------- # Si la touche est cliquée #--------------------------------------------------------------- def trigger(n) R[n][1] end #--------------------------------------------------------------- # Si la touche est pressée #--------------------------------------------------------------- def press(n) (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1) end #--------------------------------------------------------------- # Si la touche est pressée - Seconde version #--------------------------------------------------------------- def repeat(n) if Graphics.frame_count % 4 == 3 return press(n) else return false end end #--------------------------------------------------------------- # Mise à jour du système #--------------------------------------------------------------- class Keys def Keys.update() TAB_KEY.keys.each do |n| m = R[n][0] pr = (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1) tr = (pr&&!m) R[n] = [pr, tr, m] end end end #-------------------------------------------------------------- # Inclusion de le module Input #-------------------------------------------------------------- module Input module_function class << self alias update_02112011 update end def update Keys.update() update_02112011() end end # Tableau avancé des touches TAB_KEY = { "click gauche" => 1, "sg" => 1, "click droit" => 2, "sd" => 2, "click milieu" => 4, "sm" => 4, "del" => 8, "tab" => 9, "enter" => 13, "shift" => 16, "pause" => 19, "maj lock" => 20, "esc" => 27, "space" => 32, "pg up" => 33, "pg down" => 34, "end" => 35, "home" => 36, "left" => 37, "up" => 38, "right" => 39, "down" => 40, "select" => 41, "print" => 42, "impr" => 43, "insert" => 44, "suppr" => 46, "a" => 65, "b" => 66, "c" => 67, "d" => 68, "e" => 69, "f" => 70, "g" => 71, "h" => 72, "i" => 73, "j" => 74, "k" => 75, "l" => 76, "m" => 77, "n" => 78, "o" => 79, "p" => 80, "q" => 81, "r" => 82, "s" => 83, "t" => 84, "u" => 85, "v" => 86, "w" => 87, "x" => 88, "y" => 89, "z" => 90, "0" => 96, "1" => 97, "2" => 98, "3" => 99, "4" => 100, "5" => 101, "6" => 102, "7" => 103, "8" => 104, "9" => 105, "*" => 106, "+" => 107, "num" => 108, "-" => 109, "." => 110, "/" => 111, "F1" => 112, "F2" => 113, "F3" => 114, "F4" => 115, "F5" => 116, "F6" => 117, "F7" => 118, "F8" => 119, "F9" => 120, "F10" => 121, "F11" => 122, "F12" => 123, "lmaj" => 160, "rmaj" => 161, "ctrl" => 162, "lctrl" => 162, "rctrl" => 163, "lalt" => 164, "ralt" => 165, "," => 188 } # Tableau relatif pour les booléens R = TAB_KEY.clone R.keys.each do |k| R[k] = [false, false, false] end
------------------------------------------------------------------------------ Pour les amateurs de ruby, une petite explication de la mise à jour : TAB_KEY contient une série de champs correspondant chacun à un nombre (l'index de la touche du clavier correspondante) R contient la même série de champs, mais correspondant cette fois à un tableau de booléen de ce modèle : [la touche est elle enfoncée ?, la touche est elle cliquée ?, la touche était elle enfoncée la fois d'avant ?] * Petit détail de la manip pour la mise à jour Boucle pour chaque champs de TAB_KEY (variable n) TAB_KEY.keys.each do |n| m c'est "la touche était elle enfoncée la fois d'avant ?", on lui assigne donc le premier booléen du tableau. m = R[n][0] pr c'est si la touche est enfoncée, on fait appel à Press (une librairie API) pour le savoir. pr = (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1) tr c'est si la touche est cliquée, on lui assigne la valeur suivante : pr et non m c'est à dire : la touche est elle enfoncée ? et la touche n'était elle pas enfoncée avant ? tr = (pr&&!m) ------------------------------------------------------------------------------ En principe ça devrait fonctionner sur VX mais je ne l'ai jamais utilisé que sur XP. C'était la petite contribution posthume de corbaque 
|
|