Until now, we never inspected relations between interactions. So, it's time to examine ol.interaction.* classes. All the classes inherit from ol.interaction.Interaction, but compared to controls, it's less simple; you also have subclasses.
See the following diagram to grasp the relationships between the different interaction classes:

An inspection of the above schema shows that every ol.interaction component inherits from ol.interaction.Interaction. In some cases, when an interaction uses a mouse, pen, or touchscreen, it will need to inherit from ol.interaction.Pointer, which deals with this use case.
You can also note with the schema that interactions are tied to touch events for mobile, mouse events like click or drag, mouse events with the mouse wheel, and the keyboard. You can combine them depending on the expected behaviors. Luckily, by default, you can deal with them with ease. Let's see how. After this, we will explore different ways to make more customizations.
Most of the time, you don't really need to deal with interaction behaviors, but sometimes knowing how to manage them is a requirement.
You have two choices for simple cases:
var map = new ol.Map({
...
controls:[],
interactions:[],
...
});Consider that you need most default behaviors, but you don't need all of them. In this case, you will have to use the ol.interaction.defaults function.
As mentioned previously, the best and simplest way to handle interactions is by reusing the ol.interaction.defaults function, as follows.
Let's review the properties you can set in the options: