Tuesday, 31 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Angry Birds Chrome now uses the Web Audio API

Author Photo
By Fred Sauer, Developer Advocate

Cross-posted with the Google Web Toolkit Blog

Last week Angry Birds for Chrome was updated to use the Web Audio API for all its in-game audio for Chrome users, which means Chrome users get the full Angry Birds experience, without any plugins. The Web Audio API supports a wide variety of use cases, including the high fidelity and low latency requirements of games. Users of other supported browsers will still get sound via Flash or HTML5 audio.

How does this cross-browser audio magic work? As you may have seen or heard, Angry Birds was in no small part made possible by the cross-platform open source PlayN library. When building for the HTML platform, PlayN in turn relies heavily on Google Web Toolkit (GWT) to delivery a highly optimized web experience for users, and on gwt-voices to easily deliver a cross-browser audio experience.

The responsibility of choosing the appropriate audio API for the game's sound is (mostly) left up to gwt-voices, which chooses the audio API that will give the best experience. If you'd like to hear how other audio APIs perform, you can ask gwt-voices to try to use the Web Audio API, Flash, HTML5 Audio, or even native audio. Your mileage will vary by browser and platform and which plugins you have installed. Also, gwt-voices will select the best available fallback, if the desired audio API is not going to work at all in your environment.

Want to learn more? Check out the Web Audio API tutorial and don't let those pigs grunt too much.

Fred Sauer is a Developer Advocate at Google where most of his time is devoted to Google App Engine and Google Web Toolkit. He is the author of various GWT related open source projects including gwt-dnd (providing in browser Drag and Drop capabilities), gwt-log (an advanced logging framework) and gwt-voices (for cross browser sound support). Fred has dedicated much of his career to Java related development, with an increasing focus on HTML5.

Posted by Scott Knaster, Editor

Monday, 30 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Translating JavaScript to Dart


By Aaron Wheeler, Senior User Experience Prototyper, and Marcin Wichary, Senior User Experience Designer

Cross-posted with the Chromium Blog

It took approximately 2000 years for the original Rosetta Stone to be discovered, which helped translate the Egyptian Hieroglyphs. We couldn’t wait that long to bridge the Dart and JavaScript worlds, so today we are releasing the JavaScript to Dart Synonym app.

Like most web developers, we are familiar, comfortable, and productive with JavaScript. We were curious about Dart, and thanks to a recent Dart hackathon, we had the chance to play with the language and libraries. The problem was, as JavaScript developers, we didn’t know how to map common JavaScript idioms to Dart. Hence the idea for this synonym app was born.

We started with the basics that every JavaScript and jQuery developer knows: variables, arrays, functions, classes, DOM manipulation, and many more. Then, with the help of the Dart team, we recorded the corresponding Dart versions of each idiom. To practice what we learned, we wrote this app with Dart.

We hope our app that maps between JavaScript and Dart eases your introduction to Dart and gives you a sense of where the project is going. We know the team is eager to hear your feedback. Don’t hesitate to join the conversation or file a new issue for either Dart or the Synonym app. And remember, Dart isn’t set in stone, so your feedback counts.

Aaron Wheeler is a user experience prototyper working on special projects that go beyond the Web. He balances design and engineering outside of work as well, splitting time between artistic pursuits and bicycle maintenance.

Marcin Wichary is a user experience designer, currently working on the Chrome browser and thinking of the future of the Web platform. He also occasionally codes interactive homepage doodles, such as Pac-Man and Stanislaw Lem.

Posted by Scott Knaster, Editor

Sunday, 29 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

g|saudi arabia 2.0 is back

Author Photo
By Rania Hadi, MENA Outreach Manager

View this post in Arabic

Building on a year packed with g|days throughout the Middle East and North Africa, today we are announcing Google MENA’s first 2012 event to kick off the new year. On March 24-25, Google, in collaboration with Badir Technology Incubator, will be hosting our second event in the Kingdom: g|saudi arabia 2.0.

We’re coming to Jeddah with a host of fresh sessions on all things technology and business. Google engineers, product managers, and business leaders will be there to not only deliver trainings but will be available for any questions, ideas, or discussions you may want to have. We’re also planning some new formats: hands-on workshops, dedicated sessions for women in technology, and chances to showcase Saudi’s finest developer talent.

So if you are a developer, programmer, IT professional, entrepreneur, or small business/start-up, you won’t want to miss this event! If you need more convincing, have a look at the fun, enthusiasm and energy from last year.

Rania Hadi has been with Google since 2004 and now works on Outreach in MENA. She focuses on building relationships and promoting Google technologies with the developer and tech communities.

Posted by Scott Knaster, Editor

Friday, 27 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Fridaygram: faster web, stronger machines, prettier planet

Author Photo
By Scott Knaster, Google Code Blog Editor

Everybody likes a faster web, and that theme has been evident this week here on Google Code Blog. On Monday, Yuchung Cheng wrote about Google’s research into making TCP faster through various proposals and experiments. Yesterday, Roberto Peon and Will Chan blogged about SPDY (pronounced speedy), Google’s protocol for speeding up the web’s application layer historically handled by HTTP. In related news this week, the chairman of the HTTPbis Working Group announced support for SPDY in a public post.

