Is it possible to check if a function has been called with a keyword argument explicitly?

My suggestion here would allow this, but could be considered to make your function “messier”.

function A(x; karg1=nothing)
    if isnothing(karg1)
        karg1 = 3
    else
        # karg1 was explicitly given
    end
    # rest of function
end

And you could even disambiguate whether the keyword argument was explicitly given with the default value, e.g.

function A(x; karg1=nothing)
    if isnothing(karg1)
        karg1 = 3
    elseif karg1 == 3
        # karg1 was explicitly given as the default value
    end
    # rest of function
end