Old 04-24-2019, 01:47 PM   #1
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default Besoin d'aide des scripters

Bonjour à tous

Grâce au snippet de code de X Raym, j'ai pondu ceci

Code:
--[[
 * ReaScript Name: Continuous push shortcut to toggle arm action
 * Author: X-Raym & ReNo
 * Licence: GPL v3
 * REAPER: 5.0
 * Version: 1.0
--]]
 
--[[
 * Changelog:
 * v1.0 (2019-04-10)
  + Initial Release
--]]

-- Note: Link your keys to No-op (no action) in action list or to the orignal action 
-- Note: Be very strict about focus (is arrange view in focus, is mouse over item etc) else the action might trigger at unexpected moment (like writing track name)

-- USER CONFIG AREA --
action_id = 40012 -- Item: Split items at edit or play cursor
VirtualKeyCode = 0x53 -- S -- https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
section = "Main"
----------------------

-- Globals
armed, section = reaper.GetArmedCommand()
 if armed == action_id then
 toggle_state = 1
 else
 toggle_state = 0 
end
-- Set ToolBar Button State
function SetButtonState( set )
  if not set then set = 0 end
  local is_new_value, filename, sec, cmd, mode, resolution, val = reaper.get_action_context()
  local state = reaper.GetToggleCommandStateEx( sec, cmd )
  reaper.SetToggleCommandState( sec, cmd, set ) -- Set ON
  reaper.RefreshToolbar2( sec, cmd )
end
  
-- Main Function (which loop in background)
function main()

  retval, state = reaper.JS_VKeys_GetState()
  window, seg, detail= reaper.BR_GetMouseCursorContext()
  if state:byte(VirtualKeyCode) ~= 0 then
    if toggle_state == 0 and window == "arrange" then
      --reaper.ShowConsoleMsg("G key is pressed" .. "\n")
      reaper.ArmCommand( action_id , "Main") -- Toggle grid
      reaper.UpdateArrange()
      toggle_state = 1
    end
  else
    if toggle_state == 1 and window == "arrange" then
      --reaper.ShowConsoleMsg("G key is released" .. "\n")
      reaper.ArmCommand(0, "Main") -- Toggle grid
      reaper.UpdateArrange()
      toggle_state = 0
    end
  end
  
  reaper.defer( main )
  
end

-- RUN
if not reaper.JS_VKeys_GetState then
  reaper.ShowConsoleMsg('Please Install js_ReaScriptAPI extension.\nhttps://forum.cockos.com/showthread.php?t=212174\n')
else
  reaper.ClearConsole()
  SetButtonState( 1 )
  main()
  reaper.atexit( SetButtonState )
end

C'est un script defer qui fait en sorte que lorsque la touche "S" du clavier est maintenue, l'action "Item: Split items at edit or play cursor" est armée dans la souris jusqu'au relachement de la touche "S"

C'est pratique mais il y'a quelques problèmes

-Si je veux avoir ce confort ergonomique sur d'autres raccourcis, il faut pondre autant de script que d'action (et le lancer tous au démarrage de RPR)

-La touche concernée n'est pas en rapport avec le raccourcis clavier affecté au script. pire, si j'alloue le raccourcis clavier S à une autre action, celui-ci fonctionne normalement et on peut très vite perdre en cohérence si on change des raccourcis clavier


Je me demandais juste si il n'y avait pas moyen d'obtenir ces deux choses via lua et/ou l'API de RPR (et extensions)

1) intercepter les virtual keycode des touches enfoncées
2) que reaper vérifie si la touche n'est pas allouée à une raccourcis clavier et, le cas échéant, chopper le command id de l'action en question et sa section?


Ca permettrait de n'avoir qu'un gros script qui permet de faire passer n'importe quel action en mode "arm" à partir du moment où l'on maintient la touche de raccourcis qui lui est allouée!


Des idées?

D'avance merci
Reno.thestraws is offline   Reply With Quote
Old 04-24-2019, 02:52 PM   #2
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 6,032
Default

