Components can have functions. What you want to try to stay away from is having a lot of functionality in them. The functions should be simple things. For example, my inventory component has a function for adding an item to the inventory:
public boolean addItem(ItemAttribute item) {
if (items.size() < maxItems) {
items.add(item);
return true;
}
return false;
}
It's more than a setter function, but doesn't have anything sophisticated. I would leave the function creation up to the individual deploying the framework though. Don't force an update function on them, let them decide what to implement.
Make sure you check out the example games that are on the Artemis site. Those should help you see how components are employed.
Also, check out this answer I gave with Artemis, specifically, in mind.
So with your example. The player control component wouldn't need much data in it at all. Nor functionality. However, simply attaching it to an entity that also had a position would make the PlayerControlSystem
pick up that component and process the incoming keyboard input. Sometimes you can think of components like flags for systems. The component is really only there so that the system adds that entity to its processing group.
Components should be objects that the system can access. When a system accesses a component it should be able to access its data and whatever simple functionality it has.
There should be a different system for each control type and a different component for each control type. If you want to compress that into a single system or a single component you can, but it'll just end up in a switch statement like described in Sidar's answer.