{"id":81416,"date":"2022-09-26T23:27:04","date_gmt":"2022-09-26T21:27:04","guid":{"rendered":"https:\/\/rmarketingdigital.com\/development\/conexion-a-dispositivos-hid-poco-comunes\/"},"modified":"2021-07-06T10:14:39","modified_gmt":"2021-07-06T08:14:39","slug":"conexion-a-dispositivos-hid-poco-comunes","status":"publish","type":"post","link":"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/","title":{"rendered":"Verbindung zu seltenen HID-Ger\u00e4ten"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Casos-de-uso-sugeridos\" >Casos de uso sugeridos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Estado-actual\" >Estado actual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Terminologia\" >Terminolog\u00eda<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Utilizando-la-API-de-WebHID\" >Utilizando la API de WebHID<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Habilitacion-a-traves-de-chrome-flags\" >Habilitaci\u00f3n a trav\u00e9s de chrome: \/\/ flags<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Habilitar-el-apoyo-durante-la-etapa-de-prueba-de-origen\" >Habilitar el apoyo durante la etapa de prueba de origen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Registrese-para-la-prueba-de-origen\" >Reg\u00edstrese para la prueba de origen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Deteccion-de-caracteristicas\" >Detecci\u00f3n de caracter\u00edsticas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Abra-una-conexion-HID\" >Abra una conexi\u00f3n HID<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Recibir-informes-de-entrada\" >Recibir informes de entrada<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Enviar-informes-de-salida\" >Enviar informes de salida<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Enviar-y-recibir-informes-de-funciones\" >Enviar y recibir informes de funciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Escuche-la-conexion-y-la-desconexion\" >Escuche la conexi\u00f3n y la desconexi\u00f3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Consejos-para-desarrolladores\" >Consejos para desarrolladores<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Poblacion\" >Poblaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Seguridad-y-privacidad\" >Seguridad y privacidad<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Realimentacion\" >Realimentaci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Cuentanos-sobre-el-diseno-de-la-API\" >Cu\u00e9ntanos sobre el dise\u00f1o de la API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Informar-un-obstaculo-con-la-implementacion\" >Informar un obst\u00e1culo con la implementaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Mostrar-apoyo\" >Mostrar apoyo<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Links-Utiles\" >Links \u00datiles<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#Agradecimientos\" >Agradecimientos<\/a><\/li><\/ul><\/nav><\/div>\n<p><\/p>\n<div>\n<header class=\"w-article-header\">\n<p class=\"w-article-header__subhead w-mb--non\">\n<p>          La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos.<\/p>\n<p>\n          <time>15 de septiembre de 2020<\/time><\/p>\n<\/header>\n<div class=\"w-aside w-aside--note\">\n<p>La API de WebHID es parte del proyecto Capabilities y en este momento est\u00e1 en desarrollo.  Esta publicaci\u00f3n se actualizar\u00e1 a medida que avance la implementaci\u00f3n.<\/p>\n<\/div>\n<p>Existe una larga lista de dispositivos de interfaz humana (HID), como teclados alternativos o gamepads ex\u00f3ticos, que son demasiado nuevos, demasiado antiguos o poco comunes para que los controladores de dispositivos de los sistemas puedan ingresar a ellos.  La API WebHID resuelve esto proporcionando una forma de poner en pr\u00e1ctica la l\u00f3gica espec\u00edfica del dispositivo en JavaScript.<\/p>\n<h2 id=\"use-cases\"><span class=\"ez-toc-section\" id=\"Casos-de-uso-sugeridos\"><\/span>Casos de uso sugeridos <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Un dispositivo HID toma la entrada de los seres humanos o les proporciona una salida.  Ejemplos de dispositivos incluyen teclados, dispositivos se\u00f1aladores (mouse, pantallas t\u00e1ctiles, etc.) y gamepads.  los <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.usb.org\/hid\">Protocolo HID<\/a> hace viable ingresar a estos dispositivos en computadoras de escritorio usando controladores del sistema operativo.  La plataforma web es compatible con dispositivos HID bas\u00e1ndose en estos controladores.<\/p>\n<p>La imposibilidad de ingresar a dispositivos HID poco comunes es concretamente dolorosa cuando consiste en teclados auxiliares alternativos (p. Ej. <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.elgato.com\/en\/gaming\/stream-deck\">Cubierta de Elgato Stream<\/a>, <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.jabra.com\/business\/office-headsets\">Auriculares Jabra<\/a>, <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/xkeys.com\/xkeys.html\">X-llaves<\/a>) y soporte ex\u00f3tico para gamepad.  Los gamepads dise\u00f1ados para el escritorio a menudo utilizan HID para las entradas del gamepad (botones, joysticks, disparadores) y salidas (LED, rumble).  Desafortunadamente, las entradas y salidas del gamepad no est\u00e1n bien estandarizadas y los navegadores web a menudo requieren una l\u00f3gica personalizada para dispositivos espec\u00edficos.  Esto es insostenible y da como consecuencia un soporte deficiente para la larga cola de dispositivos m\u00e1s antiguos y poco comunes.  Adem\u00e1s hace que el navegador dependa de peculiaridades en el comportamiento de dispositivos espec\u00edficos.<\/p>\n<h2 id=\"status\"><span class=\"ez-toc-section\" id=\"Estado-actual\"><\/span>Estado actual <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2 id=\"terminology\"><span class=\"ez-toc-section\" id=\"Terminologia\"><\/span>Terminolog\u00eda <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>HID consta de dos conceptos fundamentales: informes y descriptores de informes.  Los informes son los datos que se intercambian entre un dispositivo y un cliente de software.  El descriptor de reporte describe el formato y el significado de los datos que admite el dispositivo.<\/p>\n<p>Un HID (Dispositivo de interfaz humana) es un tipo de dispositivo que recibe entradas de personas o proporciona salidas a ellas.  Adem\u00e1s se refiere al protocolo HID, un est\u00e1ndar para la comunicaci\u00f3n bidireccional entre un host y un dispositivo que est\u00e1 dise\u00f1ado para simplificar el proceso de instalaci\u00f3n.  El protocolo HID se desarroll\u00f3 originalmente para dispositivos USB, pero desde entonces se ha implementado en muchos otros protocolos, incluido Bluetooth.<\/p>\n<p>Las aplicaciones y los dispositivos HID intercambian datos binarios a trav\u00e9s de tres tipos de informes:<\/p>\n<div class=\"w-table-wrapper\">\n<table>\n<thead>\n<tr>\n<th>Tipo de reporte<\/th>\n<th>Descripci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Reporte de entrada<\/td>\n<td>Datos que se env\u00edan desde el dispositivo a la aplicaci\u00f3n (a modo de ejemplo, se presiona un bot\u00f3n).<\/td>\n<\/tr>\n<tr>\n<td>Reporte de salida<\/td>\n<td>Datos que se env\u00edan desde la aplicaci\u00f3n al dispositivo (a modo de ejemplo, una solicitud para encender la luz de fondo del teclado).<\/td>\n<\/tr>\n<tr>\n<td>Reporte de funciones<\/td>\n<td>Datos que pueden enviarse en cualquier direcci\u00f3n.  El formato es espec\u00edfico del dispositivo.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Un descriptor de reporte describe el formato binario de los informes admitidos por el dispositivo.  Su estructura es jer\u00e1rquica y puede agrupar informes como colecciones distintas dentro de la colecci\u00f3n de nivel superior.  los <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/gist.github.com\/beaufortfrancois\/583424dfef66be1ade86231fd1a260c7\">formato<\/a> del descriptor est\u00e1 definido por la especificaci\u00f3n HID.<\/p>\n<p>Un uso de HID es un valor num\u00e9rico que se refiere a una entrada o salida estandarizada.  Los valores de uso posibilitan que un dispositivo describa el uso previsto del dispositivo y el prop\u00f3sito de cada campo en sus informes.  A modo de ejemplo, se establece uno para el bot\u00f3n izquierdo de un mouse.  Los usos adem\u00e1s se organizan en p\u00e1ginas de uso, que proporcionan una indicaci\u00f3n de la categor\u00eda de alto nivel del dispositivo o reporte.<\/p>\n<h2 id=\"use\"><span class=\"ez-toc-section\" id=\"Utilizando-la-API-de-WebHID\"><\/span>Utilizando la API de WebHID <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 id=\"enabling-via-chrome:flags\"><span class=\"ez-toc-section\" id=\"Habilitacion-a-traves-de-chrome-flags\"><\/span>Habilitaci\u00f3n a trav\u00e9s de chrome: \/\/ flags <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para experimentar con la API de WebHID localmente en todas las plataformas de escritorio, sin un token de prueba de origen, habilite el <code>#experimental-web-platform-features<\/code> bandera en<br \/>\n<code>chrome:\/\/flags<\/code>.<\/p>\n<h3 id=\"enabling-support-during-the-origin-trial-phase\"><span class=\"ez-toc-section\" id=\"Habilitar-el-apoyo-durante-la-etapa-de-prueba-de-origen\"><\/span>Habilitar el apoyo durante la etapa de prueba de origen <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La API de WebHID se encuentra disponible en todas las plataformas de escritorio (Chrome OS, Linux, macOS y Windows) como una prueba de origen en Chrome 86. Se espera que la prueba de origen finalice justo antes de que Chrome 89 se establezca en febrero de 2021. La API adem\u00e1s puede habilitarse a trav\u00e9s de una bandera.<\/p>\n<p>Las pruebas de Origin le posibilitan probar nuevas funciones y otorgar comentarios sobre su usabilidad, practicidad y efectividad a la comunidad de est\u00e1ndares web.  Para conseguir m\u00e1s informaci\u00f3n, consulte el <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/GoogleChrome\/OriginTrials\/blob\/gh-pages\/developer-guide.md\">Gu\u00eda de pruebas de Origin para desarrolladores web<\/a>.  Para inscribirse en esta u otra prueba de origen, visite el <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developers.chrome.com\/origintrials\/#\/trials\/active\">p\u00e1gina de registro<\/a>.<\/p>\n<h3 id=\"ot\"><span class=\"ez-toc-section\" id=\"Registrese-para-la-prueba-de-origen\"><\/span>Reg\u00edstrese para la prueba de origen <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developers.chrome.com\/origintrials\/#\/view_trial\/1074108511127863297\">Solicita un token<\/a> por tu origen.<\/li>\n<li>Agrega el token a tus p\u00e1ginas.  Hay dos maneras de hacerlo:\n<ul>\n<li>Agregar un <code>origin-trial<\/code> <code>&lt;meta&gt;<\/code>  etiqueta al encabezado de cada p\u00e1gina.  A modo de ejemplo, esto puede verse as\u00ed: <br \/><code>&lt;meta http-equiv=\"origin-trial\" content=\"TOKEN_GOES_HERE\"&gt;<\/code><\/li>\n<li>Si puede configurar su servidor, adem\u00e1s puede agregar el token utilizando un <code>Origin-Trial<\/code> Encabezado HTTP.  El encabezado de respuesta resultante deber\u00eda verse as\u00ed:<br \/><code>Origin-Trial: TOKEN_GOES_HERE<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 id=\"feature-detection\"><span class=\"ez-toc-section\" id=\"Deteccion-de-caracteristicas\"><\/span>Detecci\u00f3n de caracter\u00edsticas <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para chequear si la API de WebHID es compatible, utilice:<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">\"hid\"<\/span> <span class=\"token keyword\">in<\/span> navigator<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"open\"><span class=\"ez-toc-section\" id=\"Abra-una-conexion-HID\"><\/span>Abra una conexi\u00f3n HID <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La API de WebHID es asincr\u00f3nica por dise\u00f1o para evitar que la interfaz de usuario del portal web se bloquee cuando se espera una entrada.  Esto es esencial debido a que los datos HID se pueden recibir en cualquier momento, lo que necesita una forma de escucharlos.<\/p>\n<p>Para abrir una conexi\u00f3n HID, primero acceda a un <code>HIDDevice<\/code> objeto.  Para esto, puede solicitar al usuario que seleccione un dispositivo llamando<br \/>\n<code>navigator.hid.requestDevice()<\/code>o elige uno de <code>navigator.hid.getDevices()<\/code><br \/>\nque devuelve una lista de dispositivos a los que el portal web tuvo acceso previamente.<\/p>\n<p>los <code>navigator.hid.requestDevice()<\/code> La funci\u00f3n toma un objeto obligatorio que establece filtros.  Se usan para hacer coincidir cualquier dispositivo conectado con un identificador de proveedor USB (<code>vendorId<\/code>), un identificador de producto USB (<code>productId<\/code>), un valor de p\u00e1gina de uso (<code>usagePage<\/code>) y un valor de uso (<code>usage<\/code>).  Puedes conseguirlos de el repositorio de ID USB y el <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/usb.org\/document-library\/hid-usage-tables-12\">Documento de tablas de uso de HID<\/a>.<\/p>\n<p>El m\u00faltiple <code>HIDDevice<\/code> Los objetos devueltos por esta funci\u00f3n representan diversos interfaces HID en el mismo dispositivo f\u00edsico.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><br><span class=\"token keyword\">const<\/span> filters <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><br><span class=\"token punctuation\">{<\/span><br>vendorId<span class=\"token operator\">:<\/span> <span class=\"token number\">0x057e<\/span><span class=\"token punctuation\">,<\/span> <br>productId<span class=\"token operator\">:<\/span> <span class=\"token number\">0x2006<\/span> <br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br><span class=\"token punctuation\">{<\/span><br>vendorId<span class=\"token operator\">:<\/span> <span class=\"token number\">0x057e<\/span><span class=\"token punctuation\">,<\/span> <br>productId<span class=\"token operator\">:<\/span> <span class=\"token number\">0x2007<\/span> <br><span class=\"token punctuation\">}<\/span><br><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><p><br><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>device<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> navigator<span class=\"token punctuation\">.<\/span>hid<span class=\"token punctuation\">.<\/span><span class=\"token function\">requestDevice<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> filters <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><br><span class=\"token keyword\">const<\/span> devices <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> navigator<span class=\"token punctuation\">.<\/span>hid<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDevices<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<figure class=\"w-figure\">\n  <img alt='webhid-prompt-3406008' src='https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/webhid-prompt-3406008.jpg' class=\"w-screenshot\" alt=\"Captura de pantalla de un mensaje de dispositivo HID en un sitio web.\"><figcaption class=\"w-figcaption\">Mensaje de usuario para elegir un Joy-Con de Nintendo Switch.<br \/>\n<\/figcaption><\/figure>\n<p>UNA <code>HIDDevice<\/code> El objeto contiene identificadores de productos y proveedores de USB para la identificaci\u00f3n del dispositivo.  Sus <code>collections<\/code> El atributo se inicializa con una descripci\u00f3n jer\u00e1rquica de los formatos de reporte del dispositivo.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">let<\/span> collection <span class=\"token keyword\">of<\/span> device<span class=\"token punctuation\">.<\/span>collections<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Usage: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>collection<span class=\"token punctuation\">.<\/span>usage<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Usage page: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>collection<span class=\"token punctuation\">.<\/span>usagePage<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><p><span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">let<\/span> inputReport <span class=\"token keyword\">of<\/span> collection<span class=\"token punctuation\">.<\/span>inputReports<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Input report: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>inputReport<span class=\"token punctuation\">.<\/span>reportId<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/p><p><span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">let<\/span> outputReport <span class=\"token keyword\">of<\/span> collection<span class=\"token punctuation\">.<\/span>outputReports<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Output report: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>outputReport<span class=\"token punctuation\">.<\/span>reportId<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/p><p><span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">let<\/span> featureReport <span class=\"token keyword\">of<\/span> collection<span class=\"token punctuation\">.<\/span>featureReports<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Feature report: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>featureReport<span class=\"token punctuation\">.<\/span>reportId<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/p><p><br><span class=\"token punctuation\">}<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>los <code>HIDDevice<\/code> los dispositivos se devuelven de manera predeterminada en un estado \u00abcerrado\u00bb y deben abrirse llamando <code>open()<\/code> antes de que se puedan enviar o recibir datos.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"receive-input-reports\"><span class=\"ez-toc-section\" id=\"Recibir-informes-de-entrada\"><\/span>Recibir informes de entrada <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Una vez que se ha establecido la conexi\u00f3n HID, puede manejar los informes de entrada entrantes escuchando <code>\"inputreport\"<\/code> eventos del dispositivo.  Esos eventos contienen los datos HID como <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/DataView\"><code>DataView<\/code><\/a>  objeto<code>data<\/code>), el dispositivo HID al que pertenece (<code>device<\/code>) y el ID de reporte de 8 bits asociado con el reporte de entrada (<code>reportId<\/code>).<\/p>\n<figure class=\"w-figure\">\n  <img alt='joycon-switch-photo-9523996' src='https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/joycon-switch-photo-9523996.jpg' class=\"w-screenshot\" alt=\"Foto de interruptor de nintendo rojo y azul.\"><figcaption class=\"w-figcaption\">Dispositivos Nintendo Switch Joy-Con.<\/figcaption><\/figure>\n<p>Continuando con el ejemplo anterior, el siguiente c\u00f3digo le muestra c\u00f3mo detectar qu\u00e9 bot\u00f3n ha presionado el usuario en un dispositivo Joy-Con Right para que, con suerte, pueda probarlo en casa.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\">device<span class=\"token punctuation\">.<\/span><span class=\"token function\">addEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"inputreport\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token parameter\">event<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> data<span class=\"token punctuation\">,<\/span> device<span class=\"token punctuation\">,<\/span> reportId <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> event<span class=\"token punctuation\">;<\/span><p><br><span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">.<\/span>productId <span class=\"token operator\">!==<\/span> <span class=\"token number\">0x2007<\/span> <span class=\"token operator\">&amp;&amp;<\/span> reportId <span class=\"token operator\">!==<\/span> <span class=\"token number\">0x3f<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p><p><span class=\"token keyword\">const<\/span> value <span class=\"token operator\">=<\/span> data<span class=\"token punctuation\">.<\/span><span class=\"token function\">getUint8<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>value <span class=\"token operator\">===<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p><p><span class=\"token keyword\">const<\/span> someButtons <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token number\">1<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"A\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"X\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"B\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Y\"<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br>console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">User pressed button <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>someButtons<span class=\"token punctuation\">[<\/span>value<span class=\"token punctuation\">]<\/span><span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">.<\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>\n  <iframe allow=\"camera; clipboard; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi; vr; hid\" loading=\"lazy\" src=\"https:\/\/glitch.com\/embed\/#!\/embed\/webhid-joycon-button?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=script.js&amp;previewSize=100\" style=\"height: 100%; width: 100%; border: 0;\" title=\"webhid-joycon-button on Glitch\"><\/iframe>\n<\/p>\n<h3 id=\"send-output-reports\"><span class=\"ez-toc-section\" id=\"Enviar-informes-de-salida\"><\/span>Enviar informes de salida <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para enviar un reporte de salida a un dispositivo HID, pase el ID de reporte de 8 bits asociado con el reporte de salida (<code>reportId<\/code>) y bytes como <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/BufferSource\"><code>BufferSource<\/code><\/a>  (<code>data<\/code>) a<br \/>\n<code>device.sendReport()<\/code>.  La promesa devuelta se resuelve una vez que se ha enviado el reporte.  Si el dispositivo HID no usa ID de reporte, configure <code>reportId<\/code> a 0.<\/p>\n<p>El siguiente ejemplo se aplica a un dispositivo Joy-Con y le muestra c\u00f3mo hacerlo vibrar con los informes de salida.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><br><span class=\"token keyword\">const<\/span> enableVibrationData <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">64<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0x48<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0x01<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">sendReport<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x01<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Uint8Array<\/span><span class=\"token punctuation\">(<\/span>enableVibrationData<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><p><br><span class=\"token keyword\">const<\/span> rumbleData <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>  <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">sendReport<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Uint8Array<\/span><span class=\"token punctuation\">(<\/span>rumbleData<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>\n  <iframe allow=\"camera; clipboard; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi; vr; hid\" loading=\"lazy\" src=\"https:\/\/glitch.com\/embed\/#!\/embed\/webhid-joycon-rumble?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=script.js&amp;previewSize=100\" style=\"height: 100%; width: 100%; border: 0;\" title=\"webhid-joycon-rumble on Glitch\"><\/iframe>\n<\/p>\n<h3 id=\"feature-reports\"><span class=\"ez-toc-section\" id=\"Enviar-y-recibir-informes-de-funciones\"><\/span>Enviar y recibir informes de funciones <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Los informes de caracter\u00edsticas son el \u00fanico tipo de informes de datos HID que pueden viajar en ambas direcciones.  Posibilitan que los dispositivos y aplicaciones HID intercambien datos HID no estandarizados.  A diferencia de los informes de entrada y salida, la aplicaci\u00f3n no recibe ni env\u00eda informes de caracter\u00edsticas de forma regular.<\/p>\n<figure class=\"w-figure\">\n  <img alt='laptop-keyboard-photo-9051924' src='https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/laptop-keyboard-photo-9051924.jpg' class=\"w-screenshot\" alt=\"Foto de computadora port\u00e1til negra y plateada.\"><figcaption class=\"w-figcaption\">Teclado port\u00e1til<\/figcaption><\/figure>\n<p>Para enviar un reporte de funciones a un dispositivo HID, pase el ID de reporte de 8 bits asociado con el reporte de funciones (<code>reportId<\/code>) y bytes como <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/BufferSource\"><code>BufferSource<\/code><\/a>  (<code>data<\/code>) a<br \/>\n<code>device.sendFeatureReport()<\/code>.  La promesa devuelta se resuelve una vez que se ha enviado el reporte.  Si el dispositivo HID no usa ID de reporte, configure <code>reportId<\/code> a 0.<\/p>\n<p>El siguiente ejemplo ilustra el uso de informes de funciones mostr\u00e1ndole c\u00f3mo solicitar un dispositivo de retroiluminaci\u00f3n de teclado de Apple, abrirlo y hacer que parpadee.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">waitFor<\/span> <span class=\"token operator\">=<\/span> <span class=\"token parameter\">duration<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Promise<\/span><span class=\"token punctuation\">(<\/span><span class=\"token parameter\">r<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setTimeout<\/span><span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">,<\/span> duration<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><p><br><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>device<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> navigator<span class=\"token punctuation\">.<\/span>hid<span class=\"token punctuation\">.<\/span><span class=\"token function\">requestDevice<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br>filters<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span> vendorId<span class=\"token operator\">:<\/span> <span class=\"token number\">0x05ac<\/span><span class=\"token punctuation\">,<\/span> usage<span class=\"token operator\">:<\/span> <span class=\"token number\">0x0f<\/span><span class=\"token punctuation\">,<\/span> usagePage<span class=\"token operator\">:<\/span> <span class=\"token number\">0xff00<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><p><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><p><br><span class=\"token keyword\">const<\/span> reportId <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">let<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">sendFeatureReport<\/span><span class=\"token punctuation\">(<\/span>reportId<span class=\"token punctuation\">,<\/span> Uint32Array<span class=\"token punctuation\">.<\/span><span class=\"token function\">from<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">await<\/span> <span class=\"token function\">waitFor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">sendFeatureReport<\/span><span class=\"token punctuation\">(<\/span>reportId<span class=\"token punctuation\">,<\/span> Uint32Array<span class=\"token punctuation\">.<\/span><span class=\"token function\">from<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">512<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">await<\/span> <span class=\"token function\">waitFor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>\n  <iframe allow=\"camera; clipboard; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi; vr; hid\" loading=\"lazy\" src=\"https:\/\/glitch.com\/embed\/#!\/embed\/webhid-apple-keyboard-backlight?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=script.js&amp;previewSize=100\" style=\"height: 100%; width: 100%; border: 0;\" title=\"webhid-apple-keyboard-backlight on Glitch\"><\/iframe>\n<\/p>\n<p>Para recibir un reporte de funciones de un dispositivo HID, pase el ID de reporte de 8 bits asociado con el reporte de funciones (<code>reportId<\/code>) a<br \/>\n<code>device.receiveFeatureReport()<\/code>.  La promesa devuelta se resuelve con un<br \/>\n<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/DataView\"><code>DataView<\/code><\/a>  objeto que contiene el contenido del reporte de caracter\u00edsticas.  Si el dispositivo HID no usa ID de reporte, configure <code>reportId<\/code> a 0.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><br><span class=\"token keyword\">const<\/span> dataView <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> device<span class=\"token punctuation\">.<\/span><span class=\"token function\">receiveFeatureReport<\/span><span class=\"token punctuation\">(<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"connection-disconnection\"><span class=\"ez-toc-section\" id=\"Escuche-la-conexion-y-la-desconexion\"><\/span>Escuche la conexi\u00f3n y la desconexi\u00f3n <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Cuando el portal web tiene permiso para ingresar a un dispositivo HID, puede recibir activamente eventos de conexi\u00f3n y desconexi\u00f3n escuchando <code>\"connect\"<\/code><br \/>\ny <code>\"disconnect\"<\/code> eventos.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\">navigator<span class=\"token punctuation\">.<\/span>hid<span class=\"token punctuation\">.<\/span><span class=\"token function\">addEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"connect\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token parameter\">event<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><p>navigator<span class=\"token punctuation\">.<\/span>hid<span class=\"token punctuation\">.<\/span><span class=\"token function\">addEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"disconnect\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token parameter\">event<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h2 id=\"dev-tips\"><span class=\"ez-toc-section\" id=\"Consejos-para-desarrolladores\"><\/span>Consejos para desarrolladores <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Depurar HID en Chrome es f\u00e1cil con la p\u00e1gina interna, <code>chrome:\/\/device-log<\/code><br \/>\ndonde puede ver todos los eventos relacionados con dispositivos USB y HID en un \u00fanico lugar.<\/p>\n<figure class=\"w-figure\">\n  <img alt='device-log-page-screenshot-4716868' src='https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/device-log-page-screenshot-4716868.jpg' class=\"w-screenshot\" alt=\"Captura de pantalla de la p\u00e1gina interna para depurar HID.\"><figcaption class=\"w-figcaption\">P\u00e1gina interna en Chrome para depurar HID.<\/figcaption><\/figure>\n<h2 id=\"demos\"><span class=\"ez-toc-section\" id=\"Poblacion\"><\/span>Poblaci\u00f3n <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Algunas demostraciones de WebHID se enumeran en web.dev\/hid-examples.  \u00a1Ve a echar un vistazo!<\/p>\n<h2 id=\"security-privacy\"><span class=\"ez-toc-section\" id=\"Seguridad-y-privacidad\"><\/span>Seguridad y privacidad <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Los autores de especificaciones han dise\u00f1ado e implementado la API de WebHID usando los principios b\u00e1sicos definidos en <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/chromium.googlesource.com\/chromium\/src\/+\/lkgr\/docs\/security\/permissions-for-powerful-web-platform-features.md\">Controlar el acceso a las potentes funciones de la plataforma web<\/a>, incluido el control del usuario, la transparencia y la ergonom\u00eda.  La capacidad de utilizar esta API est\u00e1 principalmente controlada por un modelo de permisos que otorga acceso a un solo dispositivo HID a la vez.  En respuesta a un mensaje de usuario, el usuario debe tomar medidas activas para elegir un dispositivo HID en particular.<\/p>\n<p>Para saber las compensaciones de seguridad, consulte la <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/wicg.github.io\/webhid\/#security-and-privacy\">Consideraciones de seguridad y privacidad<\/a> secci\u00f3n de la especificaci\u00f3n WebHID.<\/p>\n<p>A parte de esto, Chrome inspecciona el uso de cada colecci\u00f3n de nivel superior y si una colecci\u00f3n de nivel superior tiene un uso protegido (.eg teclado gen\u00e9rico, mouse), entonces un portal web no podr\u00e1 enviar ni recibir ning\u00fan reporte definido. en esa colecci\u00f3n.  El listado completa de usos protegidos es <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/source.chromium.org\/chromium\/chromium\/src\/+\/master:services\/device\/public\/cpp\/hid\/hid_usage_and_page.cc\">disponible p\u00fablicamente<\/a>.<\/p>\n<p>Tenga en cuenta que los dispositivos HID sensibles a la seguridad (como los dispositivos FIDO HID utilizados para una autenticaci\u00f3n m\u00e1s s\u00f3lida) adem\u00e1s est\u00e1n bloqueados en Chrome.  Ver el <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/source.chromium.org\/chromium\/chromium\/src\/+\/master:chrome\/browser\/usb\/usb_blocklist.cc\">lista de bloqueos<\/a> expediente.<\/p>\n<h2 id=\"feedback\"><span class=\"ez-toc-section\" id=\"Realimentacion\"><\/span>Realimentaci\u00f3n <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Al equipo de Chrome le encantar\u00eda conocer sus pensamientos y experiencias con la API de WebHID.<\/p>\n<h3 id=\"tell-us-about-the-api-design\"><span class=\"ez-toc-section\" id=\"Cuentanos-sobre-el-diseno-de-la-API\"><\/span>Cu\u00e9ntanos sobre el dise\u00f1o de la API <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00bfPuede haber algo en la API que no funcione como se esperaba?  \u00bfO faltan m\u00e9todos o propiedades que requiere para poner en pr\u00e1ctica su idea?<\/p>\n<p>Presentar un obst\u00e1culo de especificaciones en el <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/wicg\/webhid\/issues\">Repositorio de GitHub de API de WebHID<\/a> o agregue sus pensamientos a un obst\u00e1culo existente.<\/p>\n<h3 id=\"report-a-problem-with-the-implementation\"><span class=\"ez-toc-section\" id=\"Informar-un-obstaculo-con-la-implementacion\"><\/span>Informar un obst\u00e1culo con la implementaci\u00f3n <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00bfEncontraste un error con la implementaci\u00f3n de Chrome?  \u00bfO la implementaci\u00f3n es distinto de la especificaci\u00f3n?<\/p>\n<p>Presentar un error en <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/bugs.chromium.org\/p\/chromium\/issues\/entry?components=Blink%3EHID\">https:\/\/new.crbug.com<\/a>.  Aseg\u00farese de incluir todos los detalles que pueda, proporcione instrucciones sencillas para reproducir el error y<br \/>\n<em>Componentes<\/em> ajustado a <code>Blink&gt;HID<\/code>. <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/glitch.com\">Falla<\/a> funciona muy bien para compartir repros r\u00e1pidos y f\u00e1ciles.<\/p>\n<h3 id=\"show-support\"><span class=\"ez-toc-section\" id=\"Mostrar-apoyo\"><\/span>Mostrar apoyo <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00bfEst\u00e1 pensando en usar la API de WebHID?  Su apoyo p\u00fablico ayuda al equipo de Chrome a priorizar funciones y muestra a otros proveedores de navegadores lo importante que es brindarles soporte.<\/p>\n<p>Enviar un tweet a <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/twitter.com\/chromiumdev\">@Cromodev<\/a> con <code>#WebHID<\/code> y h\u00e1ganos saber d\u00f3nde y c\u00f3mo lo est\u00e1 utilizando.<\/p>\n<h2 id=\"helpful\"><span class=\"ez-toc-section\" id=\"Links-Utiles\"><\/span>Links \u00datiles <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2 id=\"acknowledgements\"><span class=\"ez-toc-section\" id=\"Agradecimientos\"><\/span>Agradecimientos <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Gracias a <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/nondebug\">Matt Reynolds<\/a> y <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/jpmedley\">Joe Medley<\/a> por sus rese\u00f1as de este post.  Imagen de h\u00e9roe de <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/unsplash.com\/photos\/kV0QU_Y7AZg\">Valentin M\u00fcller<\/a>, rojo y azul nintendo switch foto de <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/unsplash.com\/photos\/jqpRECmiNEU\">Sara Kurfe\u00df<\/a>, y una foto de computadora port\u00e1til negra y plateada de <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/unsplash.com\/photos\/ndokCrfQWrI\">Athul Cyriac Ajay<\/a> en Unsplash.<\/p>\n<p><!-- lint disable definition-case --><br \/>\n<!-- lint enable definition-case --><\/p>\n<p>    <web-feedback additional-questions=\"api\"><\/web-feedback>\n  <\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die WebHID-API erm\u00f6glicht Websites den Zugriff auf alternative Hilfstastaturen und exotische Gamepads. 15. September 2020 Die WebHID API ist Teil des Projekts\u2026<\/p>","protected":false},"author":1,"featured_media":81378,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1356],"tags":[],"class_list":["post-81416","post","type-post","status-publish","format-standard","has-post-thumbnail","category-dev"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Conexi\u00f3n a dispositivos HID poco comunes - R Marketing Digital<\/title>\n<meta name=\"description\" content=\"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conexi\u00f3n a dispositivos HID poco comunes\" \/>\n<meta property=\"og:description\" content=\"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/\" \/>\n<meta property=\"og:site_name\" content=\"R Marketing Digital\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-26T21:27:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"376\" \/>\n\t<meta property=\"og:image:height\" content=\"240\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"R Marketing Digital\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/\"},\"author\":{\"name\":\"R Marketing Digital\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"headline\":\"Conexi\u00f3n a dispositivos HID poco comunes\",\"datePublished\":\"2022-09-26T21:27:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/\"},\"wordCount\":2041,\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/thumbnail-2834392.jpg\",\"articleSection\":[\"Dev\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/\",\"name\":\"Conexi\u00f3n a dispositivos HID poco comunes - R Marketing Digital\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/thumbnail-2834392.jpg\",\"datePublished\":\"2022-09-26T21:27:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"description\":\"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/conexion-a-dispositivos-hid-poco-comunes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/thumbnail-2834392.jpg\",\"contentUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/thumbnail-2834392.jpg\",\"width\":376,\"height\":240,\"caption\":\"thumbnail-2834392-1909390-jpg\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/\",\"name\":\"R Marketing Digital\",\"description\":\"Agencia SEO | Publicidad redes sociales | Community Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rmarketingdigital.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\",\"name\":\"R Marketing Digital\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"caption\":\"R Marketing Digital\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Conexi\u00f3n a dispositivos HID poco comunes - R Marketing Digital","description":"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/","og_locale":"de_DE","og_type":"article","og_title":"Conexi\u00f3n a dispositivos HID poco comunes","og_description":"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID","og_url":"https:\/\/rmarketingdigital.com\/de\/dev\/conexion-a-dispositivos-hid-poco-comunes\/","og_site_name":"R Marketing Digital","article_published_time":"2022-09-26T21:27:04+00:00","og_image":[{"width":376,"height":240,"url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg","type":"image\/jpeg"}],"author":"R Marketing Digital","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#article","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/"},"author":{"name":"R Marketing Digital","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"headline":"Conexi\u00f3n a dispositivos HID poco comunes","datePublished":"2022-09-26T21:27:04+00:00","mainEntityOfPage":{"@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/"},"wordCount":2041,"image":{"@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg","articleSection":["Dev"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/","url":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/","name":"Conexi\u00f3n a dispositivos HID poco comunes - R Marketing Digital","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#primaryimage"},"image":{"@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg","datePublished":"2022-09-26T21:27:04+00:00","author":{"@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"description":"La API de WebHID posibilita que los sitios web accedan a teclados auxiliares alternativos y gamepads ex\u00f3ticos. 15 de septiembre de 2020 La API de WebHID","inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/rmarketingdigital.com\/dev\/conexion-a-dispositivos-hid-poco-comunes\/#primaryimage","url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg","contentUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/thumbnail-2834392.jpg","width":376,"height":240,"caption":"thumbnail-2834392-1909390-jpg"},{"@type":"WebSite","@id":"https:\/\/rmarketingdigital.com\/#website","url":"https:\/\/rmarketingdigital.com\/","name":"R Digitales Marketing","description":"SEO Agentur | Werbung f\u00fcr soziale Netzwerke | Community Management","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rmarketingdigital.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e","name":"R Digitales Marketing","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","caption":"R Marketing Digital"}}]}},"_links":{"self":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts\/81416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/comments?post=81416"}],"version-history":[{"count":0,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts\/81416\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/media\/81378"}],"wp:attachment":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/media?parent=81416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/categories?post=81416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/tags?post=81416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}