Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 7610)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 7613)
@@ -254,6 +254,8 @@
         /** Positive if key matches, negative otherwise. */
         KEY_REQUIRED("key!"),
+        /** Positive if key and value matches, neutral otherwise. */
+        KEY_VALUE("keyvalue"),
         /** Positive if key and value matches, negative otherwise. */
-        KEY_VALUE("keyvalue");
+        KEY_VALUE_REQUIRED("keyvalue!");
 
         private final String value;
@@ -550,5 +552,7 @@
                 return tags.containsKey(key);
             case KEY_VALUE:
-                return tags.containsKey(key) && (getValues().contains(tags.get(key)));
+                return tags.containsKey(key) && getValues().contains(tags.get(key)) ? true : null;
+            case KEY_VALUE_REQUIRED:
+                return tags.containsKey(key) && getValues().contains(tags.get(key));
             default:
                 throw new IllegalStateException();
@@ -584,5 +588,5 @@
         @Override
         public MatchType getDefaultMatch() {
-            return MatchType.KEY_VALUE;
+            return MatchType.KEY_VALUE_REQUIRED;
         }
 
