What is event type in JavaScript?

The change in the state of an object is known as an Event. In html, there are various events which represents that some activity is performed by the user or by the browser. When javascript code is included in HTML, js react over these events and allow the execution. This process of reacting over the events is called Event Handling. Thus, js handles the HTML events via Event Handlers.

For example, when a user clicks over the browser, add js code, which will execute the task to be performed on the event.

Some of the HTML events and their event handlers are:

Mouse events:

Event PerformedEvent HandlerDescriptionclickonclickWhen mouse click on an elementmouseoveronmouseoverWhen the cursor of the mouse comes over the elementmouseoutonmouseoutWhen the cursor of the mouse leaves an elementmousedownonmousedownWhen the mouse button is pressed over the elementmouseuponmouseupWhen the mouse button is released over the elementmousemoveonmousemoveWhen the mouse movement takes place.

Keyboard events:

Event PerformedEvent HandlerDescriptionKeydown & Keyuponkeydown & onkeyupWhen the user press and then release the key

Form events:

Event PerformedEvent HandlerDescriptionfocusonfocusWhen the user focuses on an elementsubmitonsubmitWhen the user submits the formbluronblurWhen the focus is away from a form elementchangeonchangeWhen the user modifies or changes the value of a form element

Window/Document events

Event PerformedEvent HandlerDescriptionloadonloadWhen the browser finishes the loading of the pageunloadonunloadWhen the visitor leaves the current webpage, the browser unloads itresizeonresizeWhen the visitor resizes the window of the browser

Let's discuss some examples over events and their handlers.

Click Event

Test it Now

MouseOver Event

Test it Now

Focus Event

Test it Now

Keydown Event

Test it Now

Load event

Test it Now

Whenever a user presses any key on the Keyboard, different events are fired. There are three keyboard events, namely

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
2,
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
3, and
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
4. Keyboard events belong to the
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
5 object. This tutorial will discuss how to implement JavaScript keyboard events.

One of the most common uses of keyboard events today is computer gaming. Most browser-based games require some form of keyboard input. There are different responses from game objects based on the keyboard event. This tutorial will also demonstrate how keyboard events are used in gaming.

Table of contents

Prerequisites

This article is suitable for beginner to expert web developers. However, prior knowledge of HTML and JavaScript is required.

JavaScript keyboard events

There are three different keyboard events in JavaScript:

  1. // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    2: Keydown happens when the key is pressed down, and auto repeats if the key is pressed down for long.
  2. // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    3: This event is fired when an alphabetic, numeric, or punctuation key is pressed down.
  3. // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    4: Keyup happens when the key is released.

Some browsers no longer support

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
3 event. Refer to the for
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
3 event browser compatibility details.

To record a

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
2 event in JavaScript, use the code below:

// Add event listener on keydown
document.addEventListener('keydown', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);

To record a

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
3 event in JavaScript, use the code below:

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);

To record a

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
4 event in JavaScript, use the code below:

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);

In the code snippets above, we are adding the

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
4 method to the document. This attaches the event handler to the window, to listen for the keyboard events.

KeyboardEvent sequence

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
5 events are fired in the following order:

  1. The first event is the
    // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    2 event. If a key that produces a character key which is held further, then the event is repeated.
  2. If the
    // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    3 event is supported, it is fired next and repeated while the key is pressed down.
  3. The last event is the
    // Add event listener on keypress
    document.addEventListener('keypress', (event) => {
      var name = event.key;
      var code = event.code;
      // Alert the key name and key code on keydown
      alert(`Key pressed ${name} \r\n Key code value: ${code}`);
    }, false);
    
    4 event. It is fired when the key is released.

Handling keyboard events in JavaScript

The

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
9 object is the parent of all event objects. Some of the commonly used event objects are
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
0,
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
5,
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
2,
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
3,
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
4, and
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
5. This tutorial will focus on
// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
5.

The event object has two properties,

<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
7 and
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
8, which allows getting the character and the ‘physical key code’, respectively. The table below shows the
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
9 and
  if (name === 'Control') {
    // Do nothing.
    return;
  }
0 for the character
  if (name === 'Control') {
    // Do nothing.
    return;
  }
1.

Key
  if (name === 'Control') {
    // Do nothing.
    return;
  }
0
<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
9
  if (name === 'Control') {
    // Do nothing.
    return;
  }
4
  if (name === 'Control') {
    // Do nothing.
    return;
  }
5
  if (name === 'Control') {
    // Do nothing.
    return;
  }
1 (lowercase)
  if (name === 'Control') {
    // Do nothing.
    return;
  }
7
  if (name === 'Control') {
    // Do nothing.
    return;
  }
5
  if (name === 'Control') {
    // Do nothing.
    return;
  }
4 (uppercase)

The

<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>
9 value may vary depending on the language, while the
  if (name === 'Control') {
    // Do nothing.
    return;
  }
0 is always the same. For all the keycode values on a keyboard, refer to the W3 UI events code specification.

We will use the JavaScript scripting language to get each key’s keycode value. Create an HTML script with your preferred name and add the JavaScript code below. Open the script on a web browser.

<script>
  // Add event listener on keydown
  document.addEventListener('keydown', (event) => {
    var name = event.key;
    var code = event.code;
    if (name === 'Control') {
      // Do nothing.
      return;
    }
    if (event.ctrlKey) {
      alert(`Combination of ctrlKey + ${name} \n Key code Value: ${code}`);
    } else {
      alert(`Key pressed ${name} \n Key code Value: ${code}`);
    }
  }, false);
  // Add event listener on keyup
  document.addEventListener('keyup', (event) => {
    var name = event.key;
    if (name === 'Control') {
      alert('Control key released');
    }
  }, false);
