A method, comprising: receiving, by a processor (502, 602), a first pen input from a first pen and a second pen input from a second pen at a kernel space human interface device, HID, class driver, wherein the first pen and the second pen are interacting with a single display and the kernel space HID class driver is located within an operating system of a device (100, 500, 600) including the processor (502, 602); forwarding, by the processor (502, 602), the first pen input and the second pen input from the kernel space HID class driver to a user space HID class driver, wherein the user space HID class driver is located in a user space where an application is run; forwarding, by the processor (502, 602), the first pen input and the second pen input from the user space HID class driver to a pen input library via the operating system in response to a notification to the pen input library that the first pen input and the second pen input are available for retrieval from the operating system, wherein the user space HID class driver provides functionality to allow the pen input library to understand the first and second pen inputs coming from the kernel space; translating, by the processor (502, 602), the first pen input into a first output and the second pen input into a second output that are to be executed by the application, wherein the translation is provided by the pen input library and the pen input library is to maintain separate pen input streams for each pen (102, 104); and sending, by the processor (502, 602), the first output and the second output to the application, wherein the application executes the first output and the second output simultaneously. receiving, by a processor (502, 602), a first pen input from a first pen and a second pen input from a second pen at a kernel space human interface device, HID, class driver, wherein the first pen and the second pen are interacting with a single display and the kernel space HID class driver is located within an operating system of a device (100, 500, 600) including the processor (502, 602); forwarding, by the processor (502, 602), the first pen input and the second pen input from the kernel space HID class driver to a user space HID class driver, wherein the user space HID class driver is located in a user space where an application is run; forwarding, by the processor (502, 602), the first pen input and the second pen input from the user space HID class driver to a pen input library via the operating system in response to a notification to the pen input library that the first pen input and the second pen input are available for retrieval from the operating system, wherein the user space HID class driver provides functionality to allow the pen input library to understand the first and second pen inputs coming from the kernel space; translating, by the processor (502, 602), the first pen input into a first output and the second pen input into a second output that are to be executed by the application, wherein the translation is provided by the pen input library and the pen input library is to maintain separate pen input streams for each pen (102, 104); and sending, by the processor (502, 602), the first output and the second output to the application, wherein the application executes the first output and the second output simultaneously.