\documentclass{minimal}
\usepackage{keyval2e,color}
\makeatletter
\kve@definekeys[KV]{fam}[mp@]{%
  keyone/+/\ifstrcmpTF{#1}{+}{\def\userinput{#1}}{\def\userinput{???}},
  keytwo/+,
  keythree/+,
  keyfour/+
}
\def\fourplus{+,+,+,+}
\newcommand*\putmany[2][*]{%
  \@tempcnta\z@
  \loop
  \advance\@tempcnta\@ne#1%
  \ifnum\@tempcnta<#2\relax
  \repeat
}
\newcommand{\testa}[2]{%
  \kve@setafterdefaults[KV]{fam}{#2}%
  \edef\tempa{\mp@keyone,\mp@keytwo,\mp@keythree,\mp@keyfour}%
  Test #1: \textcolor{red}{*} \texttt{\tempa} \textcolor{red}{*}%
  \space\ifxTF\tempa\fourplus{All values are defaults\putmany[\space]{2}}%
    {At least one value is set}%
  \@spaces\textcolor{red}{||} keyone's value: \userinput
}
\newcommand{\testb}[2][]{\testa{#2}{#1}}
\begin{document}

\ttfamily\noindent
\testa{Aa}{}\\
\testa{Ba}{keyone=+,keythree=+}\\
\testa{Ca}{keytwo=  +,keythree=a}\\
\testa{Da}{keyone=b,keythree=a,keyfour=+}\\
\testb{Ab}\\
\testb[keyone=  +,keythree=+]{Bb}\\
\testb[keytwo=+,keythree=a]{Cb}\\
\testb[keyone=b,keytwo=+,keythree=a]{Db}\\

\end{document} 