Ukelele

Mac OS X Keyboard Layout Editor

John Brownie, 2019-01-18

Ukelele is a Unicode Keyboard Layout Editor for Mac OS X versions 10.2 (Jaguar) and later. Version 2.0 through 2.2.8 are only for Mac OS X versions 10.4 (Tiger) and later. Version 3.0 and later require Max OS X 10.8 (Mountain Lion) or later. Version 3.3 and later require Mac OS 10.9 (Mavericks)

Beginning with version 10.2 (Jaguar), Mac OS X supports an XML-based format for keyboard layouts (.keylayout files). These may be installed by copying them to the Keyboard Layouts folder within /Library or ~/Library; then they are enabled via the Input Sources (Input in 10.5 and earlier) tab of the Keyboard (Language & Text in 10.9 and earlier, International in 10.5 and earlier) module within System Preferences.

However, modifying keyboard layouts—let alone creating entirely new keyboard layouts, such as for a new script—by directly editing the XML text is tedious and error-prone.

Ukelele aims to simplify keyboard layout editing by providing a graphical interface to .keylayout files, where the desired characters can simply be dragged onto keys as needed. (The Character Viewer or Character Palette, available in the Input menu if it has been enabled in System Preferences, and shown with Show Emoji & Symbols, is a great place to find the characters.)

In addition to simple assignment of single character codes to keys, Ukelele can assign multiple-character strings and can create "dead keys", where a keystroke sets a new state that modifies the output of the following keystroke.

For more information about Mac OS X keyboard layouts, as well as existing layouts available for download, see Input Resources. For some types of layout, particularly with large numbers of dead-key sequences, creating a layout with the text-based tool KeyLayoutMaker may be a useful alternative.

Companion Application

A companion application to Ukelele is Keyboard Juggler, available for macOS 10.10 (Yosemite) and later. This is a simple application that allows you to move keyboard layouts in and out of the installation folders without having to use the Finder. It is not needed for version 3.3 or later.

Feedback

Feedback about the Ukelele tool is invited (see the Read Me file for contact information). This software is provided in the hope that it may be useful, but with no warranty, expressed or implied, and with no guarantee of support or future upgrades.

History

The Organiser window now resizes more intelligently, expanding the lists, not the blank space.

The installer application used on exported disk images has a slightly revised interface.

Certain keyboard layouts that had been edited outside Ukelele could cause a crash, particularly when switching to the Modifiers tab. This is fixed.

The previous beta bundled a version of iconutil, which did not work on older macOS releases. The built-in version is now used, which should resolve issues in getting an icon when creating a new keyboard layout from the current keyboard input source.

2 January 2019 — Released version 3.3b3

Rearranged the File menu to put the install commands in a submenu.

Updated the manual.

When installing a keyboard layout not in a keyboard layout collection, the previous version of Ukelele tried to move an icon file even if there was none, generating an error dialog. This is fixed.

There is an unsolved crash for some users when creating a keyboard layout based on the current keyboard input source. Some logging has been added to help diagnose the issue.

18 December 2018 — Released version 3.3b2

Attaching an icon now works for keyboard layouts that are alone, not part of a collection. The organiser should also install and uninstall the icon along with the keyboard layout

The organiser now reminds you to log out whenever you install a keyboard layout.

There is now an item in the File menu, Install…, which opens the organiser.

Creating a keyboard layout based on the current input failed on systems prior to macOS 10.12 (Sierra). This is fixed.

If you removed a key map, and then used undo to replace it, the default index might be incorrectly set afterwards. This is fixed.

4 December 2018 — Released version 3.3b1

The mechanism for installing keyboard layouts has been reworked. Instead of doing it directly within Ukelele or indirectly through Keyboard Juggler, there is a new window, the Organiser, which brings the functionality of Keyboard Juggler into Ukelele. This removes the need for the helper application previously used by Ukelele. It also incorporates some Swift code, requiring macOS 10.9 (Mavericks) as the oldest supported version of the operating system.

