Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 14281)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 14282)
@@ -264,6 +264,6 @@
     /**
      * Determines if commands can be undone.
-     * @return {14281 true} if at least a command can be undone
-     * @since xxx
+     * @return {@code true} if at least a command can be undone
+     * @since 14281
      */
     public boolean hasUndoCommands() {
Index: trunk/src/org/openstreetmap/josm/tools/KeyboardUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/KeyboardUtils.java	(revision 14281)
+++ trunk/src/org/openstreetmap/josm/tools/KeyboardUtils.java	(revision 14282)
@@ -205,4 +205,5 @@
                 // https://en.wikipedia.org/wiki/German_keyboard_layout
                 result.add((char) KeyEvent.VK_DEAD_CIRCUMFLEX);
+                result.add('ˆ'); // U+02C6 : dead/modifier circumflex
                 break;
             case "cs": // Czech
@@ -240,4 +241,5 @@
                 // https://en.wikipedia.org/wiki/QWERTY#Estonian
                 result.add((char) KeyEvent.VK_DEAD_CARON); // https://en.wikipedia.org/wiki/Caron
+                result.add('ˇ'); // U+02C7 : dead key/modifier
                 break;
             case "is": // Icelandic
@@ -302,4 +304,5 @@
             // Works also for Dvorak, https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard
             result.add('`'); // U+0060: On US QWERTY, this is not a dead key
+            result.add((char) KeyEvent.VK_DEAD_GRAVE);
             result.add('ˋ'); // U+02CB: On International QWERTY, this is a dead key
             return result;
Index: trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java	(revision 14281)
+++ trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java	(revision 14282)
@@ -57,38 +57,41 @@
         char deadGrave = (char) KeyEvent.VK_DEAD_GRAVE;
         char deadCaron = (char) KeyEvent.VK_DEAD_CARON;
-        testgetCharactersForKeyE00("ar", 'ذ', '>', '`', deadGrave);
-        testgetCharactersForKeyE00("fr_FR", '²', '$', '`', deadGrave);
-        testgetCharactersForKeyE00("fr_CA", '#', '$', '/', '`', deadGrave);
-        testgetCharactersForKeyE00("sq", '\\', '`', deadGrave);
-        testgetCharactersForKeyE00("it", '\\', '`', deadGrave);
-        testgetCharactersForKeyE00("pt", '\\', '`', deadGrave);
-        testgetCharactersForKeyE00("pt_BR", '\'', '`', deadGrave);
-        testgetCharactersForKeyE00("de", deadCircumflex, '`', deadGrave);
-        testgetCharactersForKeyE00("cs", ';', '`', deadGrave);
-        testgetCharactersForKeyE00("he", '`', deadGrave);
-        testgetCharactersForKeyE00("hu", '0', '`', deadGrave);
-        testgetCharactersForKeyE00("pl", '`', deadGrave);
-        testgetCharactersForKeyE00("bs", '¸', '`', deadGrave);
-        testgetCharactersForKeyE00("hr", '¸', '`', deadGrave);
-        testgetCharactersForKeyE00("sl", '¸', '`', deadGrave);
-        testgetCharactersForKeyE00("sr", '¸', '`', deadGrave);
-        testgetCharactersForKeyE00("ro", ']', '`', deadGrave);
-        testgetCharactersForKeyE00("da", '½', '`', deadGrave);
-        testgetCharactersForKeyE00("fo", '½', '`', deadGrave);
-        testgetCharactersForKeyE00("nl", '@', '`', deadGrave);
-        testgetCharactersForKeyE00("et", deadCaron, '`', deadGrave);
-        testgetCharactersForKeyE00("is", '°', '`', deadGrave);
-        testgetCharactersForKeyE00("es", '|', '`', deadGrave);
-        testgetCharactersForKeyE00("es_ES", 'º', '`', deadGrave);
-        testgetCharactersForKeyE00("tr", '"', '*', '`', deadGrave);
-        testgetCharactersForKeyE00("de_LU", deadCircumflex, '²', '§', '`', deadGrave);
-        testgetCharactersForKeyE00("fr_LU", '$', '²', '§', '`', deadGrave);
-        testgetCharactersForKeyE00("fr_CH", '²', '$', '§', '`', deadGrave);
-        testgetCharactersForKeyE00("de_CH", deadCircumflex, '§', '`', deadGrave);
-        testgetCharactersForKeyE00("de_LI", deadCircumflex, '§', '`', deadGrave);
-        testgetCharactersForKeyE00("fi_FI", '§', '`', deadGrave);
-        testgetCharactersForKeyE00("sv_SE", '§', '`', deadGrave);
-        testgetCharactersForKeyE00("no_NO", '|', '`', deadGrave);
-        testgetCharactersForKeyE00("sv_NO", '|', '`', deadGrave);
+        char deadCircumflex2 = 0x2C6;
+        char deadGrave2 = 0x2CB;
+        char deadCaron2 = 0x2C7;
+        testgetCharactersForKeyE00("ar", 'ذ', '>', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fr_FR", '²', '$', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fr_CA", '#', '$', '/', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("sq", '\\', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("it", '\\', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("pt", '\\', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("pt_BR", '\'', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("de", deadCircumflex, deadCircumflex2, '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("cs", ';', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("he", '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("hu", '0', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("pl", '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("bs", '¸', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("hr", '¸', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("sl", '¸', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("sr", '¸', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("ro", ']', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("da", '½', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fo", '½', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("nl", '@', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("et", deadCaron, deadCaron2, '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("is", '°', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("es", '|', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("es_ES", 'º', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("tr", '"', '*', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("de_LU", deadCircumflex, deadCircumflex2, '²', '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fr_LU", '$', '²', '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fr_CH", '²', '$', '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("de_CH", deadCircumflex, deadCircumflex2, '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("de_LI", deadCircumflex, deadCircumflex2, '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("fi_FI", '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("sv_SE", '§', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("no_NO", '|', '`', deadGrave, deadGrave2);
+        testgetCharactersForKeyE00("sv_NO", '|', '`', deadGrave, deadGrave2);
     }
 
