I documented everything I know about custom keyboard layouts on OS X, which have been supported since Jaguar (10.2): how to create them, how to install them on a per-user basis or system-wide, how to make a custom layout the system default (even for the login screen!), and how to assign a custom icon to your self-made keyboard layout.