The installation disk image that is now exported is hopefully more useful, with an app to install rather than a symbolic link. This allows the user to install for the current user, which is the preferred location for macOS 10.13 (High Sierra) and later.

Updated to Unicode 11.0.

Updated the language database to the Language Subtag Registry of 2018-10-31. This is used for specifying the intended language of a keyboard layout.

There is now a display of information about the current keyboard type in the keyboard window.

Some sanity checking of icon files now gets done when adding them to a keyboard layout, to ensure that they really are the right kind of files, not a different format with just the extension changed to .icns.

Added an option not to show symbols, but show the actual characters on key caps.

Keys whose codes are otherwise unknown are now labelled as ordinary keys, so you can change their output. This is relevant mostly for non-Apple keyboards, but potentially also for Japanese keyboards.

Changed the method of copying the icon when creating a keyboard layout from the current keyboard input source. This solves a crash in macOS 10.14 (Mojave).

Updated to Sparkle 1.20 (autoupdate mechanism).

When producing the XML file, Ukelele now uses spaces rather than tabs, which may resolve some issues in macOS recognising the keyboard layout as valid.

Fixed an issue where undo would not work correctly when the user deleted a dead key state and the keyboard layout had inline actions (meaning it was probably created by hand, not in Ukelele).

8 October 2017 — Released version 3.2.7

When a key’s output in a dead key state did not exist, and when that key only had one output (technically, no action element, just output), changing the output to the existing output caused Ukelele to assume that it was not changing anything, so nothing would happen. Worse was that you could change it to something else, and then undo would not do the correct thing. This has now been fixed.

Some dialogs had some issues with autolayout, causing elements such as buttons to appear in the wrong place. These have been fixed, hopefully.

Updated the manual and help to advise installing keyboard layouts for the current user only when on macOS 10.13 (High Sierra).

Fixed a typo in the Edit menu.

30 September 2017 — Released version 3.2.6

When changing the script of a keyboard layout, the ID was not being set correctly (the old ID was kept), causing problems with clashing IDs. This is fixed.

When changing the name of a keyboard layout, the localised names were not being changed. This is being done correctly now.

Choosing a keyboard type with the description “unknown”, usually “Unknown (ID = 22)” caused an exception which made subsequent work unreliable. The cause has been repaired.

The Enter Dead Key State contextual menu for a dead key now goes directly to the state triggered by the dead key.

The contextual menu for a key now contains an Edit Key… menu item to open the Edit Key dialog for that key.

Updated to the Unicode 10.0.0 database and the Sparkle 1.18.1 auto-update framework.

The installer disk image is now signed, which should allow Ukelele to install without going through the Gatekeeper dialog.

When creating a new keyboard layout from the current keyboard input source, the name is now automatically changed to be different from the original name, to avoid the problem of duplicate keyboard layout names.

20 April 2017 — Released version 3.2.5

If the name given to a keyboard layout contained an XML special character (left and right angle brackets, ampersand, single and double quotation marks), Ukelele would generate a file which was invalid XML. The name is now encoded and decoded correctly.

Removed some more unused code.

10 April 2017 — Released version 3.2.4

This release corrects the incorrect upload of version 3.2.3.

An error in uploading the last release meant that it wasn’t available.

Removed some unused code.

24 March 2017 — Released version 3.2.3

This release fixes a bug and adds a feature.

A keyboard layout with two actions with the same id, possibly one encoded as an XML entity and the other not, would cause a crash. Ukelele now brings up a dialog showing what the error is.

The “Sticky Modifiers” and “JIS Only” selections in the toolbox are now remembered and restored when quitting and restarting Ukelele.

Updated Sparkle framework (for auto-update) to 1.17.0.

15 February 2017 — Released version 3.2.2

This release fixes two bugs.

