> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/input-output/data-inputs/keyboard-barcode-reader.md).

# Keyboard/Barcode Reader

Este bloque de función lee entradas de teclado y códigos de barras y las pone a disposición del resto de tu flujo. Es útil para capturar texto escrito, escáneres de códigos de barras que emulan la entrada de teclado o entradas manuales simples durante la ejecución.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

Este bloque de función no tiene entradas.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

```
``Text``
```

La última línea de texto leída desde el teclado o el dispositivo de código de barras.

```
``Check``
```

Señal booleana que indica que hay un nuevo valor de texto disponible (útil como disparador).

## 🕹️ Controles <a href="#controls" id="controls"></a>

` ``Mode`` ` Desplegable para elegir el comportamiento de entrada. Las opciones típicas son `` `Key Press` `` y `` `Barcode Reading` ``.

## 🎯 Características <a href="#features" id="features"></a>

* Escucha en segundo plano entradas tipo teclado para que el bloque proporcione el texto más reciente escrito o escaneado sin interacción adicional del usuario.
* Proporciona tanto el contenido textual (`Text`) como un booleano tipo disparador (`Check`) para reaccionar sólo cuando lleguen datos nuevos.
* Cambio sencillo de modo para tratar los eventos entrantes como pulsaciones de teclas regulares o como entradas de código de barras (útil para escáneres que envían un código completo de una vez).

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Ajusta el comportamiento deseado usando `Mode`.
2. Conecta las salidas de este bloque a bloques posteriores que procesen o almacenen el texto.
3. Usa la salida `Check` para disparar acciones (por ejemplo, registrar o guardar el texto leído solo cuando haya datos nuevos).

## 📊 Evaluación <a href="#evaluation" id="evaluation"></a>

Al ejecutarse, este bloque escucha eventos de teclado o de escáneres que emulan teclado y actualiza sus salidas con el último valor leído y un indicador de “datos nuevos”.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Para persistir las entradas escaneadas en disco, conecta `Text` (o usa `Check` como disparador) a `CSV Export` o `Data Write Local`.
* Usa `Debug Input` para inspeccionar valores durante el desarrollo cuando quieras un registro rápido de lo que se está leyendo.
* Si deseas combinar lectura de códigos de barras basada en imagen con escáneres de hardware, utiliza este bloque junto con `Barcode Reader`: la detección por cámara puede servir como respaldo o verificación cruzada.
* Para pruebas manuales o inyectar valores sin hardware, empareja con `String Input` para alimentar valores conocidos en tu flujo.
* Para iniciar flujos solo cuando se lea un código, alimenta `Check` a bloques lógicos como `Logic Input` o úsalo para disparar `Image Logger` o `Image Write` y así asociar imágenes con IDs escaneados.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* No aparece texto: asegúrate de que tu escáner de códigos de barras esté configurado como “keyboard wedge” (muchos escáneres envían pulsaciones de tecla).
* El escáner envía caracteres inesperados: verifica los ajustes de sufijo/prefijo del escáner (por ejemplo, carriage return o newline) en la configuración del dispositivo.
* Lecturas duplicadas o perdidas: prueba a cambiar `Mode` entre `Key Press` y `Barcode Reading` para que coincida con la forma en que tu dispositivo envía los datos, y usa la salida `Check` para filtrar duplicados.
* Problemas de permisos o acceso al dispositivo: verifica que el sistema operativo reconozca el teclado/escáner y que ninguna otra aplicación esté capturando su entrada de forma exclusiva.