At Google, these projects are part of our Make the Web Faster initiative, although TCP improvements and SPDY are efforts of the whole community. Even if you’re not working on TCP or SPDY, you can find lots of useful resources at our Make the Web Faster site. For example, there are articles on compression, caching, metrics, and more, a set of tools for measuring and optimizing pages, and several discussion forums for communicating with other interested folks.

Sometimes stronger is more important than faster. Scientists looking to improve the durability of machinery have been studying the yellow fattail scorpion, which uses bumps on its back to resist damage from sandstorms. Researchers hope to use the scorpion’s design to create erosion-resistant surfaces for blades, pipes, and similar parts. Or maybe they’ll make machines that look like giant yellow scorpions.

Finally, take a step back from everything on Earth and have a look at NASA’s latest "Blue Marble" images of our planet. We have a beautiful home.

Let’s say this fast: Fridaygram posts are just for fun. Fridaygrams are designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds. That definitely includes speed, space, and scorpions.

Thursday, 26 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Making the web speedier and safer with SPDY


By Roberto Peon and Will Chan, Software Engineers

Cross-posted with the Chromium Blog

In the two years since we announced SPDY, we’ve been working with the web community on evolving the spec and getting SPDY deployed on the Web.

Chrome, Android Honeycomb devices, and Google's servers have been speaking SPDY for some time, bringing important benefits to users. For example, thanks to SPDY, a significant percentage of Chrome users saw a decrease in search latency when we launched SSL-search. Given that Google search results are some of the most highly optimized pages on the internet, this was a surprising and welcome result.

We’ve also seen widespread community uptake and participation. Recently, Firefox has added SPDY support, which means that soon half of the browsers in use will support SPDY. On the server front, nginx has announced plans to implement SPDY, and we're actively working on a full featured mod-spdy for Apache. In addition, Strangeloop, Amazon, and Cotendo have all announced that they’ve been using SPDY.

Given SPDY's rapid adoption rate, we’re working hard on acceptance tests to help validate new implementations. Our best practices document can also help website operators make their sites as speedy as possible.

With the help of Mozilla and other contributors, we’re pushing hard to finalize and implement SPDY draft-3 in early 2012, as standardization discussions for SPDY will start at the next meeting of the IETF.

We look forward to working even more closely with the community to improve SPDY and make the Web faster!

To learn more about SPDY, see the link to a Tech Talk here, with slides here.

Roberto Peon and Will Chan co-lead the SPDY effort at Google. Roberto leads SPDY server efforts and continues to tell people to be unafraid of trying to change the world for the better. Will works on the Chrome network stack and leads the Chrome SPDY efforts. Outside of work, Will enjoys traveling the world in search of cheap beer and absurd situations.

Posted by Scott Knaster, Editor

Monday, 23 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Let's make TCP faster

Author Photo
By Yuchung Cheng, Make The Web Faster Team

Transmission Control Protocol (TCP), the workhorse of the Internet, is designed to deliver all the Web’s content and operate over a huge range of network types. To deliver content effectively, Web browsers typically open several dozen parallel TCP connections ahead of making actual requests. This strategy overcomes inherent TCP limitations but results in high latency in many situations and is not scalable.

Our research shows that the key to reducing latency is saving round trips. We’re experimenting with several improvements to TCP. Here’s a summary of some of our recommendations to make TCP faster:

1. Increase TCP initial congestion window to 10 (IW10). The amount of data sent at the beginning of a TCP connection is currently 3 packets, implying 3 round trips (RTT) to deliver a tiny 15KB-sized content. Our experiments indicate that IW10 reduces the network latency of Web transfers by over 10%.

2. Reduce the initial timeout from 3 seconds to 1 second. An RTT of 3 seconds was appropriate a couple of decades ago, but today’s Internet requires a much smaller timeout. Our rationale for this change is well documented here.

3. Use TCP Fast Open (TFO). For 33% of all HTTP requests, the browser needs to first spend one RTT to establish a TCP connection with the remote peer. Most HTTP responses fit in the initial TCP congestion window of 10 packets, doubling response time. TFO removes this overhead by including the HTTP request in the initial TCP SYN packet. We’ve demonstrated TFO reducing Page Load time by 10% on average, and over 40% in many situations. Our research paper and internet-draft address concerns such as dropped packets and DOS attacks when using TFO.

4. Use Proportional Rate Reduction for TCP (PRR). Packet losses indicate the network is in disorder or is congested. PRR, a new loss recovery algorithm, retransmits smoothly to recover losses during network congestion. The algorithm is faster than the current mechanism by adjusting the transmission rate according to the degree of losses. PRR is now part of the Linux kernel and is in the process of becoming part of the TCP standard.

In addition, we are developing algorithms to recover faster on noisy mobile networks, as well as a guaranteed 2-RTT delivery during startup. All our work on TCP is open-source and publicly available. We disseminate our innovations through the Linux kernel, IETF standards proposals, and research publications. Our goal is to partner with industry and academia to improve TCP for the whole Internet. Please watch this blog and http://code.google.com/speed/ for further information.

