Front Row is awesome. Hot keys are awesome. Typos are not. While zipping along, typing my fool heart out, I tend to fat finger about enough to drop my words per minute in half at times. Occasionally, my typos will land me in an annoying spot, with some application opening: often that application is Front Row. Which led me to unmapping the hot key. But then of course, since I reimage my machines a lot, I wanted to put that into my image… Hot keys are stored in, in a users ~/Library/Preferences. You could setup a system with the exact key mappings that you wish to have, use managed preferences to send specific key strokes into the property list or script the augmentation of the file with the defaults command. Within the file a dictionary called AppleSymbolicHotKeys and a number of options that correspond to options in the Keyboard Shortcuts defined in the Keyboard System Preference pane, under the Keyboard Shortcuts tab. Each shortcut entry is a nested dictionary, with a boolean key for whether it is enabled or not and a value dictionary nested even further within that. The value dictionary has a parameters array for the keys that invoke the action and a key that is a string for type (that is always set to standard). That parameters array is comprised of three items, aptly named: Item 0, Item 1 and Item 2. Those items are filled with numbers that map to a key on the keyboard or a 0 if the key is not used. Some of these keys include:
  • 50: ~
  • 52: Enter
  • 53: Escape
  • 122: F1
  • 120: F2
  • 99: F3
  • 118: F4
  • 96: F5
  • 97: F6
  • 98: F7
  • 100: F8
  • 101: F9
  • 109: F10
  • 103: F11
  • 111: F12
  • 105: F13
  • 107: F14
  • 113: F15
  • 131072: Shift
  • 262144: Control
  • 524288: Option
  • 1048576: Command
Note: A useful tool for finding key codes for combinations of keys is Full Key Codes, from Some of the entries in the list that can be controlled, along with their corresponding numeric identifier in the file:
  • 32: All Windows
  • 33: Application Windows
  • 36: Desktop
  • 62: Dashboard
  • 73: Front Row (my goddess of the fat finger)
