---
id: cdp_press_key_go_browser
name: cdp_press_key
kind: function
lang: go
domain: browser
purity: impure
version: 1.0.0
tested: false
tests: []
test_file_path: ""
description: "Pulsa una tecla especial por nombre via Input.dispatchKeyEvent CDP (Enter, Tab, Escape, flechas, etc.) sobre el elemento con foco activo."
tags: [cdp, browser, input, keyboard, navegator]
signature: "func CdpPressKey(c *CDPConn, keyName string) error"
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: error_go_core
imports: []
file_path: "functions/browser/cdp_press_key.go"
example: |
  // Enfocar un input y pulsar Enter para enviar el formulario
  _ = CdpClick(c, "input[name='q']")
  _ = CdpTypeText(c, "golang")
  _ = CdpPressKey(c, "Enter")
params:
  - name: c
    desc: "Conexion CDP activa obtenida con CdpConnect."
  - name: keyName
    desc: "Nombre de la tecla a pulsar. Valores soportados: Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Space."
output: "nil si la tecla se despacho correctamente. Error si la conexion es nula, la tecla no esta en la tabla soportada, o CDP rechaza el evento."
---

## Ejemplo

```go
conn, _ := CdpConnect(9222)

// Enfocar campo de busqueda, escribir y enviar con Enter
_ = CdpClick(conn, "input[name='q']")
_ = CdpTypeText(conn, "golang generics")
if err := CdpPressKey(conn, "Enter"); err != nil {
    log.Fatal(err)
}

// Navegar en un desplegable con flechas
_ = CdpClick(conn, "#dropdown")
_ = CdpPressKey(conn, "ArrowDown")
_ = CdpPressKey(conn, "ArrowDown")
_ = CdpPressKey(conn, "Enter")

// Cerrar un modal con Escape
_ = CdpPressKey(conn, "Escape")
```

## Cuando usarla

Usar cuando necesites simular pulsaciones de teclas especiales sobre el elemento con foco: enviar formularios con Enter, navegar opciones con flechas, limpiar campos con Backspace/Delete, cerrar modales con Escape, o desplazarse con PageUp/PageDown. Para escribir texto normal usa CdpTypeText.

## Gotchas

- La tecla actua sobre el elemento con foco activo. Llama a CdpClick primero para enfocar el elemento objetivo.
- Teclas sin caracter imprimible (Tab, Escape, flechas, Home, End, PageUp, PageDown) no envian el campo "text" — Chrome lo requiere asi para distinguir navegacion de insercion.
- Enter envia `text: "\r"` que es lo que Chrome espera para confirmar formularios y autocompletados.
- Space envia `key: " "` y `text: " "` — funciona como barra espaciadora y como insercion de espacio en inputs.
- Si la tecla que necesitas no esta en la tabla, la funcion retorna error explicito en vez de silencio.