Yuchung Cheng works on the transport layer to make the Web faster. He believes the current transport layer badly needs an overhaul to catch up with other (networking) technologies. He can be reached at ycheng@google.com.

Posted by Scott Knaster, Editor

Friday, 20 January 2012
Facebook StumbleUpon Twitter Google+ Pin It

Fridaygram: don’t censor the web, rediscovering Darwin, beautiful nebula

Author Photo
By Scott Knaster, Google Code Blog Editor

Last Wednesday, the web looked very different than it usually does. Dozens of popular sites went dark or were modified in some way. We censored the logo on our homepage. As you probably know by now, all this was done to call attention to prospective legislation being debated by the U.S. Congress: the Stop Online Piracy Act (SOPA) and the PROTECT IP Act (PIPA). These bills would censor the web, eliminate due process, and despite their titles, would not stop piracy.

We asked you to take action by signing a petition to Congress, and you responded. More than 7 million people in the U.S. added their names to the petition. We’re asking you to please keep sharing the petition with your friends at http://www.google.com/takeaction.

Let’s go from the U.S. Congress to the British Geological Survey, where Howard Falcon-Lang recently discovered a wooden cabinet tucked away in a corner. Inside the cabinet were rock samples with the signature C. Darwin, Esquire. As in Charles Darwin. It turns out that these samples were collected by Darwin during his HMS Beagle voyages in the 1830s, and had been misplaced for 165 years. Probably they’ll keep better track of the Darwin samples now.

Finally, for something that’s just really cool, please take a look at this video that zooms into an image of the Helix Nebula in the constellation Aquarius. Enjoy!

Fridaygram posts are generally just for fun, although we’ve put on our serious hat for the main item today. Fridaygrams are designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds.

Photoshop Shortcuts

1. Select Tools
vMove tool
m (shift+m)Rectangular Marquee Tool (Elliptical Marquee tool)
l (shift+l)Lasso tool (Polygonal Magnetic Lasso tool)
w (shift+w)Magic Wand tool (Quick Selection tool)
c (shift+c)Crop tool (Slide tool, Slide Select tool)
i (shift+i)Eyedropper tool (Color Sampler tool, Note Tool, Count Tool)
j (shift+j)Spot Healing Brush tool (Healing Brush tool, Patch tool, Red Eye tool)
b (shift+b)Brush tool (Pencil tool, Color Replacement tool, Mixer Brush tool)
s (shift+s)Clone Stamp tool (Pattern Stamp tool)
y (shift+y)History Brush tool (Art History Brush tool)
e (shift+e)Eraser tool (Background Eraser tool, Magic Eraser tool)
g (shift+g)Gradient tool (Paint Bucket tool)
o (shift+o)Dodge tool (Burn tool, Sponge tool)
p (shift+p)Pen tool (Freeform Pen tool)
t (shift+t)Horizontal Type tool (Vertical Type tool, Type Mask tools)
a (shift+a)Path Selection tool (Direct Selection tool)
u (shift+u)Rectangle tool (Rounded Rectangle tool, Ellipse tool, Polygon tool, Line tool, Custom Shape tool)
k (shift+k)3D Object Rotate tool (Roll, Pan, Slide, Scale tool). PS extended only
n (shift+n)3D Camera Rotate tool (Roll,Pan, Walk, Zoom tool). PS extended only
hHand tool
rRotate View tool
zZoom tool

2. View Images
ctrl+tabCycle through open documents
shift+ctrl+tabSwitch to previous document
shift+ctrl+wClose a file in Photoshop and open Bridge
qToggle between Standard mode and Quick Mask mode
f / shift+fToggle forward / toggle backward between Standard Screen Mode, Maximized Screen Mode, Full Screen Mode, and Full Screen Mode with menu bar
space+f / space+shift+fToggle canvas color forward / toggle canvas color backwards
Double-click Hand toolFit image in window
ctrl+1Magnify 100%
spaceTemporary switch to Hand tool (when not in text-edit mode)
ctrl+spaceTemporarily switch to Zoom In tool
alt+spaceTemporarily switch to Zoom Out tool
space+dragMove Zoom marquee while dragging with the Zoom tool
shift+enter in Navigator panel zoom percentage boxApply zoom percentage, and keep zoom percentage box active
ctrl+drag over preview in Navigator panelZoom in on specified area of an image
space+drag, or drag view area box in Navigator panelScroll image with Hand tool
page up or page downScroll up or down 1 screen
shift+page up or page downScroll up or down 10 units
home or endMove view to upper-left corner or lower right corner
\ (backslash)Toggle layer mask on/off as rubylith (layer mask must be selected)

3. Puppet Warp
escCancel completely
ctrl+zUndo last pin adjustment
ctrl+aSelect all pins
ctrl+dDeselect all pins
shift+clickSelect multiple pins
shift+dragMove multiple selected pins
hTemporarily hide pins

4. Refine Edge
ctrl+alt+rOpen the Refine Edge dialog box
fCycle forward through preview modes
shift+fCycle (backward) through preview modes
xToggle between original image and selection preview
pToggle between original selection and refined version
jToggle radius preview on and off
eToggle between Refine Radius and Erase Refinements tools

