Index: /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java
===================================================================
--- /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java	(revision 61)
+++ /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java	(revision 62)
@@ -43,5 +43,5 @@
 	 */
 	public AddWayAction(MapFrame mapFrame, MapMode followMode) {
-		super("Add Way", "addway", "Combine line segments to a new way.", KeyEvent.VK_W, mapFrame);
+		super("Add Way", "addway", "Combine selected segments to a new way.", KeyEvent.VK_W, mapFrame);
 		this.followMode = followMode;
 	}
Index: /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 61)
+++ /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 62)
@@ -273,5 +273,5 @@
 		b.addActionListener(actionListener);
 		b.setToolTipText(tooltip);
-		b.setMnemonic(mnemonic);
+		//b.setMnemonic(mnemonic); TODO disabled until mapmodes have no Alt in their hotkey.
 		return b;
 	}
Index: /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 61)
+++ /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 62)
@@ -14,4 +14,5 @@
 import javax.swing.DefaultListModel;
 import javax.swing.JButton;
+import javax.swing.JLabel;
 import javax.swing.JList;
 import javax.swing.JOptionPane;
@@ -80,7 +81,14 @@
 		button.setToolTipText("Search for objects.");
 		button.addActionListener(new ActionListener(){
+			private String lastSearch = "";
 			public void actionPerformed(ActionEvent e) {
-				String search = JOptionPane.showInputDialog(Main.main, "Please enter a search string", "Search", JOptionPane.INFORMATION_MESSAGE);
-				if (search == null)
+				JLabel l = new JLabel("Please enter a search string.");
+				l.setToolTipText("<html>Fulltext search.<ul>" +
+						"<li>Baker Street  - search for everything with 'Baker Street' in any key or name.</li>" +
+						"<li>name:Bak  - search for every object with key=name and 'Bak' anywhere in the value.</li>" +
+						"<li>foot:  - search for everything with the key=foot set to any value." +
+						"</ul></html>");
+				lastSearch = (String)JOptionPane.showInputDialog(Main.main,l,"Search",JOptionPane.INFORMATION_MESSAGE,null,null,lastSearch);
+				if (lastSearch == null)
 					return;
 				Main.main.ds.clearSelection();
@@ -88,5 +96,5 @@
 					if (osm.keys != null) {
 						for (Entry<Key, String> ent : osm.keys.entrySet()) {
-							if (search.indexOf(ent.getKey().name) != -1 || search.indexOf(ent.getValue()) != -1) {
+							if (match(lastSearch, ent.getKey(), ent.getValue())) {
 								osm.setSelected(true);
 								break;
@@ -97,4 +105,10 @@
 				selectionChanged(Main.main.ds.getSelected());
 				Main.main.getMapFrame().repaint();
+			}
+			private boolean match(String search, Key key, String value) {
+				int colon = search.indexOf(':');
+				if (colon == -1)
+					return key.name.indexOf(search) != -1 || value.indexOf(search) != -1;
+				return key.name.equals(search.substring(0, colon)) && value.indexOf(search.substring(colon+1)) != -1;
 			}
 		});