The tool to convert the current keyboard input source to a Ukelele-compatible XML file sometimes produces an incorrect script code, which makes the keyboard layout unreliable. Script codes and IDs are now fixed automatically.

Changing the name of a keyboard layout in the inspector would deselect the keyboard layout in the collection window, and a subsequent change would cause a crash. This is fixed, as well as restoring the selection appropriately when making other changes.

7 January 2017 — Released version 3.2.1

This release fixes an issue with the Sparkle framework, so that, once you have updated to 3.2.1, future updates will not be marked as insecure.

Add missing resources to ensure that Sparkle sees this as a secure update.

4 January 2017 — Released version 3.2

This release takes version 3.2 out of beta, and has minor changes since the last beta release.

Ukelele will not open a keyboard layout or collection that has been already installed, and suggests editing a copy and installing the new version.

Some tweaking of the names used in the Undo commands.

Updated the Sparkle framework (for auto-update) to version 1.15.1.

21 December 2016 — Released version 3.2b3

This beta release includes several bug fixes and updates the tutorial.

Several controls in the keyboard layout collection window were non-functional. This has been fixed.

Some menu items were inappropriately enabled for keyboard layouts not in a collection, and selecting them either did nothing or caused a crash. They are now enabled only when appropriate.

Creating an empty keyboard layout or capturing the current input now creates a default English localisation.

There were several problems with undo, mainly related to sorting the tables of keyboard layouts or localisations in a collection. They have been fixed.

Updated the tutorial’s screen shots to the latest version.

16 December 2016 — Released version 3.2b2

This beta release includes a bug fix and updated help.

Keyboard layouts without an intended language could cause a crash in the collection window. This is fixed.

Updated Ukelele Help.

15 December 2016 — Released version 3.2b1

This beta release includes several new and updated features.

Keyboard layout collections can now be localised. This means that the name of each keyboard layout can be shown correctly in various languages. This involves a new look for the collection window, which now has two tabs, plus new commands and dialogs.

When you create an installer disk image, the Keyboard Layouts folder is now called “Drag here to install”, which is hopefully clearer for people to use.

The manual has been updated.

Updated the language tag registry to that of October 2016.

When you opened the colour theme editor and selected a colour, the discrete GPU was activated, which could lead to increased power consumption. This is now avoided.

27 September 2016 — Released version 3.1.1

This release includes several bug fixes.

All key output was being displayed as white, which meant that printing did not work. Fixed.

When creating a keyboard layout with standard key maps, the space bar is populated with a space for no modifiers, shift and caps lock.

Fixed the creation of numbers in copies so that they work correctly when the name ends in “ copy X9” where X9 is a two or more digit number ending with the digit 9.

If a keyboard layout’s name contained characters that also had a decomposed form, problems could arise due to mismatch between the decomposed and precomposed forms, largely (though not entirely) related to setting the intended language. Hopefully, the fix here will solve the issue.

Removed some redundant code.

Updated to Xcode 8.

14 September 2016 — Released version 3.1.0

This release, the first full release of Ukelele 3.1, includes a changed feature and updated documentation.

The Duplicate Keyboard Layout command for a keyboard layout collection now creates a duplicate keyboard layout within the collection, rather than as a separate, unbundled keyboard layout.

Updated the manual and help.

6 September 2016 — Released version 3.1b3

This release, the third beta release of Ukelele 3.1, includes some bug fixes.

When a keyboard layout could output characters outside the Basic Multilingual Plane, the maxout setting for the keyboard layout could be calculated as shorter than it should be, which in turn could lead to odd behaviour of the keyboard layout in use. This has been fixed.

31 August 2016 — Released version 3.1b2

This release, the second beta release of Ukelele 3.1, includes some bug fixes.

Various issues in key display fixed, including increased line space to avoid some clipping and some scaling issues.

When showing the output of a key that has no output in the current dead key state, the dead key shading was applied based on the previous dead key state. It now shows the shading appropriate for the current dead key state.

