diff --git a/src/behaviours/joystick-dpad4.js b/src/behaviours/joystick-dpad4.js
index d0cc1e2a87d1882346deb724d5ba14570d46b02c..0eae7e1d194dfb6f207da53a7499caaf8e483c02 100644
--- a/src/behaviours/joystick-dpad4.js
+++ b/src/behaviours/joystick-dpad4.js
@@ -8,10 +8,16 @@ function joystick_dpad4(el, outputPrefix) {
   this.previous = "none";
   this.hapticIntensity = "low";
   this.emitDPad4 = this.emitDPad4.bind(this);
-  el.addEventListener("axismove", this.emitDPad4);
+  this.el = el;
 }
 
 joystick_dpad4.prototype = {
+  addEventListeners: function() {
+    this.el.addEventListener("axismove", this.emitDPad4);
+  },
+  removeEventListeners: function() {
+    this.el.removeEventListener("axismove", this.emitDPad4);
+  },
   emitDPad4: function(event) {
     const x = event.detail.axis[0];
     const y = event.detail.axis[1];
diff --git a/src/behaviours/trackpad-dpad4.js b/src/behaviours/trackpad-dpad4.js
index b23ca1dbdb1f61ec6d99e9d2fab17ab4c96b0248..f15908d34d5854d60ae158af7026007745293dfb 100644
--- a/src/behaviours/trackpad-dpad4.js
+++ b/src/behaviours/trackpad-dpad4.js
@@ -10,12 +10,20 @@ function trackpad_dpad4(el, outputPrefix) {
   this.unpress = this.unpress.bind(this);
   this.hapticIntensity = "low";
   this.centerRadius = 0.6;
-  el.addEventListener("axismove", this.emitDPad4);
-  el.addEventListener("trackpaddown", this.press);
-  el.addEventListener("trackpadup", this.unpress);
+  this.el = el;
 }
 
 trackpad_dpad4.prototype = {
+  addEventListeners: function() {
+    this.el.addEventListener("axismove", this.emitDPad4);
+    this.el.addEventListener("trackpaddown", this.press);
+    this.el.addEventListener("trackpadup", this.unpress);
+  },
+  removeEventListeners: function() {
+    this.el.removeEventListener("axismove", this.emitDPad4);
+    this.el.removeEventListener("trackpaddown", this.press);
+    this.el.removeEventListener("trackpadup", this.unpress);
+  },
   press: function() {
     this.pressed = true;
   },