Modifiers

Modifiers.  I have a love-hate relationship with modifiers.  On the one hand, they allow instant access to a lot of functionality in a way that’s easy to manipulate with your non-dominant hand.  On the other hand, they have, in the past, hidden useful functionality in ways that are almost impossible to discover.  This was exasperated with the introduction of Tablet PCs, and their complete lack of useful non-dominant hand input buttons or other devices (which is a very annoying shortcoming of Tablet PCs – c’mon, I may not be able to control a second mouse or whatever with my left hand, but for gosh sakes I can push a darned button!).


In some ways, they are a necessary evil – we’ve already essentially used the entire keyboard for shortcuts, the menu system is already complicated enough without being overloaded with more command variants, and while we’ve been on a general kick to make sure all previously hidden modifier only behavior is exposed in the UI somewhere, if you’re really in a groove you don’t want to have to track your mouse all the way over to the options bar just to add a chunk onto a selection.  Pointer locality is an important part of usability (even if we do sometimes fall short – a subject for later).  Heck, I’ve always meant to either find or implement some sort of floating window modifier substitute widget in my copious free time.


We’re in such desperate straights for additional modifier keys that we treat the space bar as one (which has caused more than one funky issue in the past, with keyboard and locale switching).  I’ve joked in the past that we need Emacs style prefix keys, but I really was only joking, as nobody would get those.  It doesn’t help that when you’re trying to squeak in a feature at the 11th hour, and it’s already too late to modify the documentation, that attaching behavior to a modifier doesn’t make a liar out of the screen shots.  But it also doesn’t make for a discoverable feature.


We have tried to fix this in general by exposing what was modifier behavior only in the user interface – particularly in the options bar.  We’ve also tried to rectify this a little bit for the Macintosh folks by adding the tool hint text to the Info palette in Photoshop CS2.  Windows users will recognize that this is the same text that was in the status bar previously (there were other reasons for getting rid of the status bar, plus I’m a stickler for trying to maintain platform parity).  Unfortunately, the Info palette is underneath the Navigator palette by default.  So, bring that Info palette to the front (the tool hint text is enabled by default – check out the Info palette options from the palette flyout menu for more stuff) and watch the tool hint text while you use different tools.


Yes, of course that doesn’t explain everything.  Like it misses explaining what hitting a modifier before the first mouse click with one of the lasso tools does (it is different than what happens with the modifiers after the first click with one of the lasso tools).  In that case, the cursor should give some hint of what will happen.


It also doesn’t help when you’re not trying to do something with a tool.  Like with the Option/Alt key in most dialogs (hint: watch the button labels).  Or in Photoshop 6, 7 and CS, holding the shift key while modifying a linked type layer will operate on all of the type layers (in Photoshop CS2, you can just multi-select the type layers).


Now, most if this is documented in the manual I’m sure you’ve read (nudge, nudge, wink, wink).  But there’s always the undocumented ones, too, like holding the shift key on Windows when dragging the Photoshop CS2 application window (I’m going to make you try it instead of describing it – and no, it’s not perfect, but it really helps in multi-monitor situations).


Remember, nothing goes boom when you press a modifier.  And there are times when us engineers really want to put in useful functionality when it’s too late to modify the UI.  So don’t forget to give your local friendly modifiers a try.


-Scott