Updated the manual and tutorial, mainly the screen shots.

25 August 2016 — Released version 3.1b1

This release, the first beta release of Ukelele 3.1, includes some new or reworked features and several bug fixes.

Reworked the code to display the output of a key. It now should look correct with multiple diacritics, though clipping may occur.

When changing the scale of the keyboard view, the output also changes scale.

Add a button to remove the language attribute of a keyboard layout.

Update terminology from bundle to collection.

Fix a bug that made the scale combo button show the wrong value.

Work around a bug that caused a crash when the pointer was over a key that had a non-ASCII character in the information (such as $).

Deleting the last keyboard layout in a collection and trying to undo the deletion caused a crash. Fixed.

Change the New Keyboard Layout behaviour to offer choices in the base layout, caps lock and command modifier combinations, as in a new standard keyboard layout in a collection.

The display now updates correctly after changing the modifier combinations.

Updated and extended the tutorial, which is now a PDF document rather than HTML.

Since changing the output of the F-keys (F1 through F19) was of no use, the F-keys are no longer editable.

When a user tries to edit the output of a special key the first time, a warning dialog is presented to offer alternatives.

Updated the manual.

8 August 2016 — Released version 3.0.5

This release of Ukelele fixes several bugs.

Buttons and menu items are enabled only as appropriate when a keyboard layout collection contains no keyboard layouts.

Importing a dead key did not work, with various ways that it could crash. These have been fixed, so it should be working as expected now.

When opening a keyboard layout, some checking is done to identify and report some errors that might arise with keyboard layouts that have had the XML file directly edited (in a text editor, not in Ukelele).

Updated the Unicode database to version 9.0.0.

Disable deleting a modifier combination if it’s the only one defined.

When adding a new key map, the dialog now picks the empty key map as the default, rather than whatever was previously chosen, which wasn’t working correctly.

If a keyboard layout collection had internal folders named without normal capitalisation, Ukelele would report that the bundle was invalid. This has been fixed.

10 June 2016 — Released version 3.0.4

This release of Ukelele fixes several bugs.

Fixed issues of printing and saving with keyboard layouts not part of a keyboard layout collection.

Drag and drop of modifier combinations now works correctly.

Creating a new key map as a copy of an existing key map produced an invalid keyboard layout. This has been fixed.

The remove button for modifier combination sets is enabled appropriately.

Fixed the symbol for the help key.

30 March 2016 — Released version 3.0.3

This release of Ukelele fixes a bug and updates some features.

Updated Sparkle (automatic update support) to version 1.14.0. This removes some issues. Ukelele was never susceptible to the http flaw, as it has always used https for updates.

Updated Boost (utility framework) to version 1.60.

Preferences were not being updated correctly, making some impossible to change (particularly the keyboard type). This has been fixed.

The XML output has been tweaked so that attributes now appear in the order that you would expect. In theory, this makes no difference, but it does make the XML easier to understand for a human reader.

Updated the manual in various places, including more explanation of unlinking, of creating keyboard layouts with different key maps for command and/or caps lock keys, and an updated list of the languages supported by Apple for Press and Hold.

Updated to the latest version of the Language Subtag Registry.

14 January 2016 — Released version 3.0.2

This release of Ukelele fixes a bug and introduces some new features.

