diff --git a/.clang-format b/.clang-format
index 36c5643a52bdbf1f0720f50dea27181105b8e79f..6286087c5e344b1bbe3de1b97ef0a8670423f719 100644
--- a/.clang-format
+++ b/.clang-format
@@ -236,6 +236,7 @@ ForEachMacros:
   - RNA_BEGIN
   - RNA_PROP_BEGIN
   - RNA_STRUCT_BEGIN
+  - RNA_STRUCT_BEGIN_SKIP_RNA_TYPE
   - SEQP_BEGIN
   - SEQ_BEGIN
   - foreach
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 58d352ac8d1793cab2dd35a3dc7c76940a75b8c6..5d3ef5c625eca3bed4571e3c9232427e3ede9fc7 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -6450,7 +6450,7 @@ static void template_keymap_item_properties(uiLayout *layout, const char *title,
 
   flow = uiLayoutColumnFlow(layout, 2, false);
 
-  RNA_STRUCT_BEGIN (ptr, prop) {
+  RNA_STRUCT_BEGIN_SKIP_RNA_TYPE (ptr, prop) {
     const bool is_set = RNA_property_is_set(ptr, prop);
     uiBut *but;
 
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 9316f27eb669e6dbe4fc2c43292d90ca172ffc81..5045137fd957d137173169bd50d3fc2e9adb6d92 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -1264,6 +1264,17 @@ void RNA_collection_clear(PointerRNA *ptr, const char *name);
          RNA_property_collection_next(&rna_macro_iter)) { \
       PropertyRNA *prop = (PropertyRNA *)rna_macro_iter.ptr.data;
 
+#define RNA_STRUCT_BEGIN_SKIP_RNA_TYPE(sptr, prop) \
+  { \
+    CollectionPropertyIterator rna_macro_iter; \
+    RNA_property_collection_begin( \
+        sptr, RNA_struct_iterator_property((sptr)->type), &rna_macro_iter); \
+    if (rna_macro_iter.valid) { \
+      RNA_property_collection_next(&rna_macro_iter); \
+    } \
+    for (; rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) { \
+      PropertyRNA *prop = (PropertyRNA *)rna_macro_iter.ptr.data;
+
 #define RNA_STRUCT_END \
   } \
   RNA_property_collection_end(&rna_macro_iter); \