Thank you Hans,
It seems to be working very well:
In[319]:= g//ClearAll;
(*g[{m__?MatrixQ}|m__?MatrixQ,c_, mod_:1]:={{m},c,mod} /; MatrixQ[c]&&IntegerQ[mod]
You can also write the function with the c and mod conditions on the left hand side:*)
g[{m__?MatrixQ} | m__?MatrixQ, c_, mod_ : 1] /; MatrixQ[c] && IntegerQ[mod] := {{m}, c, mod}
g[{IdentityMatrix[2], IdentityMatrix[2]}]
g[IdentityMatrix[2], IdentityMatrix[2]]
g[IdentityMatrix[2], IdentityMatrix[2],IdentityMatrix[2]]
g[{IdentityMatrix[2], IdentityMatrix[2]}, IdentityMatrix[3]]
g[IdentityMatrix[2], IdentityMatrix[2], IdentityMatrix[3]]
g[{IdentityMatrix[2], IdentityMatrix[2]}, IdentityMatrix[3], 4.5]
g[{IdentityMatrix[2], IdentityMatrix[2]}, 5.7]
Out[321]= g[{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}]
Out[322]= {{{{1, 0}, {0, 1}}}, {{1, 0}, {0, 1}}, 1}
Out[323]= {{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}, {{1, 0}, {0, 1}}, 1}
Out[324]= {{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}, {{1, 0, 0}, {0, 1,
0}, {0, 0, 1}}, 1}
Out[325]= {{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}, {{1, 0, 0}, {0, 1,
0}, {0, 0, 1}}, 1}
Out[326]= g[{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}, {{1, 0, 0}, {0, 1,
0}, {0, 0, 1}}, 4.5]
Out[327]= g[{{{1, 0}, {0, 1}}, {{1, 0}, {0, 1}}}, 5.7]