When double-clicking a key, sometimes the output would appear as doubly encoded XML (e.g. &#x0026;#x001e; rather than &#x001e;). This has been fixed.

All of the sample keyboard layouts have been converted to Unicode rather than other scripts.

You can now remove an icon or language for a keyboard layout in a keyboard layout collection.

Removed some unused code and cleaned up some other internal things to make preparation for some future features.

Keyboard IDs are now set automatically, so that they will always match the selected script, and the user is never asked to set the ID, though it can be seen in the inspector window.

15 December 2015 — Released version 3.0.1

This is a bug-fix release of Ukelele.

When running on a recent Mac (iMac 5K, MacBook 12", possibly others), Ukelele didn't recognise the keyboard type, and showed a blank keyboard window. Try to change the keyboard type from the View menu also failed. In these cases, Ukelele will use a default keyboard type.

20 October 2015 — Released version 3.0.0

This is the first full release of version 3.0, after the beta testing period has finished.

Corrected the problem that the alias to the Keyboards Layout folder did not work as expected. This also resulted in a smaller file size for the created disk image.

The name of the keyboard layout collection or keyboard layout is now suggested as the initial name for the disk image..

14 October 2015 — Released version 3.0b6

A new feature has been added, to create a disk image for distributing keyboard layouts. The disk image has the keyboard layout collection (or plain keyboard layout) and an alias to the Keyboard Layouts folder in Library, which allows the user to drag and drop the keyboard layout (collection) to install.

Temporary files created when creating a keyboard layout from the current keyboard input source are now cleaned up, rather than leaving them to be removed on the next system reboot.

2 October 2015 — Released version 3.0b5

There were issues when starting Ukelele without any previous documents open, leading to a non-functional keyboard layout window. This has been fixed.

When opening a keyboard layout not in a collection, two windows would be opened. This has been fixed.

If Ukelele’s preferences had an old colour theme name, but there was no colour theme with that name present, the keyboard layout window would be black. Ukelele will now use the Default colour theme in this situation.

Changed the menu item from just “New” to “New Keyboard Layout Collection” to make it clearer what would be created.

Assorted internal changes for compatibility with Xcode 7’s compiler.

21 September 2015 — Released version 3.0b4

When saving a keyboard layout collection (a bundle), the file names of the files for the keyboard layout(s) included in the collection have their names set so that they are consistent with the keyboard layout name. This is necessary for the language of the keyboard layout to be recognised by the system.

Bundle identifiers had two dots in a row, and this has been fixed.

10 September 2015 — Released version 3.0b3

Colour themes are now available again, with an editor so that you can change or create themes.

Earlier betas implemented pasting a key incorrectly, which led to the keyboard layout being invalid, so that it could neither be used nor opened by Ukelele. This has been fixed.

Trying to install a keyboard layout that had not been saved caused a crash. A warning is now shown, asking the user to save the keyboard layout before installing it.

Some fixes were made to show error messages correctly.

When an invalid keyboard layout was in a bundle, error messages were generated multiple times. Now only one error message will be shown, and Ukelele will not attempt to open it again.

The manual was updated to include the colour theme editor.

3 August 2015 — Released version 3.0b2

A change was made so that Ukelele should work successfully on systems running OS X 10.8 (Mountain Lion).

An error in the XML generated by Ukelele 3.0b1 caused the system to reject keyboard layouts. This has been fixed.

The preferences to change the default theme from Default to Print failed to work. It now works as expected.

Text in key caps for small sizes (such as function keys and arrow keys on MacBook models) was positioned too high, and the top was cut off in print view. This has been repositioned.

When changing output of a key using the popover (default, rather than sheet), the input text is accepted if the user clicks outside the popover, not just when the Done button is clicked or the user presses the return key. As the change can always be undone, this was seen as more in keeping with Apple&rsquo;s guidelines.

27 July 2015 — Released version 3.0b1

Ukelele 3.0 is a completely new version, rewritten almost entirely apart from the core code that handles the actual keyboard layout structure.

Ukelele uses the new document model introduced by Apple. This means that all changes are automatically saved rather than having to be saved by the user. To create a new document, choose Duplicate from the File menu, give a new name, and save to the new location.

The preferred document format is now the keyboard layout collection, which is also referred to as a bundle, after the way that it is packaged. Keyboard layout collections can contain one or more keyboard layouts, with optional icons and intended languages for each of them.

The main keyboard layout window now uses a tabbed interface rather than having a drawer for the modifiers and the (somewhat confusing) comments view.

Ukelele now has the capability to install keyboard layouts itself. You can install for yourself, or for all users on your computer, without having to save the keyboard layout and drag it into the correct folder in the Finder.

Some interactions have been simplified by introducing the idea of selecting a key and then operating on it. So, for example, you could select a key and then turn it into a dead key with a single click and a single dialog.

Ukelele provides a Quick Look capability, giving you a way to see a keyboard layout from the Finder.

A concept of “simplified modifiers” has been introduced. Since no current Apple keyboard, or any Cocoa-based application, distinguishes between left and right shift, option or control keys, treating them all as the left modifier key, it is only worthwhile using left keys. Ukelele can simplify the modifier combinations defined by a keyboard layout to eliminate use of separate left and right modifier keys. This makes the modifier combinations easier to understand, without losing anything in current Apple systems.
Editing key output is now done with a popover, hopefully an easier way to do it.

The inspector window has been redesigned with a tabbed interface. New information fields include which modifiers are currently active and which modifier set they match.

When creating a new keyboard layout, you have a wider choice of standard keyboard layouts: QWERTY, AZERTY (French), QWERTZ (German), Dvorak and Colemak. Also, you can create a keyboard layout that combines two or three, with the command and/or caps lock key switching between them.

Many dialogs have been redesigned, sometimes combining two or more in a series so that an interaction is completed in a single dialog.

8 March 2014 — Released version 2.2.8

When creating a new key map as a copy of an existing map, the new key map had the same index as the old one, so the keyboard layout was invalid.

9 January 2014 — Released version 2.2.7

When creating a new key map as a copy of an existing map, the selected index was off by one.

Updated the manual and help with reference to Mavericks.

18 November 2013 — Released version 2.2.6

Some user keyboard layouts cause the converter to fail when using New From Current Input Source, and that caused a crash in Ukelele 2.2.5. Now you will get an error message about the XML file being invalid. It would be better to use New Based On&hellip; and open the original XML file.

9 November 2013 — Released version 2.2.5

When creating a keyboard layout based on an existing keyboard layout or from the current keyboard input source, a random keyboard ID is generated.

New state names are validated to avoid some obscure problems (basically, don’t call a state “0” or “none”).

14 December 2012 — Released version 2.2.4

Code-signing should now be correct for Gatekeeper on OS X 10.8 (Mountain Lion).

Updated Ukelele Help.

1 October 2012 — Released version 2.2.3

Creating a new keyboard layout from the current keyboard input source was crashing on PowerPC machines due to the tool used being Intel-only. That tool is now a universal binary, so it should work correctly on PowerPC.

29 September 2012 — Released version 2.2.2

Fix a crashing bug when creating a new modifier combination and choosing a copy of an existing key map.

Ensure that you cannot create a dead key state with no name, which would cause the keyboard layout to be invalid and hence not usable.

Code-signed for Gatekeeper.

Toolbar buttons updated for high-resolution (Retina) displays.

20 June 2012 — Released version 2.2.1

There is a new option in the preferences to generate pre-10.5 compatible bundles. These should still work in 10.7 and later for “press and hold”.

Fixed a problem in the Save As Bundle dialog where the Save button was labelled inaccurately as Open.

The interface is partly adapted for high-resolution displays such as the Retina MacBook Pro. Text should appear sharp, but the toolbar buttons and other graphic elements such as icons are not yet converted for high-resolution display.

31 May 2012 — Released version 2.2

By saving a keyboard layout in a bundle, it will become compatible with the “press and hold” mechanism for entering diacritics, introduced in OS X 10.7 (Lion). For this purpose, an “intended language” can be supplied (default is the system language), which will determine which possibilities are offered in the pop-up. However, such bundles may not work with OS X 10.4 (Tiger) and earlier.

Change the colour themes to allow more choices. For each category of key (normal, dead key, selected) and state (up or down), the gradient type, colours and text colour can be set individually.

Automatically repair missing key maps when opening a keyboard layout, putting empty key maps with only the special keys defined.

Detect and repair an invalid keyboard ID when opening a keyboard layout, automatically generating a valid keyboard ID for the script specified in the keyboard layout.

Open files now remember the colour theme, keyboard type and zoom level after quitting Ukelele and restarting, as long as files are automatically reopened (Lion and later).

When editing output of a special key, there is now a button to insert the standard output automatically.

Restore a missing file which caused the button to add a modifier set to be invisible.

Further fixed the behaviour of adding a creation comment (in 2.1.9 it was adding a comment every time the file was opened).

Fixed some situations where the selected colour theme was ignored and the default theme was used.

3 February 2012 — Released version 2.1.9

Restore a missing file which caused colour themes not to work for most people.

Fix the print dialog extension (PDE) so that the Ukelele options in the print dialog now appear and work again.

New keyboard layouts now get the appropriate creation comment added.

Fixed some problems with adding comments.

21 October 2011 — Released version 2.1.8

Reenable the &ldquo;New From Current Input Source&rdquo; command when running in Mac OS X 10.7 (Lion), as there is a new version of the helper utility.

Add a preference to allow the user to choose whether to reopen the documents that were open when Ukelele was last quit. This only applies to Mac OS X 10.7 (Lion), and allows the new default behaviour (resume) or the old behaviour (the user&rsquo;s choice of creating a new document, opening an existing document, or doing nothing).

Update the Unicode tables to the current draft of the Unicode Character Database, version 6.1. Note that this is a beta version, with the formal 6.1 specification due in February 2012.

Minor updates to the manual to reflect changes with Lion.

3 August 2011 — Released version 2.1.7

Disable &ldquo;New From Current Input Source&rdquo; when running in Mac OS X 10.7 (Lion), as it uses some helper utilities that do not run on Lion (they are PPC-only). It is still available on earlier versions of OS X.

7 June 2011 — Released version 2.1.6

Fix a bug that could lead to a new keyboard ID being set to 0 instead of the value in the dialog.

Show the default output for special keys in the status bar when editing a key within the window.

12 March 2011 — Released version 2.1.5

Write characters outside the Basic Multilingual Plane as hexadecimal values, to get around an apparent bug in Apple’s XML parser.

Now using Cocoa versions of the Inspector and Toolbox.

17 December 2010 — Released version 2.1.4

When a new modifier combination was added, it did not affect the display in the Ukelele window immediately. This is fixed so that it shows up properly.

6 December 2010 — Released version 2.1.3

Fix a crash when trying opening a keyboard layout within a bundle when either the bundle did not contain any keyboard layouts, no keyboard layout was chosen, or the cancel button was pressed.

24 November 2010 — Released version 2.1.2

Made some changes to the property list which may help with the problem of Ukelele appearing to claim non-Ukelele documents, particularly bundles.

12 November 2010 — Released version 2.1.1

Change the line endings to Unix line endings in the XML output file.

Improved formatting for XML files with multi-line comments.

30 October 2010 — Released version 2.1

Added a new preference which enables the user to choose to use a sheet dialog for editing key output on double-click (the previous behaviour, and the default) or edit in the same window.

Updated the Unicode database to version 6.0.

11 August 2010 — Released version 2.0.1

Corrected a problem which made keyboard layouts with no dead key states fail to work.

22 July 2010 — Released version 2.0

Corrected issues with French and Belgian keyboard layouts supplied with Ukelele which caused them not to open.

Made changes to the manual to better explain what is going on with control key combinations.

Improved a few error messages.

10 June 2010 — Released version 2.0b8

Fixed a bug that caused intermittent crashing when saving a file.

Fixed some problems with adding and deleting modifier combinations, some causing crashes, others creating keyboard layouts that could not be opened.

26 April 2010 — Released version 2.0b7

Fixed an issue with adding and deleting modifier combinations, which could lead to a keyboard layout that could not be used.

Implemented software update.

Found a work-around for keyboard layouts that have actions with an empty string for the id.

Updated the manual with a few fixes.

1 April 2010 — Released version 2.0b6

Replaced the colour options with a new preference panel, colour themes, which are now accessible from the View menu as well. Colour themes control all the colours of the keyboard, including background and text.

Updated the manual to incorporate changes since 2.0b1.

New feature to look up key strokes for a given output string. This is accessed from the Find item in the Edit menu.

Adjusted some code to prevent Ukelele producing a keyboard layout file that cannot be used by the operating system. Opening and saving a file should fix the problems in existing keyboard layouts.

Relaxed some restrictions related to using keyboard layouts with unusual key maps using base maps.

Created a user forum on Google Groups, Ukelele-Users.

9 February 2010 — Released version 2.0b5

Modified the code to save a file, hopefully avoiding a crash.

27 January 2010 — Released version 2.0b4

Instead of a black frame on dead keys, they are now a red colour, and the selected keys (for swapping keys) are framed.

The grey for printed keys that are down has been made a little lighter.

Support for opening files which are considered to be plain text has been re-enabled. Hopefully this solves problems in opening old files, without causing problems with saving them.

Key elements with empty output should be handle correctly now.

Symbols for non-printing characters should show up on non-standard keys.

25 January 2010 — Released version 2.0b3

Key colours are now user-configurable in preferences. Key up and key down have inner and outer colours, with a gradient from the outer colour at the corners to the inner colour in the centre of the key cap.

Key colours are swapped, so that the darker colour is now in the centre of the key, the lighter at the edges.

Crashes when moving from comment to comment have been fixed.

The problem solved in 1.8.4 with hand-edited files with gaps in numbering key maps has been solved in 2.0b3 as well.

Found a more robust solution for positioning text on the key cap.

A word of explanation about removing plain text support: This was only necessary for opening some old files, and was not a supported save format. Removing support avoids saving an unusable file.

20 January 2010 — Released version 2.0b2

Solved the problem of not launching on Mac OS X 10.4 (Tiger).

Changed the colour of the key caps to a darker blue, to increase contrast.

Moved the text down a bit on the key cap to provide more space for diacritics. This may not work all that well for different font sizes, and I will look at a more robust solution.

Printing now uses more printer-friendly colours — black on white, with no background colour, and grey highlights on modifiers that are down.

Fixed a crash if you clicked the “Create” button on the toolbar twice in a row.

Major rewrite, based on the Nano framework, meaning that it is restricted to Mac OS X 10.4 and later, but utilising many more modern features, such as sheets and drawers.

Redesigned interface, with a toolbar window and a drawer, bringing most elements into a single window.

The keyboard window is more scalable, allowing any value between 50% and 500%, including an option to fit the keyboard to the screen.

Printing is now implemented, with options of printing the keyboard layout with all dead key states and/or all modifier combinations.

Many interactions have been reworked, using a status bar to give instructions, leading to fewer dialogs that have to be navigated.

More information is now available about code points in the info inspector palette, based on the Unicode 5.2 standard.

Combining diacritics are now shown with a placeholder character, which is configurable in the preferences.

Comment handling is much improved, now handling all comments in the file, not just those at the beginning, and allowing comments longer than 255 characters.

New icons.

Support for bundles, so that keyboard layouts can be saved as bundles, or into existing bundles, optionally grouping the keyboard layout file with an icon file (usually the flag icon).

It is now possible to capture the current keyboard input source to create a keyboard layout. This allows easier conversion of older resource-based keyboard layouts, and use of the system’s keyboard layouts (which are no longer provided as XML as of 10.5, Leopard). Note that this facility requires Rosetta on Intel-based Macs.

The manual and tutorial have been rewritten to reflect the new version of Ukelele.