A computer peripheral device comprising: a panel (150, 350, 550, 1250), the panel comprising at least one switch and a corresponding at least one button operable to actuate a respective switch of the at least one switch; and a user input device (900, 1000, 1210) comprising: a chassis comprising a socket configured to releasably receive the panel (150, 350, 550, 1250); a chassis connector in the socket, the chassis connector configured to receive electrical signals generated by the at least one switch, from the received panel (150, 350, 550, 1250); a memory storing a plurality of button maps, wherein each button map of the plurality of button maps defines functions of the at least one button of a respective panel (150, 350, 550, 1250) of a plurality of panels (150, 350, 550, 1250), each of which being receivable in the socket; and a processor configured to retrieve from the received panel (150, 350, 550, 1250), an identity code indicative of a quantity and type of the at least one button of the received panel (150, 350, 550, 1250), and further configured to identify a matching button map from the plurality of button maps based on the identity code, wherein the matching button map defines the functions of the at least one button of the received panel (150, 350, 550, 1250). a panel (150, 350, 550, 1250), the panel comprising at least one switch and a corresponding at least one button operable to actuate a respective switch of the at least one switch; and a user input device (900, 1000, 1210) comprising: a chassis comprising a socket configured to releasably receive the panel (150, 350, 550, 1250); a chassis connector in the socket, the chassis connector configured to receive electrical signals generated by the at least one switch, from the received panel (150, 350, 550, 1250); a memory storing a plurality of button maps, wherein each button map of the plurality of button maps defines functions of the at least one button of a respective panel (150, 350, 550, 1250) of a plurality of panels (150, 350, 550, 1250), each of which being receivable in the socket; and a processor configured to retrieve from the received panel (150, 350, 550, 1250), an identity code indicative of a quantity and type of the at least one button of the received panel (150, 350, 550, 1250), and further configured to identify a matching button map from the plurality of button maps based on the identity code, wherein the matching button map defines the functions of the at least one button of the received panel (150, 350, 550, 1250). a chassis comprising a socket configured to releasably receive the panel (150, 350, 550, 1250); a chassis connector in the socket, the chassis connector configured to receive electrical signals generated by the at least one switch, from the received panel (150, 350, 550, 1250); a memory storing a plurality of button maps, wherein each button map of the plurality of button maps defines functions of the at least one button of a respective panel (150, 350, 550, 1250) of a plurality of panels (150, 350, 550, 1250), each of which being receivable in the socket; and a processor configured to retrieve from the received panel (150, 350, 550, 1250), an identity code indicative of a quantity and type of the at least one button of the received panel (150, 350, 550, 1250), and further configured to identify a matching button map from the plurality of button maps based on the identity code, wherein the matching button map defines the functions of the at least one button of the received panel (150, 350, 550, 1250).