diff --git a/addons/hw_drivers/drivers/KeyboardUSBDriver.py b/addons/hw_drivers/drivers/KeyboardUSBDriver.py
index 39cd8e102608bb3fc03689df843bb88e3758e103..31835539f07cec2755c3f39e1b9a22b92ec9974d 100644
--- a/addons/hw_drivers/drivers/KeyboardUSBDriver.py
+++ b/addons/hw_drivers/drivers/KeyboardUSBDriver.py
@@ -51,7 +51,7 @@ class KeyboardUSBDriver(Driver):
             if (self.dev.idVendor == device.info.vendor) and (self.dev.idProduct == device.info.product):
                 self.input_device = device
 
-        if 'barcode' in self._device_name.lower() or 'scanner' in self._device_name.lower():
+        if 'barcode' in self._device_name.lower() or 'scanner' in self._device_name.lower() or self.interface_protocol == '0':
             self._device_type = 'scanner'
             self._barcodes = Queue()
             self._current_barcode = ''
@@ -62,7 +62,8 @@ class KeyboardUSBDriver(Driver):
     def supported(cls, device):
         for cfg in device:
             for itf in cfg:
-                if itf.bInterfaceClass == 3 and itf.bInterfaceProtocol == 1:
+                if itf.bInterfaceClass == 3 and itf.bInterfaceProtocol != 2:
+                    device.interface_protocol = itf.bInterfaceProtocol
                     return True
         return False