Вы можете использовать CGEventTap для получения событий мыши вместо NSEvent. Тогда у вас есть выбор: перевернутый или раскрепощенный в момент прибытия события.
(я считаю, что y = 0 - верх для NSEvent, а низ для CGEvent).
Вы ошибаетесь. Кварц использует перевернутый, у = 0 = верх. AppKit использует unslipped, а y = 0 = bottom. (Правка: для событий, то есть. Quartz 2D, API-интерфейс рисования, использует не измененные координаты, так же, как и AppKit.)