Así que me harté de esta molestia e hice una solución.
Tiene dos partes:
- Una pequeña utilidad que escribí para guardar la imagen del portapapeles en un archivo .png
- Un script AutoHotKey
El script AutoHotKey comprueba si Photoshop está actualmente activo, y si es así intercepta la combinación de teclas
Ctrl
+V
, y entonces ejecuta la utilidad.
Si la utilidad guardó una imagen en %TEMP%\clip.png
, la combinación de teclas Shift
+Ctrl
+F12
es enviada a Photoshop, la cual he mapeado a una Acción de Photoshop para colocar el archivo clip.png
en el documento actualmente abierto.
Si la utilidad no guardó la imagen, la combinación estándar de teclas Ctrl
+V
se envía a Photoshop y se realiza un pegado estándar.
Todo el código fuente está disponible aquí: https://github.com/SilverEzhik/ClipboardToPNG , y la utilidad se puede descargar aquí: https://github.com/SilverEzhik/ClipboardToPNG/releases
Para crear la acción de Photoshop, simplemente haga una nueva acción con la combinación de teclas asignada a Shift+Ctrl+F12 (o cambie la combinación en el archivo de script), y luego mientras graba, vaya a File
> Place Embedded...
, y pegue %TEMP%\clip.png
en el campo del nombre del archivo.
El código fuente del script AHK se proporciona a continuación - si no ha utilizado AutoHotKey antes, instálelo, y guarde el código en un archivo filename.ahk
en el mismo directorio que la utilidad ClipboardToPNG.exe, y luego simplemente ejecútelo.
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