Updated resource: Assistive Technology: a video tour of accessibility

I’ve fixed links to videos that have been removed from the Web and added a couple of new ones.

Assistive Technology: a video tour of accessibility in Dotjay’s Lab

Updated resource: Introduction to Screen Readers

I’ve linked to some new resources and fixed links to pages that have been removed from the Web.

Introduction to Screen Readers in Dotjay’s Lab

Accessible Keyboard Shortcuts: new resource

I have added a new page outlining some best practices and providing code examples for developers wishing to add JavaScript-powered keyboard shortcuts to their web applications in an accessible way.

Accessible Keyboard Shortcuts in Dotjay’s Lab

Transition

Hello, friends! It’s been so long, I thought it was about time I updated you on what I’ve been doing.

Solid ground

Do you remember that roller coaster ride I referred to when I joined OmniTI? Well, it just kept on going! And after a year of doing the transatlantic telecommute, I felt the need for solid ground. I left OmniTI in September.

I worked on some great projects while I was there, with big brands and alongside wonderfully talented people. I learned a lot, made some new friends, and had quite a bit of fun thrown in, too! Thank you to those who shared their knowledge and humour with me.

R and R

To recharge my batteries a bit, I decided to take a little time away from the Web and computer keyboards. I visited a few friends around the UK, spent a relaxing couple of days on Lundy Island, and got myself to Accessibility 2.0 and PHPNW ’09. I may have also made it to a gig or two along the way!

In the background, interesting discussions were afoot, and a fantastic opportunity presented itself. Which brings me to…

Analog

For the last couple of months, I’ve been setting up a new web design and development co-operative with some friends of mine: Alan, Andrei, Chris and Jon. In December, we launched Analog.

They say working with friends or family is a bad idea. The way I see it, I want many of the same things out of my working relationships as I do out of my friendships. I like to be around friends because they’re people I’m happy in the company of. I trust them, and respect their opinions. A healthy work relationship will have many of these same traits: fun, mutual respect, honesty and openness.

When we got together as a group in September, Chris summarised his work aspirations as, “Good people. Good work.” And that was it in a nutshell for me. I have huge respect for the people I work with at Analog. They were work colleagues, and even clients, before they became my friends. I know I can work with them, and build great things. If you don’t know them, let me introduce you quickly:

Alan Colville is a talented experience designer who worked with Jon Tan and I at Grow Collective. When he’s not inspiring me with his insights into user behaviours, he’s amazing me by running up mountains and biking down them!

I’ve known Andrei Zmievski for several years through the PHP community – he’s one of the core developers of PHP. He’s an incredibly clever chap, a gifted photographer, and I look forward to one day sampling the product of his home brewing!

I first got to know Chris Shiflett when I helped Jon with Chris’s blog redesign. He’s an accomplished web developer and an authority on PHP security and HTTP. When we’re not being web geeks, we’re exercising our perfectionist tendencies by being grammar nerds.

I’ve been working with Jon Tan for several years now, at Grow and OmniTI. He’s a fab designer, and passionate about his craft. Not only have we made a good team, we’ve also become good friends. With many a tale of travel and type, you’re never bored around Jon.

I usually write about accessibility on this blog. The analog.coop holding page has a few talking points I could cover, not least the improved semantics of HTML5, and the accessibility features of ARIA. I’ll write more about these soon. For now, I hope that one page shows that accessibility doesn’t have to come at the cost of beautiful design.

Thank you

It’s already been fun at Analog – stalking people, launching Easter eggs, and wrapping up Christmas presents, like #grid… I’m really looking forward to what this year has in store for us. Here’s a thank you to the wonderful people of the Web who helped us get Analog off the ground.

Thank you, Carolyn Wood for being absolutely stellar, and helping us put our vision into words for our web site. Incidentally, the holding page scores pretty well on readability tests, which makes me happy!