5. Filter Gallery
alt+click a filterApply a new filter on top of selected
alt+click a disclosure triangleOpen/close all disclosure triangles
ctrlChange Cancel button to Default
altChange Cancel button to Reset
ctrl+shift+zStep forward
ctrl+alt+zStep backward

6. Liquify
wForward Warp tool
rReconstruct tool
cTwirl Clockwise tool
sPucker tool
bBloat tool
oPush Left tool
mMirror tool
tTurbulence tool
fFreeze Mask tool
dThaw Mask tool
alt+toolReverse direction for Bloat, Pucker, Push Left, and Mirror tools
alt+drag in preview with Reconstruct tool, Displace, Amplitwist, or Affine mode selectedContinually sample the distortion
arrow left / arrow right in Brush Size, Density, Pressure, Rate, or Turbulent Jitter text boxDecrease/increase brush size by 2 (or density, pressure, rate, or turbulent jitter by 1). Hold down shift to decrease/increase by 10
arrow left / arrow right with Brush Size, Density, Pressure, Rate, or Turbulent Jitter slider showingDecrease/increase brush size by 2 (or density, pressure, rate, or turbulent jitter by 1). Hold down shift to decrease/increase by 10
tabCycle through controls on right from top
shift+tabCycle through controls on right from bottom
altChange Cancel to Reset