10 Responses to Modifiers

  1. “Or in Photoshop 6, 7 and CS, holding the shift key while modifying a linked type layer will operate on all of the type layers (in Photoshop CS2, you can just multi-select the type layers).”…might mention that in CS2 you can Select Similar to do that multi-selection of the type layers … so far that’s the only reason I’ve found a need to Select Similar and it is handy.”But there’s always the undocumented ones, too, like holding the shift key on Windows when dragging the Photoshop CS2 application window”… so you’re going to make me wait until I get a second monitor? lol. What does holding down the Shift key get you?AM

  2. “…like holding the shift key on Windows when dragging the Photoshop CS2 application window…”Cool! I know an aweful lot of the undocumented features and keyshorts, but this is is new to me. Thanks Scott! 🙂

  3. Scott Byer says:

    Anne-Marie,No need to wait for a second monitor. The Windows shift-while-dragging-the-app works on a single monitor. I think it’s more useful with two monitors, but you might find it useful with just one.-Scott

  4. Julie Meridian says:

    Last year I had the opportunity to practice “flatting” (a stage in coloring comic books) and was able to set up my Intuous 3 tablet so I didn’t have to use the keyboard at all. One bank of four can be used for the top modifiers (Opt/Alt, Shift, Cmd/Ctrl, and spacebar), which is handy to have near your non-dominant hand since you’re likely to be holding the tablet near there. The touchstrips can control zooming and brush resizing. That still leaves four buttons for specific tool shortcuts.The finishing touch was remapping the eraser button–I found I never used it to erase, so I remapped it to deselect and switch to a selection tool for quickly drawing a new selection. I had way too much fun with that one once I set it up.-Julie

  5. Phosphor says:

    Something I’ve been trying to find out, Scott, is whether OS X and Windows OS have native support for more modifier keys than are generally available on standard keyboards? For instance, say a peripheral device had the usual suspects, e.g.: Command, Option, Control & Shift. Would it be possible to introduce additional Modifier keys (let’s call them “Extra”, “Other” and “Foo” for example), and have them be recognised by the OS? By the application?I also pose the same question with regard to the “F” (function) keys. I look at my keyboard and I see 16 F-keys. Is there anything in either OS X or Windows that would prevent an input device from being able to send the proper commands from F-keys designated 17 through 64, for example, and to have them be recognised by the OS and the applications running on it?Answers to these questions are germane to helping me decide whether I want to continue development of a project I’ve begun fleshing out.

  6. Scott Byer says:

    The OS support for modifiers is very limited – just to the ones you see on the keyboard. They dedicate parts of events to the modifiers, so it’s not an application expandable set.That doesn’t prevent the app from using additional keys as modifiers – much in the way Photoshop treats the spacebar as a modifier. But doing so without OS support is tricky, and becomes app-specific.As to the function keys, the Windows headers define all the way out to F24 already, and looks like they’re out of room for adding more (as virtual keys). The Mac headers only seem to define out to F16. It may be that additional ones will flow through the systems, but applications aren’t likely to recognize and do anything with them. In general, the OS will drop them on the floor.-Scott-Scott

  7. Phosphor says:

    Hmmm…I appreciate the reply, Scott, even if I’m not too happy with the message.I have an idea that would make the lives of Power Users (of any applications) immensely easier, but your explanation might have very well put the kibosh on my pursuing it any further.I’d be honored to let you (privately) have a look at my rough rendering of the project so far, Scott, if I might trouble you to let me know if I’m barking up the wrong tree…in the wrong forest…on some distant planet. Having spoken to another developer at length about this, he and I both think what I’m proposing should be do-able in some way, and perhaps I’m just attacking the problem from the wrong direction.Cheers!Phos….

  8. Brendan says:

    Hey Scott,Since you bring up the subject, I wonder if y’all have plans to finish the job of exposing the modifiers in the options bar. The first-order modifier behaviors are exposed (i.e. those you get when you press the modifier before the click), but the second-order behaviors are not (modifier pressed after the click). It was exposure of *those* modifiers (which are truly hidden, especially when you want to combine them with a first-order behavior by doing the press-click-press gymnastic) that originally motivated putting those buttons in the options bar. So how about CS3 has all the modes as buttons and the secrets of pressing modifiers a second time are revealed? Whatta ya say? Go on! You know you want to do it.Cheers,BrendanP.S. While you’re at it, you could take the shape tools off the options bar (they’re tools in the Tool Palette anyway, yet they’re replicated in the options bar). That way the *actual* tool options could come back up out of that little pop-up they’ve be relegated to and live on the options bar, where they belong.P.P.S. Are you gonna leave us Mac users hanging, re: this Windows-only shift-dragging the app window thing? The suspense is killing me.

  9. tim says:

    Just found your blog: what a great technical insight into a large app! thank you.cheers,timfyi:USAGE The verbs exasperate and exacerbate are sometimes confused.Exasperate, the more common of the two, means ‘irritate or annoy to an extreme degree’ (‘He calls me three times a day asking for money. It’s exasperating!’).Exacerbate means ‘increase the bitterness or severity of’ (‘the star shortstop’s loud self-congratulations only exacerbated his teammates’ resentment’).

  10. hanford says:

    I’m only 11 months late with this, but I’ll link you over to my proposed solution for modifers:Solving Photoshop’s Keyboard Shortcut Issue[Hmm, I think the link got eaten by the comment entry stuff. I have some ideas here as well. – Scott]