Only recalculate from explicitly-relevant keyboard events
Don’t assume 0% is the same as NaN