Index: src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(revision 18076)
+++ src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(working copy)
@@ -89,6 +89,7 @@
         } else {
             p.add(check, GBC.eol()); // Do not fill, see #15104
         }
+        check.addChangeListener(l -> support.fireItemValueModified(this, key, getValue()));
         return true;
     }
 
@@ -98,12 +99,15 @@
         if (def == null && check.getState() == initialState) return;
 
         // otherwise change things according to the selected value.
-        changedTags.add(new Tag(key,
-                check.getState() == QuadStateCheckBox.State.SELECTED ? value_on :
-                    check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? value_off :
-                        null));
+        changedTags.add(new Tag(key, getValue()));
     }
 
+    protected String getValue() {
+        return check.getState() == QuadStateCheckBox.State.SELECTED ? value_on :
+            check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? value_off :
+                null;
+    }
+
     @Override
     public MatchType getDefaultMatch() {
         return MatchType.NONE;
