As mentioned in my Third Day post, I’m using a MacBook now, every day, as my work computer.Â And, well, I’ve not died nor been struck by lightning or anything.Â But am I a convert?Â Read my ongoing discussion of my experiences with the platform.Â This week: the keyboard hardware and its use in software.
First, where I was coming from:Â I came in as a long-time Windows user, and a mid-time Ubuntu user.Â I did my best to have an open mind, recognizing that I’d have a big adjustment.Â My coworkers raved about multi-monitor handling, closing and opening the lid for instant on, and a top-notch keyboard and touchpad.
The keyboard hardware is pretty well-constructed, and looks quite easy to clean.Â Keys are full-size or nearly so.Â It is surprisingly austere, with what I’d bet is the smallest key-count in the laptop industry.Â Fits in with the look, though, and leaves ample space for speakers and the touchpad.
I was cautioned to use the command key in place of just about every control-key combination I was used to.Â Imagine my surprise when I found there was still a control key on the mac! And that not all of my key combinations carried over.Â Sure, cut-copy-paste moved from ctrl-xcv to command-xcv, but IDE staples like ctrl-space (or my other eclipse buddies, ctrl-h search or ctrl-q last edit) sure don’t: they’re still on the control key.
In fact, the Mac keyboard manages to have five different shiftkeys on this already limited keyboard:Â shift, fn, control, option (alt), and command.Â That’s two more shiftkeys than a DOS/Unix keyboard and one more than a Windows keyboard.Â Add in the duplicates from the other side along with caps lock and you have a whopping nine shiftkeys on here.
Really?Â You kept caps lock, which has no earthly (well, computerly) use, but couldn’t find the need for a del key?Â There is a key that I can only assume ejects the disc, but no home or end keys?Â Honestly, the lack of those three keys would stop me dead from considering this a programmer’s paradise.
In software, some of the pains can be eased.Â A person can disable or re-purpose the caps lock key.Â The function keys can be made function keys without shifting.Â Command-space can be removed as a system function and given back to applications.Â IDEs, too, are extra customizable to fix a lot of things, like home/end behavior.
There is no good way to remap the keyboard though.Â There’s a lot of documentation out there on how to do it, but it seems like Apple is so quick to change UI frameworks that a lot of the documentation out there is incorrect.Â Also, programs can simply opt to ignore the remappings if they like, making global configuration… difficult.Â Home and end are a frequent target of such remappings.Â I can’t get them to work yet, but I’m still following some leads.Â They have inexplicably been neutered to only move the viewport, not the cursor, and much work has been done in the community to reverse this.
Thankfully, one can plug in a USB keyboard of any stripe into the mac, and it will start working with minimal configuration.Â Better have a full 104-key, though, since the command key (windows key) is absolutely required.Â It and the context-menu key were completely optional under windows or unix.Â Anyway, it makes things a little bit better at the risk of getting your fingers used to yet another key mapping.
The value of a mac to a developer based on its keyboard alone: $0.Â Yep.Â Don’t buy it to develop on.Â Don’t worry, the mac has a lot of other features, I recognize that.Â But this keyboard has no place on a developer’s desk.
I see you mentioned “home/end behavior,” and while I might be misreading your issue with that, the mac (at least on mine mine) has built in support for page up/down and home/end. They can be invoked using the “fn” key and the arrow keys. Page up/down are obvious, left arrow is “Home” and right arrow is “End.”
This is true, but now all four of those frequently-used keys are chorded combinations. Plus, home and end on the Mac traditionally mean start and end of document, not start and end of line. I’ve hacked the keymaps of some applications to improve this, but it’s not a global solution and it’s not good for a programmer.