As an example, when I try to input (through py.event.get()) the ^ (above the 6), the event reads the shift key, but not the six. The same is true for capital letters and @, #, $, %, *, (, and ). The code below is in a while loop. It works for all the keys that don't require a shift.
for event in py.event.get():
if event.type == py.KEYDOWN:
keys = py.key.get_pressed()
if keys[py.K_CARET]:
print("^")
if event.type == py.K_CARET:
print("^")