7. Vanishing Point
xZoom 2x (temporary)
ctrl++ / ctrl+-Zoom in / Zoom out
ctrl+0Fit in view
Double-click Zoom toolZoom to center at 100%
] / [Increase / Decrease brush size (Brush, Stamp tools)
shift+] / shift+[Increase / Decrease brush hardness (Brush, Stamp tools)
ctrl+zUndo last action
ctrl+shift+zRedo last action
ctrl+dDeselect all
ctrl+hHide selection and planes
arrow keysMove selection 1 pixel
shift+arrow keysMove selection 10 pixels
ctrl+shift+tRepeat last duplicate and move
ctrl+alt+tCreate a floating selection from the current selection
ctrl+dragFill a selection with image under the pointer
ctrl+alt+dragCreate a duplicate of the selection as a floating selection
alt+shift to rotateConstrain selection to a 15° rotation
ctrl+click the planeSelect a plane under another selected plane
ctrl+dragCreate 90 degree plane off parent plane
backspaceDelete last node while creating plane
Double-click the Create Plane toolMake a full canvas plane, square to the camera
ctrl+shift+hShow/hide measurements (Photoshop Extended only)
ctrl+eExport to a DFX file (Photoshop Extended only)
ctrl+shift+eExport to a 3DS file (Photoshop Extended only)

8. Camera Raw Dialog Box
zZoom tool
hHand tool
iWhite Balance tool
sColor Sampler tool
cCrop tool
aStraighten tool
bSpot Removal tool
eRed Eye Removal tool
ctrl+alt+1Basic panel
ctrl+alt+2Tone Curve panel
ctrl+alt+3Detail panel
ctrl+alt+4HSL/Grayscale panel
ctrl+alt+5Split Toning panel
ctrl+alt+6Lens Corrections panel
ctrl+alt+7Camera Calibration panel
ctrl+alt+8Presets panel
ctrl+alt+9Open Snapshots panel
ctrl+alt+shift+tParametric Curve Targeted Adjustment tool
ctrl+alt+shift+hHue Targeted Adjustment tool
ctrl+alt+shift+sSaturation Targeted Adjustment tool
ctrl+alt+shift+lLuminance Targeted Adjustment tool
ctrl+alt+shift+gGrayscale Mix Targeted Adjustment tool
tLast-used Targeted Adjustment tool
kAdjustment Brush tool
gGraduated Filter tool
] / [Increase/decrease brush size
shift+] / shift+[Increase/decrease brush feather
= / -Increase/decrease Adjustment Brush tool flow in increments of 10
altTemporarily switch from Add to Erase mode for the Adjustment Brush tool, or from Erase to Add mode
alt+] / alt+[Increase/decrease temporary Adjustment Brush tool size
alt+shift+] / alt+shift+[Increase/decrease temporary Adjustment Brush tool feather
alt+= / alt+-Increase/decrease temporary Adjustment Brush tool flow in increments of 10
nSwitch to New mode from Add or Erase mode of the Adjustment Brush tool or the Graduated Filter
mToggle Auto Mask for Adjustment Brush tool
yToggle Show Mask for Adjustment Brush tool
vToggle pins for Adjustment Brush tool, Toggle overlay for Graduated Filter, Spot Removal tool, or Red Eye Removal tool.
l or ctrl+]Rotate image left
r or ctrl+[Rotate image right
ctrl++ / ctrl+-Zoom in / Zoom out
ctrlTemporarily switch to Zoom In tool. (Doesn't work when Straighten tool is selected. If Crop tool is active, temporarily switches to Straighten tool.)
altTemporarily switch to Zoom Out tool and change the Open Image button to Open Copy and the Cancel button to Reset.
pToggle preview
fFull screen mode
shiftTemporarily activate the White Balance tool and change the Open Image button to Open Object. (Does not work if Crop tool is active.)
Click the first point; shift+click additional pointsSelect multiple points in Curves panel
ctrl+click in previewAdd point to curve in Curves panel
arrow keysMove selected point in Curves panel (1 unit)
shift+arrow keysMove selected point in Curves panel (10 units)
ctrl+rOpen selected images in Camera Raw dialog box from Bridge
shift+double-click imageOpen selected images from Bridge bypassing Camera Raw dialog box
alt+drag Exposure, Recovery, or Black slidersDisplay highlights that will be clipped in Preview
oHighlight clipping warning
uShadows clipping warning
ctrl+1 ... 5(Filmstrip mode) Add 1 - 5 star rating
ctrl+. (period) / ctrl+, (comma)(Filmstrip mode) Increase/decrease rating
ctrl+6(Filmstrip mode) Add red label
ctrl+7(Filmstrip mode) Add yellow label
ctrl+8(Filmstrip mode) Add green label
ctrl+9(Filmstrip mode) Add blue label
ctrl+shift+0(Filmstrip mode) Add purple label
ctrl+kCamera Raw preferences
ctrl+alt (on open)Deletes Adobe Camera Raw preferences

9. Black-and-White Dialog Box
shift+ctrl+alt+bOpen the Black-and-White dialog box
arrow up/arrow downIncrease/decrease selected value by 1%
shift+arrow up/arrow downIncrease/decrease selected value by 10%
Click+drag on the imageChange the values of the closest color slider

10. Curves
ctrl+mOpen the Curves dialog box
+ / -Select next / previous point on the curve
shift+click the pointsSelect multiple points on the curve
ctrl+dDeselect a point
Select a point and press deleteDelete a point on the curve
arrow keysMove the selected point 1 unit
shift+arrow keysMove the selected point 10 units
alt+drag black/white point slidersDisplay highlights and shadows that will be clipped
ctrl+click the imageSet a point to the composite curve
shift+ctrl+click the imageSet a point to the channel curves
alt+click the fieldToggle grid size

11. Select and Move Objects
Any marquee tool (except single column and single row), press space+dragReposition marquee while selecting
Any selection tool+shift+dragAdd to a selection
Any selection tool+alt+dragSubtract from a selection
Any selection tool (except Quick Selection tool)+shift-alt+dragIntersect a selection
shift+dragConstrain marquee to square or circle (if no other selections are active)
alt+dragDraw marquee from center (if no other selections are active)
shift+alt+dragConstrain shape and draw marquee from center
ctrlSwitch to Move tool (except when Hand, Slice, Path, Shape, or any Pen tool is selected)
alt+dragSwitch from Magnetic Lasso tool to Lasso tool
alt+clickSwitch from Magnetic Lasso tool to polygonal Lasso tool
enter/esc or ctrl+. (period)Apply/cancel an operation of the Magnetic Lasso
Move tool+alt+drag selectionMove copy of selection
Any selection+arrow keysMove selection area 1 pixel
Move tool+arrow keysMove selection 1 pixel
ctrl+arrow keysMove layer 1 pixel when nothing selected on layer
Magnetic Lasso tool+[ / ]Increase/decrease detection width
Crop tool+enter or escAccept cropping or exit cropping
/ (forward slash)Toggle crop shield off and on
Ruler tool+alt+drag end pointMake protractor
shift+drag guideSnap guide to ruler ticks (except when View Snap is unchecked)
alt+drag guideConvert between horizontal and vertical guide

12. Transform Selections, Selection Borders, and Paths
altTransform from center or reflect
ctrl+. (period) or escCancel
ctrl+alt+tFree transform with duplicate data
ctrl+shift+alt+tTransform again with duplicate data

13. Edit Paths
Direct selection tool+shift+clickSelect multiple anchor points
Direct selection tool+alt+clickSelect entire path
Pen (any Pen tool), Path Selection or Direct Selection tool+ctrl+alt+dragDuplicate a path
ctrlSwitch from Path Selection, Pen, Add Anchor Point, Delete Anchor Point, or Convert Point tools, to Direct Selection tool
altSwitch from Pen tool or Freeform Pen tool to Convert Point tool when pointer is over anchor or direction point
Magnetic Pen tool, double-clickClose path
Magnetic Pen tool, alt-double-clickClose path with straight-line segment

14. Painting
Any painting tool+shift+alt+right-click and dragSelect foreground color from color picker
Any painting tool+alt or any shape tool+alt (except when Paths option is selected)Select foreground color from image with Eyedropper tool
Eyedropper tool+alt+clickSelect background color
Eyedropper tool+shiftColor sampler tool
Color sampler tool+alt+clickDeletes color sampler
Any painting or editing tool+1...9Set opacity, tolerance, strength, or exposure for painting mode.

0 = 100%, 1 = 10%. Two numbers in quick succession (e.g. 45 = 45%)
When airbrush option is enabled, use shift+1...9)
Any painting or editing tool+shift+number keysSets flow for painting mode

0 = 100%, 1 = 10%. Two numbers in quick succession (e.g. 45 = 45%)
When airbrush option is enabled, use shift+1...9)
alt+shift+1...9Mixer Brush changes Mix setting
0...9Mixer Brush changes Wet setting
0Mixer Brush changes Wet and Mix to zero
shift++ / shift+-Cycle through blending modes
backspace or shift+backspaceOpen Fill dialog box on background or standard layer
alt+backspace or ctrl+backspaceFill with foreground or background color
ctrl+alt+backspaceFill from history
shift+backspaceDisplays Fill dialog box
/ (forward slash)Lock transparent pixels on/off
Any painting tool+shift+clickConnects points with a straight line