Note: If you have one that is not in this list, then simply copy the plist, make the change, open both in your favorite property list editor and either eyeball them for the delta or use the diff command. Now, let’s look at setting that symbolichotkeys property list to set the Front Row (Dictionary 73 within Dictionary AppleSymbolicHotKeys to disable, by changing the enabled key to 0, and then leaving the value dictionary as is by copying it back in with the same values (if you care: delimited from the enabled key with a ; and defined as a a dictionary based on the content between the {} with an array inside of it, defined using parenthesis to start and stop the array, followed with another semicolon to delimit the end of that key followed by the type keypair followed by yet another semicolon to end each open key).
defaults write AppleSymbolicHotKeys -dict-add 73 “{enabled = 0; value = { parameters = (65535, 53, 1048576); type = ‘standard’; }; }”
To then re-enable:
defaults write AppleSymbolicHotKeys -dict-add 73 “{enabled = 1; value = { parameters = (65535, 53, 1048576); type = ‘standard’; }; }”
You could also map different keystrokes by sending different numerical values (some are shown above) into the parameters array.

Sometimes it can be really useful to have an SSH connection into your AppleTV. If I need to explain why then you probably won’t want to do it. Unless of course, you’re just after getting something like Boxee running, which we’ll look at as well. Before we get into doing anything to your AppleTV, when we’re done I do not know how Apple will feel about your warranty moving forward, so do this stuff at your own risk (but that’s pretty much true for many articles on this site)… So first up, let’s install SSH. To get started, plug in a jump drive you don’t mind reformatting. Then run the df command and look at which filesystem that the jump drive was mounted as. In most cases this should be /dev/disk1s1 or /dev/disk2s1 or something like that. Note this location and while you’re at it, double-check that the data is trivial to you and that you really don’t mind reformatting the jump drive. Next, let’s download atvusb-creator, a little utility that will generate a new patchstick based on that jump drive (a patchstick being the term applied to usb sticks that will hax0r an AppleTV). Once downloaded, run the tool. Select ATV-Patchstick in the Choose an Installation dialog, and then select the version of the AppleTV OS you have (if you’re fully software updated then as of the date of this writing that would be 3.x). Next, choose ssh tools from the 3rd field in the Installation Options section, making sure that the box is checked. If you are just trying to get XBMC or Boxee running then you can check the boxes for those as well at this point.
ATV USB Creator Screenshot

ATV USB Creator

Next, set the USB Target Device field to be the filesystem you selected earlier and then click the Create Using button and wait for the process to finish. Once the patchstick has been created, plug it into your AppleTV and reboot the unit. You’ll see a bunch of code, similar to starting Mac OS X into verbose mode. When the screen tells you that you’re done, unplug the patchstick and reboot the device. Upon reboot it will be running SSH with a username and password of frontrow. If you’re not using a static IP address then if you open iTunes and connect to the device you’ll have an entry in your arp table for it. You can run arp and find the IP fairly easily. Once found, use the SSH command to connect to the device. For example, if mine is on an IP address of then I would use the following command to connect to it:
ssh frontrow@
Now you have an AppleTV running SSH. Even though this article isn’t meant to be about Boxee or XBMC, you can then install those by going to the new Launcher menu and then to Downloads and downloading those applications (otherwise if you try to access them you’ll get an error that the .app bundle can’t be found). Once those are in place it should open pretty easily. Now that you’re running SSH, let’s look at one of the uses. I want a web browser on the AppleTV (even though typing a URL in it is pretty painful unless you install a keyboard too). For this instance, I’m going to use CouchServer, ’cause I like the way the keyboard works and because there’s a silverlight that kinda’ sorta’ works with it. First, download the files for CouchSurfer here. Then copy the files that were downloaded up to the device (assuming the filename is CouchSurfer-Lite.tar) from your client computer:
scp ~/Desktop/CouchSurfer-Lite.tar frontrow@
Next, SSH into the AppleTV and extract the tar file:
tar -xvpf CouchSurfer-Lite.tar
Then move the extracted data into the PlugIns directory (which will display the appliance similar to how Launcher would be displayed at this point:
sudo mv CouchSurfer.frappliance /System/Library/CoreServices/
(your password will be frontrow in case you have hard core add and have forgotten it already) We’re gonna’ give ownership to wheel:
sudo chown -R root:wheel /System/Library/CoreServices/
Then reboot the AppleTV. Upon reboot, you will then have a shiny new web browser making your AppleTV even more like a full fledged Mac with Front Row. Now you’re in pretty good shape. You’ve pretty much put more stuff on your AppleTV than you can possibly use, but you still probably just want NetFlix to work on it. For that, you’ll need to get Silverlight working with CouchSurfer and just browse to the movies in the web browser at as the Boxee implementation for AppleTV doesn’t yet work with NetFlix and there aren’t any native Plug-Ins that work with it yet either (that I’m aware of). Also, if you’re going to use any of the 3rd party media browsers, keep in mind that they’re sitting on top of the OS layer and that their resource utilization seems pretty poor compared to the native media browser on the device (given the abstraction there, it seems logical it would be so no complaints). BTW, another fun little app (to help make your AppleTV more like your iPad): And the most intriguing one that I haven’t actually gotten to work yet (haven’t had time to get past the second or third step – busy) is: What I’d like to see – the ability to run my AppleTV as a Zwave controller… Or iPad… Or Newton… 🙂

Scenario: You’re working on one display but you want to use the second display as a media center while you’re working. Well, Front Row 2.0 can be used on a second display that is connected to your computer. Mac OS X uses a unique identifier to track each display connected to a computer. To get started you’re first going to need to figure out what the unique identifier for that second display is. In order to do so, download the displaysInfo utility. Open terminal and run the ./displaysInfo command using the directory that it was downloaded to. Look for the d2_ID field (you can also use | grep d2_ID followed by the command to just see this). Use that number in the place of MYUNIQUEID and use the following command to write that number into the FrontRowUsePreferredDisplayID field of the defaults domain: defaults write FrontRowUsePreferredDisplayID MYUNIQUEID To undo the setting: defaults delete FrontRowUsePreferredDisplayID