Solved?: OS X 10.5.6 update broke Eclipse shortcuts

Thu 15 January 2009

I think I have found a solution to the serious regression with regards to Dvorak keyboard shortcuts in Carbon based applications that Apple introduced with the OS X 10.5.6 update. This weekend I might follow up with a more thorough write up. For now just the solution will have to do as I am short on time.

Unfortunately the solution requires you to have access to an OS X 10.5.5 installation which not everyone might have at their disposal. It basically boils down to replacing the 10.5.6 installation’s /System/Library/Frameworks/Carbon.framework with that of the 10.5.5 version. I haven’t tested it extensively. In fact I have only confirmed that cmd-c and cmd-v finally work again in Eclipse.

The 10.5.6 installation lives in:

/System/Library/Frameworks/Carbon.framework

The 10.5.5 installation is mounted from an external hard drive at:

/Volumes/Bak MacBook/System/Library/Frameworks/Carbon.framework

These are the steps I performed:

$ cd /System/Library/Frameworks
$ sudo cp -Rpv Carbon.framework ~/Temp/
$ sudo rm -rf Carbon.framework
$ sudo cp -Rpv /Volumes/Bak MacBook/System/Library/ Frameworks/Carbon.framework .

BTW the 10.5.6 installation is a PPC one and the 10.5.5 is an Intel one. That doesn’t seem to matter as, as far as I can tell, all the files in the Carbon.framework directory are resource files which are platform independent.

Be careful though. I have barely tested this and hence it might have serious unwanted side effects.

Update: As it turns out some things do break when reverting to the 10.5.5 version of the Carbon.framework. For instance pressing ENTER in Finder does not allow you to rename a file or directory anymore. And according to Apple forum user LEgregius it also breaks something in iPhoto. To work around these issues LEgregius has a short shell script that switches between the two versions of Carbon.framework when starting Eclipse. I have adjusted this script slightly to make the switch conditional:

#!/bin/sh
FRMW_DIR=/System/Library/Frameworks
CARBON_FRMW=${FRMW_DIR}/Carbon.framework

if [ -e $CARBON_FRMW -a -e ${CARBON_FRMW}.1055 ]
then
    sudo mv $CARBON_FRMW ${CARBON_FRMW}.1056 &&
    sudo mv ${CARBON_FRMW}.1055 $CARBON_FRMW &&
    echo "Switched Carbon.framework 10.5.6 -> 10.5.5"
fi
open -W /Applications/eclipse/Eclipse.app
if [ -e $CARBON_FRMW -a -e ${CARBON_FRMW}.1056 ]
then
    sudo mv $CARBON_FRMW ${CARBON_FRMW}.1055 &&
    sudo mv ${CARBON_FRMW}.1056 $CARBON_FRMW &&
    echo "Switched Carbon.framework 10.5.5 -> 10.5.6"
fi

Comments