Cela me parait trop complexe,
quelques infos:
  • la liste des raccourcis claviers utilisés est dispo dans un reaper-kb.ini, avec les lignes qui ont Key en mot clé. Chez moi c'est un fichier de 5600 lignes (vu qu'il a aussi les custom actions). Parser ce fichier à chaque execution du script juste pour voir si la touche n'est pas affecté ) autre chose me parait complétement overkill (à la fois d'un point de vue performance mais aussi de dev). (EDIT: cela dit on peut parser par le bas du fichie rligne à ligne, là ce sera plus rapide du coup vu que les Keys sont à la fin - mais les keys sont pas encodé comme dans le script, et a ma connaissance il n'y a pas de fonction simple pour passer de l'u à lautre format)
Quote:
-Si je veux avoir ce confort ergonomique sur d'autres raccourcis, il faut pondre autant de script que d'action (et le lancer tous au démarrage de RPR)
Quote:
Ca permettrait de n'avoir qu'un gros script qui permet de faire passer n'importe quel action en mode "arm" à partir du moment où l'on maintient la touche de raccourcis qui lui est allouée!

  • Le script peut déjà être utilisé pour l'ensemble des actions dont ont veut basculer l'état à la pression d'une touche. Juste à rajouter ses propres raccourcis et ses conditions et c'est bon.
C'est donc en somme déjà possible de modifier le script pour faire ça sans devoir coder de nouvelles fonctions ou de choses complexe; Toutes les fonctions nécéssaires sont déjà dans le code existant.

Last edited by X-Raym; 04-24-2019 at 03:03 PM.
X-Raym is offline   Reply With Quote
Old 04-24-2019, 11:06 PM   #3
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default

oui mais le but est de degeeker le tout justement

Si dans 6 mois, il y'a une nouvelle action dans reaper 6 et que je veux raccorder cette nouvelle action à un raccourcis clavier, va falloir que je réouvre le script pour aller ajouter un caractère ou modifier l'action allouée à une touche parce que, je décide de changer.

La, avec ce que je préconise, si je fait un changement de raccourcis ou qu'une nouvelle action arrive, le script reste identique mais fonctionnel

En gros, le script s'appellerait

options : toggle arm action when holding their key shortcut.

Allez franchement, je suis sur que c'est possible?
Reno.thestraws is offline   Reply With Quote
Old 04-25-2019, 04:37 AM   #4
Homme studio
Human being with feelings
 
Homme studio's Avatar
 
Join Date: Jan 2011
Location: Chanaz-Savoie
Posts: 798
Default

Moi je fais une action personnalisée avec l'action "toggle arm of next action" suivie de l'action que je veux armer.
Ça revient à faire 2 clics au lieu d'un seul tenu, donc pas une grosse différence en terme de travail, mais l'avantage c'est que c'est lié à une action et non à son raccourci, qui peux donc changer plus tard.
__________________
La musique est un cri qui vient de l'intérieur.(Bernard Lavilliers)
Homme studio is offline   Reply With Quote
Old 04-25-2019, 05:06 AM   #5
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default

Non mais oui mais je suis d'accord mais le toggle arm next action est hyper limité, déjà , il ne fonctionne pas dans une cycle action

l'exemple ici du code est pour donner une base, mais ca ouvre des possibilités énormes
Reno.thestraws is offline   Reply With Quote
Old 04-26-2019, 12:13 AM   #6
Arpegia
Human being with feelings
 
Join Date: Jun 2017
Location: Paris-Bruxelles
Posts: 814
Default

Je ne suis pas certain d'avoir compris, mais l'idée est-elle d'ajouter des possibilités aux "mouse modifier" pour ne pas les limiter aux simples: Cmd+Clic ou Shift+Clic ou Alt+Clic etc...

En effet, si je peux faire un "M+Clic" ou un "B+clic" pour activer des commandes, cela m'intéresse beaucoup. Car la fonction fonction "toggle" ON/OFF n'est pas toujours adaptée.

vous me direz...
Arpegia is offline   Reply With Quote
Old 04-26-2019, 12:47 AM   #7
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default

Arpegia, c'est exactement ça

Avec le script au dessus, la touche S devient un mouse modifiers qui fait en sorte que le click effectue l'action "split item" lorsque le S est maintenu enfoncé

regarde

https://drive.google.com/open?id=1uz...Z1U-LoIxyt-2nq
Reno.thestraws is offline   Reply With Quote
Old 04-26-2019, 10:11 AM   #8
Arpegia
Human being with feelings
 