15. Blending Modes
shift++ / shift+-Cycle through blending modes
shift+alt+qBehind (Brush tool only)
shift+alt+rClear (Brush tool only)
shift+alt+bColor Burn
shift+alt+aLinear Burn
shift+alt+dColor Dodge
shift+alt+wLinear Dodge
shift+alt+fSoft Light
shift+alt+hHard Light
shift+alt+vVivid Light
shift+alt+jLinear Light
shift+alt+zPin Light
shift+alt+lHard Mix
Sponge tool+shift+alt+dDesaturate
Sponge tool+shift+alt+sSaturate
Dodge tool/Burn tool+shift+alt+sDodge/burn shadows
Dodge tool/Burn tool+shift+alt+mDodge/burn midtones
Dodge tool/Burn tool+shift+alt+hDodge/burn highlights
shift+alt+nSet blending mode to Threshold for bitmap images, Normal for all other images

16. Select and Edit text
ctrl+drag type when Type layer is selectedMove type in image
shift+arrow keys, ctrl+shift+arrow keys etc.Select Characters: Use Standard Windows Editing Shortcuts
shift+clickSelect characters from insertion point to mouse click point
shift+clickCreate a new text layer, when a text layer is selected in the Layers panel
Double-click, triple-click, quadruple-click, or quintuple-clickSelect a word, line, paragraph, or story
ctrl+hShow/Hide selection on selected type
ctrlDisplay the bounding box for transforming text when editing text, or activate Move tool if cursor is inside the bounding box
ctrl+drag a bounding box handleScale text within a bounding box when resizing the bounding box
space+dragMove text box while creating text box

17. Format Type
Horizontal Type tool+ctrl+shift+l, c, or rAlign left, center, or right
Vertical Type tool+ctrl+shift+l, c, or rAlign top, center, or bottom
ctrl+shift+xChoose 100% horizontal scale
ctrl+shift+alt+xChoose 100% vertical scale
ctrl+shift+alt+aChoose Auto leading
ctrl+shift+qChoose 0 for tracking
ctrl+shift+jJustify paragraph, left aligns last line
ctrl+shift+fJustify paragraph, justifies all
ctrl+shift+alt+hToggle paragraph hyphenation on/off
ctrl+shift+alt+tToggle single/every-line composer on/off
ctrl+shift+;Decrease or increase type size of selected text 2 points or pixels
alt+arrow down or arrow upDecrease or increase leading 2 points or pixels
shift+alt+arrow down or arrow upDecrease or increase baseline shift 2 points or pixels
alt+arrow left or arrow rightDecrease or increase kerning/tracking 20/1000 ems

18. Slicing and Optimizing
ctrlToggle between Slice tool and Slice Selection tool
shift+dragDraw square slice
alt+dragDraw from center outward
shift+alt+dragDraw square slice from center outward
space+dragReposition slice while creating slice
Right-click sliceOpen context-sensitive menu

All Panels
alt+click New buttonSet options for new items (except for Actions, Animation, Styles, Brushes, Tool Presets, and Layer Comps panels)
alt+click delete buttonDelete without confirmation (except for the Brush panel)
shift+enterApply value and keep text box active
tabShow/Hide all panels
shift+tabShow/Hide all panels except the toolbox and options bar
Select tool and press enterHighlight options bar
shift+arrow up/arrow downIncrease/decrease selected values by 10

Action Panel
alt+click the check mark next to a commandTurn command on and all others off, or turns all commands on
alt+clickTurn current modal control on and toggle all other modal controls
alt+double-click action or action setChange action or action set options
Double-click recorded commandDisplay Options dialog box for recorded command
ctrl+double-click an actionPlay entire action
alt+click the triangleCollapse/expand all components of an action
ctrl+click the Play buttonPlay a command
alt+click the New Action buttonCreate new action and begin recording without confirmation
shift+click the action/ commandSelect contiguous items of the same kind
ctrl+click the action/ commandSelect discontiguous items of the same kind

Adjustment Panel
alt+3 (red),
alt+4 (green),
alt+5 (blue)
Choose specific channel for adjustment
alt+2Choose composite channel for adjustment
delete or backspaceDelete adjustment layer
alt+click Auto buttonDefine Auto options for Levels or Curves

Animation Panel (Frames Mode)
shift+click second frameSelect/deselect multiple contiguous frames
ctrl+click multiple framesSelect/deselect multiple discontiguous frames
alt+Paste Frames command from the Panel pop-up menuPaste using previous settings without displaying the dialog box