Ta very much, HTML5doctor.com, for being a great place to get practical help with HTML5. Special thanks to Bruce Lawson who’s a super chap for helping me out with one particular HTML5 peculiarity.

And thanks to everybody who helped us celebrate our launch, especially Jared Smith, for making my day with his kind comment. We’re so chuffed to have had such a warm welcome from all around the world. It made a great way to end the year, and carry us through into 2010.

Form placeholder text JavaScript: new class names added

I have updated the JavaScript that adds placeholder text to form inputs using the contents of the title attribute. The code is a bit leaner now and includes class names on the form inputs when there is placeholder text present, which allows you to style the inputs differently when there is user input versus placeholder text.

Input Placeholder Text in Dotjay’s Lab

Aural CSS notes on Opera updated

Updated notes on Opera support and fixed broken links.

Aural CSS: Support for CSS 2 Aural Style Sheets / CSS 3 Speech Module in Dotjay’s Lab

VoiceOver Commands (HTML version)

Created an HMTL version of Apple’s VoiceOver commands PDF.

VoiceOver Commands / Keyboard Shortcuts in Dotjay’s Lab

We will remember them

In May last year, I took a trip to Dronten in Holland where my father took part in several remembrance services for those who gave their lives in the Second World War. The Dutch really celebrate their freedom, May 5th being their Liberation Day, which marks the day The Netherlands were freed from German occupation in 1945. It was quite emotional to be part of several ceremonies and festivals where people who fell, many nameless, were remembered and celebrated.

Unfortunately, we were unable to go to Holland again this year, but our friends sent us a link to a video of this year’s commemoration day in Dronten (4 May, 2009), which shows a fly past by one of the last two Lancaster bombers still flying.

So today – as we do on November 11th – I remember our heroes, and I’m proud to include my own father among them.

“We will remember them”

They shall not grow old as we who are left grow old.

Age shall not weary them, nor the years condemn.

At the going down of the sun and in the morning,

We will remember them.

Related

  • We Will Remember Them – a UK site dedicated to servicemen and women who have gave their lives in defence of their nation.

Photo: Avro Lancaster – RIAT Fairford 2008 (Danny McL)

Holding up the ⌘+Q

Something that’s been bugging me for a while now is reaching for Command+W to close an open Finder window or a tab in Firefox, and hitting that blasted Q key by accident. Well, no more, I decided!

For the uninitiated, hitting Command+Q on a Mac keyboard quits the current application – as far as I’m aware – without exception. Some applications will give you a warning that you are about to quit and you may lose unsaved data. Since Firefox introduced built-in session management so that it will fire up just as you left it, it no longer seems to warn you when you quit. Looking at about:config in one of my Firefox tabs shows browser.warnOnQuit set to true. Firefox will warn me when I try to close a window with multiple tabs open in it, but it doesn’t warn my when I hit Command+Q.

So, in trying to fix this little problem, I discovered a few ways to create helpful keyboard shortcuts and tame some not-so-useful ones.

Custom keyboard shortcuts in OS X

You can set custom keyboard shortcuts for various aspects of OS X and any of your installed applications in System Preferences – it’s under Keyboard & Mouse, and then the Keyboard Shortcuts tab.

  1. Hit the + (plus) button to begin adding a new shortcut.
  2. Select an application to customise, or let it affect all applications.
  3. Type in the Menu Title, which is the text as it appears in the menu item you’re wanting to customise. You can just switch to the application in question to check it.
  4. Hit the Keyboard Shortcut box and then do the desired key stoke you want to use for that menu item.

Now, I knew about this before and have set a couple of my own shortcuts previously. Here’s a couple of examples from my preferences:

  • In Safari, Shift+Command+S is set to Disable Styles from Safari’s Develop menu.
  • In Thunderbird, Option+Command+V is set to Paste Without Formatting.