Join Date: Jun 2017
Location: Paris-Bruxelles
Posts: 814
Default

Quote:
Originally Posted by Reno.thestraws View Post
Arpegia, c'est exactement ça

Avec le script au dessus, la touche S devient un mouse modifiers qui fait en sorte que le click effectue l'action "split item" lorsque le S est maintenu enfoncé

regarde

https://drive.google.com/open?id=1uz...Z1U-LoIxyt-2nq
C'est cool ça... LA question alors: comment modifier le script pour y adresser la fonction qu'on souhaite sur la touche qu'on souhaite ?
Arpegia is offline   Reply With Quote
Old 04-26-2019, 03:05 PM   #9
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 6,032
Default

@Arpegia
Il ya juste à modifier les valeurs des variables dans la section USER CONFIG AREA du script:


Code:
-- USER CONFIG AREA -- 
action_id = 40012 -- Item: Split items at edit or play cursor
VirtualKeyCode = 0x53 -- S -- https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
section = "main"
Tu remplaces l'action ID par celle de ton choix (clic droit dans la liste des actions, copier action ID).
Et tu change le virtual key code avec celui de la touche de ton choix avec le lien mentionné.


Tu sauvegardes ça avec sous un nouveau nom de script,
tu assignes la touche du clavier à l'action "Pas d'action" (je ne sais pas comment cela a été traduit) et c'est bon.
X-Raym is offline   Reply With Quote
Old 04-26-2019, 04:49 PM   #10
Arpegia
Human being with feelings
 
Join Date: Jun 2017
Location: Paris-Bruxelles
Posts: 814
Default

Quote:
Originally Posted by X-Raym View Post
@Arpegia
Il ya juste à modifier les valeurs des variables dans la section USER CONFIG AREA du script:


Code:
-- USER CONFIG AREA -- 
action_id = 40012 -- Item: Split items at edit or play cursor
VirtualKeyCode = 0x53 -- S -- https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
section = "main"
Tu remplaces l'action ID par celle de ton choix (clic droit dans la liste des actions, copier action ID).
Et tu change le virtual key code avec celui de la touche de ton choix avec le lien mentionné.


Tu sauvegardes ça avec sous un nouveau nom de script,
tu assignes la touche du clavier à l'action "Pas d'action" (je ne sais pas comment cela a été traduit) et c'est bon.
Merci, merci à toi et à Reno, ... je vais essayer ça
Arpegia is offline   Reply With Quote
Old 04-26-2019, 11:32 PM   #11
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default

arpegia

pas sûr que ça marche sous Mac..
c"est d'ailleurs pour ça que je te conseille d'attendre.

en l'état le script est pratique mais lourd si tu veux l'appliquer à plusieurs actions.

le but du Thread est d'obtenir de l'aide de plus compétents que moi pour faire un truc plus poussé
Reno.thestraws is offline   Reply With Quote
Old 04-27-2019, 04:18 AM   #12
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 9,752
Default

voila où j'en suis et qui explique un peu mieux l'interet de la chose

https://youtu.be/P8pUvqOBytM
Reno.thestraws is offline   Reply With Quote
Old 04-27-2019, 05:37 AM   #13
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 5,985
Default

Woooawww ! c'est brillant comme d'hab, Justin devrait te piquer l'idée pour pouvoir le mettre par défaut sans passer par un script.
__________________
Vincent
ReaperDrummer
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 04-27-2019, 07:31 AM   #14
Arpegia
Human being with feelings
 
Join Date: Jun 2017
Location: Paris-Bruxelles
Posts: 814
Default

Quote:
Originally Posted by Reno.thestraws View Post
arpegia

pas sûr que ça marche sous Mac..
c"est d'ailleurs pour ça que je te conseille d'attendre.

en l'état le script est pratique mais lourd si tu veux l'appliquer à plusieurs actions.

le but du Thread est d'obtenir de l'aide de plus compétents que moi pour faire un truc plus poussé
Bon d'accord, je vais attendre...

je viens de regarder ta vidéo explicative qui est très intéressante. Aussi j'observe que tu as customisé tes icônes. Quel programme utilises-tu pour cela ? ou, existe-il une base de données avec tes icônes?
Arpegia is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 06:12 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.