Animation Panel (Timeline Mode, PS extended)
spaceStart playing the timeline or Animation panel
alt+click the current-time display in the upper-left corner of the timeline.Switch between timecode and frame numbers (current time view)
alt+clickExpand and collapse list of layers
Hold down the shift key when clicking the next/previous Frame buttons (on either side of the Play button).Jump to the next/previous whole second in timeline
Hold down the shift key while dragging the current time.Increase playback speed
Hold down the ctrl key while dragging the current time.Decrease playback speed
shift+dragSnap an object (keyframe, the current time, layer in point, and so on) to the nearest object in timeline
alt+drag (first or last keyframe in the selection)Scale (evenly distribute to condensed or extended length) a selected group of multiple keyframes
arrow left or page upBack one frame
arrow right or page downForward one frame
shift+arrow left or shift+page upBack ten frames
shift+arrow right or shift+page downForward ten frames
home / endMove to the beginning / to the end of the timeline
shift+home / shift+endMove to the beginning / to the end of the work area
arrow upMove to "In" point of the current layer
arrow downMove to the "Out" point of the current layer
shift+arrow up / shift+arrow downBack 1 second / Forward 1 second
escReturn a rotated document to its original orientation

Brush Panel
alt+click brushDelete brush
Double-click brushRename brush
alt+right click+drag left or rightChange brush size
alt+right click+drag up or downDecrease/increase brush softness/hardness
, (comma) / . (period)Select previous/next brush size
shift+, (comma) / shift+. (period)Select first/ Select last brush
caps lock or shift+caps lockDisplay precise cross hair for brushes
shift+alt+pToggle airbrush option

Channels Panel
ctrl+3 (red),
ctrl+4 (green),
ctrl+5 (blue)
Select individual channels
ctrl+2Select composite channel
ctrl+click channel thumbnail, or
alt+ctrl+3 (red),
alt+ctrl+4 (green),
alt+ctrl+5 (blue)
Load channel as selection
ctrl+shift+click channel thumbnail.Add to current selection
ctrl+alt+click channel thumbnailSubtract from current selection
ctrl+shift+alt+click channel thumbnailIntersect with current selection
alt+click Save Selection As Channel buttonSet options for Save Selection As Channel button
ctrl+click Create New Channel buttonCreate a new spot channel
shift+click color channelSelect/deselect multiple color-channel selection
shift+click alpha channelSelect/deselect alpha channel and show/hide as a rubylith overlay
Double-click alpha or spot channel thumbnailDisplay channel options
~Toggle composite and grayscale mask in Quick Mask mode

Clone Source Panel
alt+shiftShow Clone Source (overlays image)
alt+shift+arrow keysNudge Clone Source
alt+shift+;Rotate Clone Source
alt+shift+[ or ]Scale (increase or reduce size) Clone Source

Color Panel
alt+click color in color barSelect background color
Right-click color barDisplay Color Bar menu
shift+click color barCycle through color choices

History Panel
alt+new SnapshotCreate a new snapshot
Double-click snapshot nameRename snapshot
ctrl+shift+zStep forward through image states
ctrl+alt+zStep backward through image states
alt+click the image stateDuplicate any image state, except the current state
alt+clear HistoryPermanently clear history (no Undo) in History panel pop-up menu

Info Panel
Click eyedropper iconChange color readout modes
Click crosshair iconChange measurement units

Layers Panel
ctrl+click layer thumbnailLoad layer transparency as a selection
ctrl+shift+click layer thumbnail.Add to current selection
ctrl+alt+click layer thumbnail.Subtract from current selection
ctrl+shift+alt+click layer thumbnail.Intersect with current selection
ctrl+click filter mask thumbnailLoad filter mask as a selection
ctrl+gGroup layers
ctrl+shift+gUngroup layers
ctrl+alt+gCreate/release clipping mask
ctrl+alt+aSelect all layers
ctrl+shift+eMerge visible layers
alt+click New Layer buttonCreate new empty layer with dialog box
ctrl+click New Layer buttonCreate new layer below target layer
alt+.. (period)Select top layer
alt+,, (comma)Select bottom layer
shift+alt+[ or ]Add to layer selection in Layers panel
alt+[ or ]Select next layer down/up
ctrl+[ or ]Move target layer down/up
ctrl+shift+alt+eMerge a copy of all visible layers into target layer
Highlight layers you want to merge, then ctrl+eMerge layers
ctrl+shift+[ or ]Move layer to bottom or top
alt+ Merge Down command from the Panel pop-up menuCopy current layer to layer below
alt+ Merge Visible command from the Panel pop-up menuMerge all visible layers to a new layer above the currently selected layer
Right-click the eye iconShow/hide this layer/layer group only or all layers/layer groups
alt+ click the eye iconShow/hide all other currently visible layers
/ (forward slash)Toggle lock transparency for target layer, or last applied lock
Double-click layer effect/styleEdit layer effect/style, options
alt-double-click layer effect/styleHide layer effect/style
Double-click layerEdit layer style
shift+click vector mask thumbnailDisable/enable vector mask
Double-click layer mask thumbnailOpen Layer Mask Display Options dialog box
shift+click layer mask thumbnailToggle layer mask on/off
shift+click filter mask thumbnailToggle filter mask on/off
alt+click layer mask thumbnailToggle between layer mask/composite image
alt+click filter mask thumbnailToggle between filter mask/composite image
\ (backslash), or shift+alt+clickToggle rubylith mode for layer mask on/off
Double-click type layer thumbnailSelect all type; temporarily select Type tool
alt+click the line dividing two layersCreate a clipping mask
Double-click the layer nameRename layer
Double-click the filter effectEdit filter settings
Double-click the Filter Blending iconEdit the Filter Blending options
ctrl+click New Group buttonCreate new layer group below current layer/layer set
alt+click New Group buttonCreate new layer group with dialog box
alt+click Add Layer Mask buttonCreate layer mask that hides all/selection
ctrl+click Add Layer Mask buttonCreate vector mask that reveals all/path area
ctrl+alt+click Add Layer Mask buttonCreate vector mask that hides all or displays path area
Right-click layer group and choose Group Properties, or double-click groupDisplay layer group properties
shift+clickSelect/deselect multiple contiguous layers
ctrl+clickSelect/deselect multiple discontiguous layers

