Calling usb_id and GOTO in one rule did not make sense at all.
SUBSYSTEM!="input", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
SUBSYSTEM!="input", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
-SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="", IMPORT{program}="usb_id --export %p", GOTO="keyboard_usbcheck"
+SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="", IMPORT{program}="usb_id --export %p"
+SUBSYSTEMS=="usb", GOTO="keyboard_usbcheck"
GOTO="keyboard_modulecheck"
#
GOTO="keyboard_modulecheck"
#