</script>

The complete source code for the above demo is available on GitHub here.

The

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);
2 key is used in combination with other keys. Therefore, we need to note that, when the
// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);
2 key is combined with different keys, we perform different
// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);
4 events.

The code below creates an alert when any key is pressed down (

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
2 event) except for the
// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);
2 key.

  if (name === 'Control') {
    // Do nothing.
    return;
  }

If the

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);
2 key is pressed without any combination, the code listens to the keyup event and creates an alert.

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  if (name === 'Control') {
    alert('Control key released');
  }
}, false);

The screenshots below shows the codes output, when different keys are pressed:

  • Control key (
    // Add event listener on keyup
    document.addEventListener('keyup', (event) => {
      var name = event.key;
      if (name === 'Control') {
        alert('Control key released');
      }
    }, false);
    
    8) released output

  • Key “r” (
    // Add event listener on keyup
    document.addEventListener('keyup', (event) => {
      var name = event.key;
      if (name === 'Control') {
        alert('Control key released');
      }
    }, false);
    
    9) pressed output

  • Combination of the control key and key “d” (
    // Add event listener on keyup
    document.addEventListener('keyup', (event) => {
      var name = event.key;
      if (name === 'Control') {
        alert('Control key released');
      }
    }, false);
    
    8 +
      <p>Use the arrow keys to control the square object.</p>
      <svg width="500px" height="500px" class="area">
        <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
      </svg>
      <script>refreshPosition();</script>
    
    1) output

Use of keyboard events in gaming demo

Keyboard events are used in gaming, whereby a player can control game objects using some predefined keys. We will create a game demo where a player controls a game object using the arrow keys.

HTML code

The HTML code creates a SVG with a rectangular shape.

Draw a rectangle using HTML SVG code below:

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>

CSS code

Now, let’s style the background color of the SVG using the code below:

  /* Change svg background color. */
  .area {
    background-color: #00FF00;
  }

JavaScript code

Then, we declare some variables that we will be using in our game, as shown below:

// Declare and assign variables.
let object1Size = {
  width: 20,
  height: 20
};
let position = {
  x: 10,
  y: 10
};
let moveRate = 10;
let object1 = document.getElementById("object1");

Create two functions (

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
2 and
  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
3) for updating the object position.

These functions gives the object’s updated position, when given the distance the object is moved along either axis, as an argument.

// Update y-axis position.
function updateYPosition(distance) {
  position.y = position.y - distance;
// Update y-axis position at the edge.
  if (position.y < 0) {
    position.y = 499;
  } else if (position.y > 499) {
    position.y = 0;
  }
}
// Update x-axis position.
function updateXPosition(distance) {
  position.x = position.x + distance;
  // Update x-axis position at the edge.
  if (position.x < 0) {
    position.x = 499;
  } else if (position.x > 499) {
    position.x = 0;
  }
}

The function

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
4 computes the new position of the object by subtracting the distance moved by the object from the Y-axis position.

The function

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
5 computes the new position of the object by adding the distance moved by the object from the X-axis position.

The

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
6 function draws the object to its new position.

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
0

The

// Add event listener on keyup
document.addEventListener('keyup', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
4 method is used to attach an event handler to the object. This event handler listens for keydown events. Once the relevant keys are pressed, the
  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
6 method is called to draw the object at its new position.

// Add event listener on keypress
document.addEventListener('keypress', (event) => {
  var name = event.key;
  var code = event.code;
  // Alert the key name and key code on keydown
  alert(`Key pressed ${name} \r\n Key code value: ${code}`);
}, false);
1

The JavaScript code above listens for the key events and calls either

  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
5 or
  <p>Use the arrow keys to control the square object.</p>
  <svg width="500px" height="500px" class="area">
    <rect id="object1" x="10" y="10" width="20" height="20" fill="black" />
  </svg>
  <script>refreshPosition();</script>
4 function.

The complete source code for the above demo is available on Github.

Output

Conclusion

JavaScript keyboard events are used in several ways. This article has demonstrated how we can use JavaScript keyboard events in gaming.

How do you define an event type?

An event type is a data structure that defines the data contained in an event. When raw event data comes into the Oracle Event Processing application, the application binds that data to an event of a particular event type.

What is type of event in typescript?

Events supported are: AnimationEvent , ChangeEvent , ClipboardEvent , CompositionEvent , DragEvent , FocusEvent , FormEvent , KeyboardEvent , MouseEvent , PointerEvent , TouchEvent , TransitionEvent , WheelEvent . As well as SyntheticEvent , for all other events.

Is event a keyword in JavaScript?

But this does demonstrate that event isn't a reserved word. It's a variable. So where you can't say break = "spam"; , you can say event = "spam"; . So if you try to use break , which is reserved, it borks.

What are the types of event listeners in JavaScript?

DOM event types.
mouse events ( MouseEvent ): mousedown, mouseup, click, dblclick, mousemove, mouseover, mousewheel, mouseout, contextmenu..
touch events ( TouchEvent ): touchstart, touchmove, touchend, touchcancel..
keyboard events ( KeyboardEvent ): keydown, keypress, keyup..
form events: focus, blur, change, submit..