Earlier quoted context omitted.
Because keywords are functions which are implemented such that: (:keyword m) calls in turn (get m :keyword) That's just a basic feature of the language. No macros involved.
So, reader knows about keywords and does this implicit syntactic transformation? It seems to me that a function must be defined somewhere before one could call it.)
The keyword is a function i.e. (in Java terms) it implements the IFn interface.
The effect of that function is the same as calling the get function on a map using the keyword as the argument.