feat(infra): auto-commit con 12 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 01:21:17 +02:00
parent c9bb356ffe
commit 1ffedbf48d
12 changed files with 716 additions and 0 deletions
@@ -0,0 +1,74 @@
---
name: powertoys_shortcut_add
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def powertoys_shortcut_add(keys: list[str], target_path: str, args: str = \"\", elevated: bool = False, exact_match: bool = False, start_in_dir: str = \"\", config_path: str | None = None) -> None"
description: "Añade o reemplaza un atajo global en el config de PowerToys Keyboard Manager. Convierte nombres legibles de teclas a VK codes y escribe JSON compacto (una linea) para mantener compatibilidad con el formato de PowerToys."
tags: [powertoys, keyboard, windows, wsl, shortcut, config, write, add]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_py_core"
imports: [json, os]
params:
- name: keys
desc: "Lista de nombres de teclas (case-insensitive). Ej: ['lctrl', 'lalt', 't']. Modificadores: lctrl/rctrl/ctrl, lalt/ralt/alt, lshift/rshift/shift, lwin/rwin/win. Letras: a-z. Digitos: 0-9. F-keys: f1-f12. Especiales: space, enter, tab, esc."
- name: target_path
desc: "Path Windows al ejecutable. Ej: 'C:\\\\Windows\\\\System32\\\\wt.exe'."
- name: args
desc: "Argumentos de linea de comandos para el programa (default vacio)."
- name: elevated
desc: "Si True, lanza el programa elevado (runProgramElevationLevel=1). Default False."
- name: exact_match
desc: "Si True, el atajo requiere coincidencia exacta de teclas. Default False."
- name: start_in_dir
desc: "Directorio de trabajo para el programa. Default string vacio."
- name: config_path
desc: "Path al default.json. Si None, usa $POWERTOYS_CONFIG o el path WSL por defecto para $USER."
output: "None. Modifica el archivo default.json en disco."
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/infra/powertoys_shortcut_add.py"
notes: |
error_py_core no existe en el registry. Esta funcion lanza excepciones nativas de Python:
FileNotFoundError si config_path no existe, json.JSONDecodeError si el JSON es invalido,
ValueError si un nombre de tecla no esta en VK_CODES.
El JSON se escribe en formato compacto (separators=(",", ":")) — sin espacios ni saltos de linea —
para mantener compatibilidad con el formato que usa PowerToys en el archivo original.
El dict VK_CODES mapea "ctrl"->162, "alt"->164, "shift"->160, "win"->91 como aliases
a las variantes izquierdas. Para especificar side derecho, usar "rctrl", "ralt", etc.
Si ya existe una entrada con los mismos originalKeys, la reemplaza en su posicion original.
---
## Ejemplo
```python
from infra.powertoys_shortcut_add import powertoys_shortcut_add
# Anadir Ctrl+Alt+T -> Windows Terminal
powertoys_shortcut_add(
keys=["lctrl", "lalt", "t"],
target_path=r"C:\Windows\System32\wt.exe",
start_in_dir=r"C:\Users\lucas",
)
# Anadir Win+Shift+E -> Explorer elevado
powertoys_shortcut_add(
keys=["win", "shift", "e"],
target_path=r"C:\Windows\explorer.exe",
elevated=True,
)
```
## Notas
Despues de modificar el config, PowerToys necesita reiniciarse para detectar los cambios.
Usar `powertoys_restart_py_infra` para recargar la configuracion automaticamente.