Make OEHIDEvents immutable, they are no longer reused, however copyWithZone: will still return a new instance, so all previous value/state/timestamp are removed. Device handlers still keep a map of the events that were sent previously to avoid sending the same event with the same state twice in a row. Finally correcting a crash when setting an event in the preferences when the keyboard input is selected.