keyboard validator now correctly handles dual invalid+duplicate cases