First there's never been any JSON.Key(...) expression, with or without parameters.
Getting the key at a specific path doesn't mean much thing, because the key would be the last part of the path you are setting.
Mabye the only use I could think of is Key(1) that would return the last component of the CurrentPath, but you should already know it in your code somehow.
The only place where you could be unable to know the CurrentPath is in the foreach loop, that's why CurrentKey is set here.
Otherwise, Value(0,"my","path") is already returning the value at the given path, and Value(1,"my","path") as well but relatively to CurrentPath.
The difference between v1.0 and v1.1 is just the addition of CurrentValue which is an alias to Value(1).
The other change I made was to reset the CurrentPath to what it should be at the begining of each loop iteration, and reset it to what it was before the foreach loop when you exit it.
I was thinking about providing an alias like ValueFromRoot("my","path") and ValueFromCurrent("my","path") to make things more clear (maybe someone has a better idea)
So, to summarize, I fail to see where a `Key` expression would be usefull, and the `Value` expression already works as expected, isn't it?
And as far as CurrentKey and CurrentValue goes I prefer them to be simple. They are more or less the equivalent of the Dictionary counterpart.