+define PARSE_KEYBOARD
+ COMMANDS += $1
+ #$$(info $$(RULE))
+ COMMAND_$1 := "Keyboard $1 with $$(RULE)"
+endef
+
+
+# Recursively try to find a matching keyboard
+# During the first call $1 contains a list of all keyboards
+# One keyboard is checked and removed at a time
+define TRY_PARSE_KEYBOARD
+ CURRENT_KB := $$(firstword $1)
+ $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(CURRENT_KB)))
+ ifeq ($$(RULE_FOUND),true)
+ $$(eval $$(call PARSE_KEYBOARD,$$(CURRENT_KB)))
+ else ifneq ($1,)
+ $$(eval $$(call TRY_PARSE_KEYBOARD,$$(wordlist 2,9999,$1)))
+ endif
+endef
+