reworked CursorSignals to calculate source signal and full key path on init, added test