Is the communication between the USB or PS/2 keyboard and the computer simplex, duplex or half-duplex (unidirectional or bidirectional)?
There is a difference how USB and PS/2 devices operate.

A USB keyboard doesn't send any data on its own unless the host makes a request. So the communication is definitely half duplex: host sends IN request  on (differential) data line, keyboard responds with data which key was pressed or depressed, on same data wires. If data were received successfully, the host returns "ACK". If no key was pressed, the keyboard returns "NAK", and does nothing until next inquiry. Although it is a case of polling, it is called "interrupt pipe". Since the USB host is always in control (except waking up from sleep/suspend state), it can send commands to keyboard to change its configuration, like setting Numlok or Caplock.

In PS/2 protocol things are different. The communication is controlled by device. The device generates the clock and a packet of data whenever an event occurs. Still the PS/2 host can send some control data; it first toggles the clock, then the device takes over the clock, and host synchronizes its data to device clock. Then the device takes ownership of data line, and asserts 
"ACK" bit. 

So, in both cases the single data channel is shared in both directions, so the communication is "half-duplex".