libxi is an extension to the X11 protocol to support input devices other than the core X keyboard and pointer. It allows client programs to select input from these devices independently from each other and independently from the core devices.