Photoshop: Allow custom keyboard mapping to Toggle Precise Cursors

  • 2
  • Idea
  • Updated 6 years ago
  • (Edited)
The use of the CapsLock key in Photoshop is completely inconsistent with the majority of settings. It can't be changed and is critical to allow easy toggling of Precise Cursors. This seriously needs to be reconsidered.

Unlike nearly every other setting in Photoshop, you cannot remap the trigger for Precise Cursors. Please add "TOGGLE PRECISE CURSORS" to the list of settings you can create a custom keyboard mapping for.

I disable my CapsLock key and have had the hardest time with Photoshop because of this peculiar policy. You can leave it the default key mapping so that nobody has to change their current workflow, but at least make it customizable for those of us who don't want to use CapsLock.
Photo of Jason Burnett

Jason Burnett

  • 4 Posts
  • 2 Reply Likes
  • Frustrated

Posted 6 years ago

  • 2
Photo of David Dobish

David Dobish, Senior QE Photoshop

  • 197 Posts
  • 50 Reply Likes
How about this as a work around? I created some scripts that you can try out.

1. Copy one of the Functions Below into ExtendScript
2. Save as...
3. Name it something that makes sense .jsx
4. Repeat 1 & 2 for other functions. Each one is a different cursor mode.
5. In PS Record Action
6. Choose Function Key to trigger action. F5 for example
7. File:Scripts:Browse...
8 Choose script you want. (Precise, Standard, Normal)
9. Stop recording
10. Create new action
11. Assign Function Key to that action F6 for example.
12. File:Scripts:Browse...
13. Choose script you want. (Precise, Standard, Normal)
14. Stop Recording

fn + F5 one mode
fn + F6 other mode

Now you have a toggle between cursor modes via actions and scripting. You can do this for a third mode if you like. I just did the two.

function normalCursor ()
{// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc21 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref13 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idDspP = charIDToTypeID( "DspP" );
ref13.putProperty( idPrpr, idDspP );
var idcapp = charIDToTypeID( "capp" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref13.putEnumerated( idcapp, idOrdn, idTrgt );
desc21.putReference( idnull, ref13 );
var idT = charIDToTypeID( "T " );
var desc22 = new ActionDescriptor();
var idPntC = charIDToTypeID( "PntC" );
var idCrsK = charIDToTypeID( "CrsK" );
var idBrsS = charIDToTypeID( "BrsS" );
desc22.putEnumerated( idPntC, idCrsK, idBrsS );
var idDspP = charIDToTypeID( "DspP" );
desc21.putObject( idT, idDspP, desc22 );
executeAction( idsetd, desc21, DialogModes.NO );
}

normalCursor ();

///////////////////////////////////////////////////////

function preciseCursor ()
{
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc3 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idDspP = charIDToTypeID( "DspP" );
ref2.putProperty( idPrpr, idDspP );
var idcapp = charIDToTypeID( "capp" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref2.putEnumerated( idcapp, idOrdn, idTrgt );
desc3.putReference( idnull, ref2 );
var idT = charIDToTypeID( "T " );
var desc4 = new ActionDescriptor();
var idPntC = charIDToTypeID( "PntC" );
var idCrsK = charIDToTypeID( "CrsK" );
var idPrc = charIDToTypeID( "Prc " );
desc4.putEnumerated( idPntC, idCrsK, idPrc );
var idDspP = charIDToTypeID( "DspP" );
desc3.putObject( idT, idDspP, desc4 );
executeAction( idsetd, desc3, DialogModes.NO );
}

preciseCursor ();

/////////////////////////////////////////////////////////

function standardCursor ()
{
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc1 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idDspP = charIDToTypeID( "DspP" );
ref1.putProperty( idPrpr, idDspP );
var idcapp = charIDToTypeID( "capp" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref1.putEnumerated( idcapp, idOrdn, idTrgt );
desc1.putReference( idnull, ref1 );
var idT = charIDToTypeID( "T " );
var desc2 = new ActionDescriptor();
var idPntC = charIDToTypeID( "PntC" );
var idCrsK = charIDToTypeID( "CrsK" );
var idStd = charIDToTypeID( "Std " );
desc2.putEnumerated( idPntC, idCrsK, idStd );
var idDspP = charIDToTypeID( "DspP" );
desc1.putObject( idT, idDspP, desc2 );
executeAction( idsetd, desc1, DialogModes.NO );
}

standardCursor ();