\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{trace,l3clist,xparse}

\ExplSyntaxOn


\def\showgrabbedtokens{\showthe\l_xparse_grabbed_args_toks}

\def_new:Npn \xparse_add_arg_type_k: {
  \xparse_add_remaining_m_args:
  \toks_put_right:Nn \l_xparse_grabbed_args_toks {\x_parse_k:w}
% continue with parsing the signature
  \let:NN \xparse_read_arg_type_or_grab_default:n  
  \xparse_parse_signature:n
}
\def_new:Npn \x_parse_k:w {
  \group_begin: 
  \char_set_catcode:nn{`\,}{12} \x_parse_k_aux:w
}
\def_new:Npn \x_parse_k_aux:w #1\l_xparse_grabbed_args_toks#2{
  \group_end:
  \toks_clear:N \l_tmpa_toks
  \clist_map_inline:nn {#2}{
    \toks_put_right:Nn \l_tmpa_toks{{##1}}
  }
  \toks_put_right:Nx \l_xparse_grabbed_args_toks{{\toks_use:N\l_tmpa_toks}} 
  #1\l_xparse_grabbed_args_toks
}


\def_long_new:Npn \xparse_add_arg_type_g: {
  \xparse_add_remaining_m_args:
  \toks_put_right:Nn \l_xparse_grabbed_args_toks {\x_parse_g:w}
  \let:NN \xparse_read_arg_type_or_grab_default:n  
  \xparse_grab_default_arg:n
}
\def_new:Npn \x_parse_g:w #1{
  \group_begin:
  #1
  \x_parse_g_aux:w
}
\def_new:Npn \x_parse_g_aux:w #1\l_xparse_grabbed_args_toks#2{
  \group_end:
  \toks_put_right:Nn \l_xparse_grabbed_args_toks{{#2}}
  #1\l_xparse_grabbed_args_toks
}

% Detokenize input
\def_long_new:Npn \xparse_add_arg_type_d: {
  \xparse_add_remaining_m_args:
  \toks_put_right:Nn \l_xparse_grabbed_args_toks {\x_parse_d:w}
  \let:NN \xparse_read_arg_type_or_grab_default:n  
  \xparse_parse_signature:n
}
\def_new:Npn \x_parse_d:w #1\l_xparse_grabbed_args_toks#2{
  \toks_put_right:Nx \l_xparse_grabbed_args_toks{
    {\tlist_to_str:n{#2}}}
  #1\l_xparse_grabbed_args_toks
}


\DeclareDocumentCommand\testkey{mkm}{}% no definition, just a test
\DeclareDocumentCommand\testg{mg{\catcode`\%=12\relax}m}{}
\DeclareDocumentCommand\testd{mdm}{`#1-#2-#3'}

\show\testkey
\show\testg
\show\testd

\begin{document}

\traceon

\testkey{aaa}{bbb,ccc,ddd,eee}{fff}

\showgrabbedtokens

\catcode`\,=13

\testkey{aaa}{bbb,ccc,ddd,eee}{fff}

\showthe\catcode`\,

\showgrabbedtokens

\testg{aaa}{bbb%%ddd,eee}{fff}

\showgrabbedtokens

\testd{aaa}{bbb$_\error$ddd,eee}{fff}

\showgrabbedtokens

\traceoff

\stop