Index: /trunk/src/org/openstreetmap/josm/gui/SideButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 1101)
+++ /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 1102)
@@ -8,4 +8,5 @@
 
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class SideButton extends JButton {
@@ -24,8 +25,16 @@
 		setToolTipText(tooltip);
 	}
+	@Deprecated
 	public SideButton(String name, String imagename, String property, String tooltip, int mnemonic, ActionListener actionListener)
 	{
 		super(tr(name), ImageProvider.get("dialogs", imagename));
 		setMnemonic(mnemonic);
+		setup(name, property, tooltip, actionListener);
+	}
+	public SideButton(String name, String imagename, String property, String tooltip, Shortcut shortcut, ActionListener actionListener)
+	{
+		super(tr(name), ImageProvider.get("dialogs", imagename));
+		if(shortcut != null)
+			shortcut.setMnemonic(this);
 		setup(name, property, tooltip, actionListener);
 	}
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1101)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1102)
@@ -429,5 +429,5 @@
 	public PropertiesDialog(MapFrame mapFrame) {
 		super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."),
-		Shortcut.registerShortcut("subwindow:properies", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
+		Shortcut.registerShortcut("subwindow:properties", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
 		Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 
@@ -602,7 +602,18 @@
 		};
 
-		buttonPanel.add(new SideButton(marktr("Add"),"add","Properties",tr("Add a new key/value pair to all objects"), KeyEvent.VK_A, buttonAction));
-		buttonPanel.add(new SideButton(marktr("Edit"),"edit","Properties",tr("Edit the value of the selected key for all objects"), KeyEvent.VK_E, buttonAction));
-		buttonPanel.add(new SideButton(marktr("Delete"),"delete","Properties",tr("Delete the selected key in all objects"), KeyEvent.VK_D, buttonAction));
+		Shortcut s = Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B,
+		Shortcut.GROUP_MNEMONIC);
+		buttonPanel.add(new SideButton(marktr("Add"),"add","Properties",
+                tr("Add a new key/value pair to all objects"), s, buttonAction));
+
+		s = Shortcut.registerShortcut("properties:edit", tr("Edit Properties"), KeyEvent.VK_I,
+		Shortcut.GROUP_MNEMONIC);
+		buttonPanel.add(new SideButton(marktr("Edit"),"edit","Properties",
+                tr("Edit the value of the selected key for all objects"), s, buttonAction));
+
+		s = Shortcut.registerShortcut("properties:delete", tr("Delete Properties"), KeyEvent.VK_Q,
+		Shortcut.GROUP_MNEMONIC);
+		buttonPanel.add(new SideButton(marktr("Delete"),"delete","Properties",
+                tr("Delete the selected key in all objects"), s, buttonAction));
 		add(buttonPanel, BorderLayout.SOUTH);
 
Index: /trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1101)
+++ /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1102)
@@ -10,4 +10,5 @@
 import java.util.Map;
 import java.util.Collection;
+import javax.swing.AbstractButton;
 import javax.swing.KeyStroke;
 import javax.swing.JMenu;
@@ -178,4 +179,12 @@
         }
     }
+    /**
+     * use this to set a buttons's mnemonic
+     */
+    public void setMnemonic(AbstractButton button) {
+        if (requestedGroup == GROUP_MNEMONIC && assignedModifier == groups.get(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
+            button.setMnemonic(KeyEvent.getKeyText(assignedKey).charAt(0)); //getKeyStroke().getKeyChar() seems not to work here
+        }
+    }
 
     /**