So, it was a bit annoying to find the same didn’t work when trying to fix my premature evacuation woes in Firefox. You seem to be able to assign keyboard shortcuts to Firefox menu items, but if you set Command+Q to a menu item other than Quit, it still quits the application. You can also try setting a different shortcut to Quit (I tried Option+Command+Q), but still no joy.

Taming Firefox keyboard shortcuts with Keyconfig

There’s an extension for Firefox called Keyconfig, which remained unusable with Firefox 3 for a while. I read that the latest build now works, so I tried it, and — hey presto! — it installed. Alas, it wouldn’t override Command+Q for me. However, it did help me fix up some keyboard conflicts caused by various add-ons.

Once Keyconfig is installed, you can go to Keyconfig… under the Tools menu to see all the keyboard shortcuts that Firefox uses. Any shortcuts that are assigned to more than one action are highlighted for you. This is great for tracking down and fixing keyboard conflicts caused by some cheeky little add-on hijacking the shortcuts you’ve grown to know and love. (Yay, Shift+Command+F now opens Web Developer‘s Display Element Information tool again, instead of opening up the settings for Foxmarks!)

So, I began to assume that Command+Q is engrained into the application somewhere, possibly at the Cocoa level.

Hacking key bindings with brute force

With the help of this OS X hint and a little poking around (thanks Sean), running this in Terminal has worked for me:

defaults write org.mozilla.firefox NSUserKeyEquivalents '{"Quit Firefox"="@~Q";}'

This tells Firefox (the org.mozilla.firefox package) to use Option+Command+Q as the shortcut (keyboard equivalent) for the Quit Firefox menu item.

As with the System Preferences method above, you need to address the menu item using the text as it appears in the menu, so "Quit Firefox". To my knowledge, this technique will only work with Firefox 3, as that release was built using Cocoa.

You can customise the shortcut where my code has @~Q by using these characters to represent the desired keys:

@
Command
$
Shift
~
Option
^
Control

Apparently, you can set these keyboard equivalents globally, but I decided not to do this. If you want to target a specific application in the way I have, the following may help you find out its package name:

  1. Fire up Terminal and type ps -ax | grep firefox, but replace “firefox” with the application you’re looking for. This should help you to figure out the application’s process name. For example, Firefox’s process name is “firefox-bin”.
  2. Now fire up Script Editor and run the AppleScript tell application "System Events" to get bundle identifier of application process "firefox-bin", replacing “firefox-bin” with your target application’s process name. That code goes in the top pane of Script Editor. Then hit Run.
  3. You should see the package name appear in the output pane below the script, e.g. org.mozilla.firefox.

So, as another example, running ps -ax | grep twhirl in Terminal tells me that the process name I want for Twhirl is in fact “twhirl”. Running the AppleScript tell application "System Events" to get bundle identifier of application process "twhirl" gives me the package name de.makesoft.twhirl.[SOMEHASH].

Save your head, your desk, the world!

That’s all for now. I hope this stops a few people from banging their heads on their desks!

Joining OmniTI

Right, now that the cat’s out of the bag, I’m happy to announce here that I will be joining Jon at OmniTI to form part of their interface design team as an accessibility engineer!

Essentially, I’ll be doing the stuff I love: accessible interface design, consulting and training, and quality assurance (“pedant duties”). And I’ll be doing it from within the loving arms of one of the Web’s cleverest companies. To echo what I said the other day, working with the people at OmniTI over recent months has been great. Even though I’ve been working remotely, I’ve been surrounded by really clever folks, which means it’s always a learning experience, and always fun. Hopefully, some of them feel that they have been learning from me, too.

I’ve always sat somewhere between the back-end development geeks and the front-end creative types. In my new job, I will be concentrating on interface design, but I will be working closely with other teams to help ensure accessibility is built into the applications built by OmniTI. It’s perfect for me, and I’m really looking forward to it.

What a way to round off the year! I have a feeling there’s going to be a lot of cool stuff in store for 2009. I hope you all have a great Christmas, and I’ll see you on the other side of New Year!