Layers Comps Panel
alt+click Create New Layer Comp buttonCreate new layer comp without the New Layer Comp box
Double-click layer compOpen Layer Comp Options dialog box
Double-click layer comp nameRename in-line
shift+clickSelect/deselect multiple contiguous layer comps
ctrl+clickSelect/deselect multiple discontiguous layer comps

Paths Panel
ctrl+click pathnameLoad path as selection
ctrl+shift+click pathnameAdd path to selection
ctrl+alt+click pathnameSubtract path from selection
ctrl+shift+alt+click pathnameRetain intersection of path as selection
ctrl+shift+hHide path
alt+click buttonSet options for Fill Path with Foreground Color button, Stroke Path with Brush button, Load Path as a Selection button, Make Work Path from Selection button, and Create New Path button

Swatches Panel
Click in empty area of panelCreate new swatch from foreground color
ctrl+click swatchSet swatch color as background color
alt+click swatchDelete swatch

20. 3D tools (PS Extended)
nEnable 3D camera tools
alt+ctrl+xHide nearest surface
alt+shift+ctrl+xShow all surfaces
right-click / altChange between Rotate, Roll, Drag, Slide, and Scale 3D Object Tool
shiftScale on the Y plane

21. Measurement (PS Extended)
shift+ctrl+mRecord a measurement
ctrl+dDeselects all measurements
ctrl+aSelects all measurements
shift+ctrl+hHide/show all measurements
backspaceRemoves a measurement
arrow keysNudge the measurement
shift+arrow keysNudge the measurement in increments
ctrl+left/right arrow keyExtend/shorten selected measurement
shift+ctrl+left/right arrow keyExtend/shorten selected measurement in increments
ctrl+up/down arrow keyRotate selected measurement

22. DICOM files (PS Extended)
zZoom tool
hHand tool
wWindow Level tool
ctrl+aSelect all frames
ctrl+dDeselect all frames except the current frame
arrow keysNavigate through frames

23. Extract and Pattern Maker (plug-in)

Extract and Pattern Maker
ctrl+0Fit in window
ctrl++ / ctrl+-Zoom in / Zoom out
tabCycle through controls on right from top
shift+tabCycle through controls on right from bottom
spaceTemporarily activate Hand tool
altChange Cancel to Reset

Extract Only
bEdge Highlighter tool
gFill tool
iEyedropper tool
cCleanup tool
tEdge Touchup tool
alt+Edge Highlighter/Eraser toolToggle between Edge Highlighter tool and Eraser tool
ctrl with Edge Highlighter tool selectedToggle Smart Highlighting
alt+deleteRemove current highlight
ctrl+deleteHighlight entire image
shift+click with Fill tool selectedFill foreground area and preview extraction
ctrl+dragMove mask when Edge Touchup tool is selected
alt+dragAdd opacity when Cleanup tool is selected
xToggle Show menu options in preview between Original and Extracted
shift+xEnable Cleanup and Edge Touchup tools before preview
fCycle through Display menu in preview from top to bottom
shift+fCycle through Display menu in preview from bottom to top
arrow down/arrow up in Brush Size text boxDecrease/increase brush size by 1
arrow left/arrow right with Brush Size Slider showingDecrease/increase brush size by 1
0...9Set strength of Cleanup or Edge Touchup tool

Pattern Maker Only
ctrl+dDelete current selection
ctrl+zUndo a selection move
ctrl+gGenerate or generate again
shift+alt+selectIntersect with current selection
xToggle view: original/generated pattern
homeGo to first tile in Tile History
endGo to last tile in Tile History
arrow left, page upGo to previous tile in Tile History
arrow right, page downGo to next tile in Tile History
deleteDelete current tile from Tile History
arrow right, arrow left, arrow up, or arrow downNudge selection when viewing the original
shift+arrow right, arrow left, arrow up, or arrow downIncrease selection nudging when viewing the original

24. Function keys
f1Start Help
f5Show/Hide Brush panel
f6Show/Hide Color panel
f7Show/Hide Layers panel
f8Show/Hide Info panel
f9Show/Hide Actions panel
shift+f6Feather Selection
shift+f7Inverse Selection