J'en ai donc eu assez de cette contrariété et j'ai trouvé une solution.
Il y a deux morceaux :
- Un petit utilitaire que j'ai écrit pour sauvegarder l'image du presse-papiers dans un fichier .png
- Un script AutoHotKey
Le script AutoHotKey vérifie si Photoshop est actuellement actif, et si c'est le cas, il intercepte la combinaison de touches Ctrl
+V
, puis il exécute l'utilitaire.
Si l'utilitaire a enregistré une image au format %TEMP%\clip.png
, la combinaison de touches Shift
+Ctrl
+F12
est envoyée à Photoshop, que j'ai mappé en une action Photoshop pour placer le fichier clip.png
dans le document actuellement ouvert.
Si l'utilitaire n'a pas enregistré l'image, la combinaison de touches standard Ctrl
+V
est envoyée à Photoshop et un collage standard est effectué.
Tout le code source est disponible ici : https://github.com/SilverEzhik/ClipboardToPNG , et l'utilitaire peut être téléchargé ici : https://github.com/SilverEzhik/ClipboardToPNG/releases
Pour créer l'action Photoshop, il suffit de faire une nouvelle action avec la combinaison de touches mappée sur Shift+Ctrl+F12 (ou de changer la combinaison dans le fichier script), puis pendant l'enregistrement, aller à File
> Place Embedded...
, et coller %TEMP%\clip.png
dans le champ du nom du fichier.
Le code source du script AHK est fourni ci-dessous - si vous n'avez pas utilisé AutoHotKey auparavant, installez-le, puis enregistrez le code dans un fichier filename.ahk
dans le même répertoire que l'utilitaire ClipboardToPNG.exe, puis exécutez-le simplement.
DoPhotoshopPaste() {
RunWait, %A_ScriptDir%\ClipboardToPNG.exe ; run utility, wait for it to complete
if (ErrorLevel == 0) { ; if error code is 0
SendEvent, +^{F12} ; press Shift+Ctrl+F12 to run the designated Photoshop action to paste
}
else {
SendEvent, ^v ; else, just perform a standard paste.
}
}
#IfWinActive ahk_exe Photoshop.exe ; only activate this hotkey when photoshop is active
^v::DoPhotoshopPaste()
#IfWinActive