Input event library