Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions data/locale/ca-ES/keyb.toml

This file was deleted.

40 changes: 36 additions & 4 deletions data/locale/ca-ES/neokey.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,47 @@ IDS_LEDS = 1007
IDS_ACTIVE_LAYOUT = 1008
IDS_AVAIL_LAYOUTS = 1009
IDS_UNKNOWN_CMD = 1010
IDS_LAYOUT_SET = 1011
IDS_ERR_SET_LAYOUT = 1012
IDS_MISSING_LAYOUT = 1013
IDS_USAGE_LINE5 = 1014
IDS_USAGE_LINE6 = 1015
IDS_USAGE_LINE7 = 1016
IDS_USAGE_LINE8 = 1017
IDS_REPEAT = 1018
IDS_DELAY = 1019
IDS_REPEAT_SET = 1020
IDS_DELAY_SET = 1021
IDS_LEDS_SET = 1022
IDS_ERR_SET = 1023
IDS_INVALID_VALUE = 1024
IDS_CPS = 1025
IDS_MS = 1026

[strings]
IDS_USAGE = "NEOKEY [opció]"
IDS_USAGE_LINE2 = " Mostra l'estat del teclat i les distribucions disponibles."
IDS_USAGE_LINE3 = " NEOKEY mostra l'estat del teclat"
IDS_USAGE_LINE4 = " NEOKEY --list llista les distribucions disponibles"
IDS_USAGE = "NEOKEY [comanda]"
IDS_USAGE_LINE2 = " Mostra estat, distribució, repetició i LEDs."
IDS_USAGE_LINE3 = " NEOKEY mostra l'estat i la configuració"
IDS_USAGE_LINE4 = " NEOKEY layouts llista les distribucions disponibles"
IDS_USAGE_LINE5 = " NEOKEY layout <nom> estableix la distribució del teclat"
IDS_USAGE_LINE6 = " NEOKEY repeat <cps> estableix la velocitat de repetició (2-60)"
IDS_USAGE_LINE7 = " NEOKEY delay <ms> estableix el retard de repetició (100-2000)"
IDS_USAGE_LINE8 = " NEOKEY leds <llista> estableix els LEDs: num,caps,scroll (o none)"
IDS_KBD_STATE = "Estat del teclat:"
IDS_MODIFIERS = "Modificadors:"
IDS_LEDS = "LEDs:"
IDS_ACTIVE_LAYOUT = "Distribució activa: "
IDS_AVAIL_LAYOUTS = "Distribucions de teclat disponibles:"
IDS_UNKNOWN_CMD = "Ordre desconeguda."
IDS_LAYOUT_SET = "Distribució establerta: "
IDS_ERR_SET_LAYOUT = "Error: no s'ha pogut establir la distribució del teclat."
IDS_MISSING_LAYOUT = "Falta el nom de la distribució."
IDS_REPEAT = "Repetició:"
IDS_DELAY = "Retard:"
IDS_REPEAT_SET = "Velocitat de repetició establerta: "
IDS_DELAY_SET = "Retard de repetició establert: "
IDS_LEDS_SET = "LEDs establerts: "
IDS_ERR_SET = "Error: no s'ha pogut aplicar la configuració del teclat."
IDS_INVALID_VALUE = "Valor no vàlid."
IDS_CPS = " cps"
IDS_MS = " ms"
23 changes: 0 additions & 23 deletions data/locale/en-US/keyb.toml

This file was deleted.

40 changes: 36 additions & 4 deletions data/locale/en-US/neokey.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,47 @@ IDS_LEDS = 1007
IDS_ACTIVE_LAYOUT = 1008
IDS_AVAIL_LAYOUTS = 1009
IDS_UNKNOWN_CMD = 1010
IDS_LAYOUT_SET = 1011
IDS_ERR_SET_LAYOUT = 1012
IDS_MISSING_LAYOUT = 1013
IDS_USAGE_LINE5 = 1014
IDS_USAGE_LINE6 = 1015
IDS_USAGE_LINE7 = 1016
IDS_USAGE_LINE8 = 1017
IDS_REPEAT = 1018
IDS_DELAY = 1019
IDS_REPEAT_SET = 1020
IDS_DELAY_SET = 1021
IDS_LEDS_SET = 1022
IDS_ERR_SET = 1023
IDS_INVALID_VALUE = 1024
IDS_CPS = 1025
IDS_MS = 1026

[strings]
IDS_USAGE = "NEOKEY [option]"
IDS_USAGE_LINE2 = " Display keyboard state and available layouts."
IDS_USAGE_LINE3 = " NEOKEY shows keyboard state"
IDS_USAGE_LINE4 = " NEOKEY --list lists available layouts"
IDS_USAGE = "NEOKEY [command]"
IDS_USAGE_LINE2 = " Show state, layout, repeat and LEDs."
IDS_USAGE_LINE3 = " NEOKEY shows the state and configuration"
IDS_USAGE_LINE4 = " NEOKEY layouts lists available layouts"
IDS_USAGE_LINE5 = " NEOKEY layout <name> sets the keyboard layout"
IDS_USAGE_LINE6 = " NEOKEY repeat <cps> sets the repeat rate (2-60)"
IDS_USAGE_LINE7 = " NEOKEY delay <ms> sets the repeat delay (100-2000)"
IDS_USAGE_LINE8 = " NEOKEY leds <list> sets LEDs: num,caps,scroll (or none)"
IDS_KBD_STATE = "Keyboard state:"
IDS_MODIFIERS = "Modifiers:"
IDS_LEDS = "LEDs:"
IDS_ACTIVE_LAYOUT = "Active layout: "
IDS_AVAIL_LAYOUTS = "Available keyboard layouts:"
IDS_UNKNOWN_CMD = "Unknown command."
IDS_LAYOUT_SET = "Layout set to: "
IDS_ERR_SET_LAYOUT = "Error: failed to set keyboard layout."
IDS_MISSING_LAYOUT = "Missing layout name."
IDS_REPEAT = "Repeat:"
IDS_DELAY = "Delay:"
IDS_REPEAT_SET = "Repeat rate set to: "
IDS_DELAY_SET = "Repeat delay set to: "
IDS_LEDS_SET = "LEDs set to: "
IDS_ERR_SET = "Error: failed to apply keyboard setting."
IDS_INVALID_VALUE = "Invalid value."
IDS_CPS = " cps"
IDS_MS = " ms"
23 changes: 0 additions & 23 deletions data/locale/es-ES/keyb.toml

This file was deleted.

40 changes: 36 additions & 4 deletions data/locale/es-ES/neokey.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,47 @@ IDS_LEDS = 1007
IDS_ACTIVE_LAYOUT = 1008
IDS_AVAIL_LAYOUTS = 1009
IDS_UNKNOWN_CMD = 1010
IDS_LAYOUT_SET = 1011
IDS_ERR_SET_LAYOUT = 1012
IDS_MISSING_LAYOUT = 1013
IDS_USAGE_LINE5 = 1014
IDS_USAGE_LINE6 = 1015
IDS_USAGE_LINE7 = 1016
IDS_USAGE_LINE8 = 1017
IDS_REPEAT = 1018
IDS_DELAY = 1019
IDS_REPEAT_SET = 1020
IDS_DELAY_SET = 1021
IDS_LEDS_SET = 1022
IDS_ERR_SET = 1023
IDS_INVALID_VALUE = 1024
IDS_CPS = 1025
IDS_MS = 1026

[strings]
IDS_USAGE = "NEOKEY [opción]"
IDS_USAGE_LINE2 = " Muestra el estado del teclado y las distribuciones disponibles."
IDS_USAGE_LINE3 = " NEOKEY muestra el estado del teclado"
IDS_USAGE_LINE4 = " NEOKEY --list lista las distribuciones disponibles"
IDS_USAGE = "NEOKEY [comando]"
IDS_USAGE_LINE2 = " Muestra estado, distribución, repetición y LEDs."
IDS_USAGE_LINE3 = " NEOKEY muestra el estado y la configuración"
IDS_USAGE_LINE4 = " NEOKEY layouts lista las distribuciones disponibles"
IDS_USAGE_LINE5 = " NEOKEY layout <nombre> establece la distribución del teclado"
IDS_USAGE_LINE6 = " NEOKEY repeat <cps> establece la velocidad de repetición (2-60)"
IDS_USAGE_LINE7 = " NEOKEY delay <ms> establece el retardo de repetición (100-2000)"
IDS_USAGE_LINE8 = " NEOKEY leds <lista> establece los LEDs: num,caps,scroll (o none)"
IDS_KBD_STATE = "Estado del teclado:"
IDS_MODIFIERS = "Modificadores:"
IDS_LEDS = "LEDs:"
IDS_ACTIVE_LAYOUT = "Distribución activa: "
IDS_AVAIL_LAYOUTS = "Distribuciones de teclado disponibles:"
IDS_UNKNOWN_CMD = "Comando desconocido."
IDS_LAYOUT_SET = "Distribución establecida: "
IDS_ERR_SET_LAYOUT = "Error: no se pudo establecer la distribución del teclado."
IDS_MISSING_LAYOUT = "Falta el nombre de la distribución."
IDS_REPEAT = "Repetición:"
IDS_DELAY = "Retardo:"
IDS_REPEAT_SET = "Velocidad de repetición establecida: "
IDS_DELAY_SET = "Retardo de repetición establecido: "
IDS_LEDS_SET = "LEDs establecidos: "
IDS_ERR_SET = "Error: no se pudo aplicar la configuración del teclado."
IDS_INVALID_VALUE = "Valor no válido."
IDS_CPS = " cps"
IDS_MS = " ms"
8 changes: 4 additions & 4 deletions docs/architecture/disk-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ El contenido de `C:` se genera íntegramente en `neodev/src/image.rs::collect_fi
C:\
├── README.TXT
├── Temp/.empty
├── Programs\ # 28 .NXE del OS (mezcla shell + utilidades core)
├── Programs\ # 27 .NXE del OS (mezcla shell + utilidades core)
│ ├── neoshell.nxe neoinit.nxe cmdtest.nxe
│ ├── cd.nxe corehelp.nxe coredir.nxe coretype.nxe
│ ├── corecls.nxe corecopy.nxe coredel.nxe coreren.nxe
│ ├── coremd.nxe corerd.nxe drives.nxe ps.nxe keyb.nxe
│ ├── coremd.nxe corerd.nxe drives.nxe ps.nxe
│ └── datetime neomem echo label poweroff colors neokey
│ nxres nxlocale nxverify ping hostname
└── System\
Expand All @@ -31,7 +31,7 @@ C:\
│ ├── nslookup
│ └── reboot shtest stresscmd tree ver vol # movidos aquí por capacidad
├── Libraries\ # fs.nxl math.nxl console.nxl net.nxl
├── Keyboard\ # US.kbd Spanish.kbd
├── Keyboard\ # en-US.kbd es-ES.kbd
├── Locale\<lang>\*.nlt
├── Drivers\ # *.nem BOOT y SYSTEM mezclados
└── Registry\SYSTEM.hiv
Expand Down Expand Up @@ -92,7 +92,7 @@ C:\
│ │ ├── config\ # hives: SYSTEM.hiv (+ SOFTWARE/SAM/SECURITY/DEFAULT)
│ │ ├── drivers\ # .NEM SYSTEM
│ │ │ └── BOOT\ # .NEM boot-critical (ps2kbd, serial, rtc…)
│ │ ├── Keyboard\ # US.kbd, Spanish.kbd
│ │ ├── Keyboard\ # en-US.kbd, es-ES.kbd
│ │ ├── Globalization\<lang>\ # *.nlt
│ │ ├── Fonts\
│ │ ├── INF\
Expand Down
20 changes: 10 additions & 10 deletions docs/design/neocfg-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,16 +293,16 @@ Sin dependencias externas. Implementable inmediatamente con la API Ob existente.
tr!("keyboard.current"): tr!("keyboard.layout.sp")

tr!("keyboard.available"):
1. tr!("keyboard.layout.us") "us" — US
2. tr!("keyboard.layout.sp") "es" — Spanish [*]
1. tr!("keyboard.layout.us") "en-US" — English (US)
2. tr!("keyboard.layout.sp") "es-ES" — Spanish (Spain) [*]

tr!("keyboard.actions"):
1. tr!("keyboard.change")

[Esc] tr!("neocfg.back")
```

**Implementación** (vía Ob API existente, mismo patrón que `userbin/keyb/`).
**Implementación** (vía Ob API existente, mismo patrón que `userbin/neokey/`).
El layout se identifica por **nombre** (string NUL-terminado, p. ej. `"us"`,
`"es"`), no por índice numérico:

Expand Down Expand Up @@ -514,15 +514,15 @@ NeoCfg no extiende el kernel. Es una aplicación Ring 3 que **consume** APIs exi

### Alternative B: Herramientas independientes por subsistema (ej. `powercfg.nxe`, `langcfg.nxe`, `kbdcfg.nxe`)

**Descripción**: Crear un binario .NXE separado para cada área de configuración, como ya se hace con `keyb.nxe`, `ipconfig.nxe`.
**Descripción**: Crear un binario .NXE separado para cada área de configuración, como ya se hace con `neokey.nxe`, `ipconfig.nxe`.

**Rechazada porque**:

1. **Fragmentación de la UX**: El usuario debe recordar múltiples comandos. No hay un punto de entrada único.
2. **Duplicación de UI**: Cada herramienta implementa su propia interfaz de usuario. NeoCfg centraliza la UI en `ui/menu.rs` y `ui/dialog.rs`, reutilizables.
3. **Dificultad de descubrimiento**: Un usuario nuevo no sabe qué herramientas existen ni qué hace cada una. NeoCfg ofrece un listado completo.
4. **Alineación con la visión**: El roadmap (`ADM-5+6: neocfg + neofs`) ya prevé una herramienta de administración unificada.
5. **No excluye herramientas independientes**: `keyb.nxe`, `ipconfig.nxe` pueden coexistir con NeoCfg, que las invoca o emula su funcionalidad.
5. **No excluye herramientas independientes**: `neokey.nxe`, `ipconfig.nxe` pueden coexistir con NeoCfg, que las invoca o emula su funcionalidad.

### Alternative C: Aplicación GUI desde el inicio

Expand Down Expand Up @@ -667,8 +667,8 @@ pub fn i18n_reload_all();
| # | Test | Expected |
| --- | --- | --- |
| 8 | Keyboard muestra layout actual | Coincide con `ob_query_info(KeyboardLayout)` |
| 9 | Seleccionar "US" → layout cambia a US | `ob_query_info(KeyboardLayout)` retorna `"us"` |
| 10 | Seleccionar "Spanish" → layout cambia a Spanish | `ob_query_info(KeyboardLayout)` retorna `"es"` |
| 9 | Seleccionar "en-US" → layout cambia a en-US | `ob_query_info(KeyboardLayout)` retorna `"en-US"` |
| 10 | Seleccionar "es-ES" → layout cambia a es-ES | `ob_query_info(KeyboardLayout)` retorna `"es-ES"` |
| 11 | Keyboard no modifica nada excepto `ob_set_info(KeyboardLayout)` | Solo se invoca la clase 5 |

### 7.4 Tests del módulo About (invariante: los datos de versión son consistentes)
Expand Down Expand Up @@ -793,7 +793,7 @@ userbin/neocfg/
**Archivos:** `src/modules/keyboard.rs`

1. `ob_open("\Global\Info\Keyboard")` → `ob_query_info(KeyboardLayout)` → get current
2. Mostrar menú con layouts disponibles (US=0, Spanish=1)
2. Mostrar menú con layouts disponibles (en-US=0, es-ES=1)
3. `ob_set_info(KeyboardLayout, &[layout])` si el usuario selecciona cambio
4. Esperar tecla, retornar

Expand Down Expand Up @@ -913,8 +913,8 @@ keyboard.title = "===== Keyboard Layout ====="
keyboard.current = "Current layout"
keyboard.available = "Available layouts"
keyboard.change = "Change layout"
keyboard.layout.us = "US"
keyboard.layout.sp = "Spanish"
keyboard.layout.us = "en-US"
keyboard.layout.sp = "es-ES"

# About module
about.title = "===== About NeoDOS ====="
Expand Down
7 changes: 7 additions & 0 deletions docs/design/neokbd-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@
> **Estado:** Diseño completo
> **Versión de NeoDOS:** v0.50+
> **Dependencias:** Event Bus (existente), Registry/Cm (existente), Input Manager (existente), Ob (existente)
>
> **Nota (post-implementación):** El binario `keyb.nxe` fue retirado; su
> funcionalidad vive ahora en `userbin/neokey/`
> (`NEOKEY show`, `NEOKEY layouts`, `NEOKEY layout <nombre>`). Los layouts se
> identifican por locale tag — `en-US` y `es-ES` (ficheros `en-US.kbd`/`es-ES.kbd`),
> ya no `US`/`SP`. Las referencias a `userbin/keyb` y a los nombres `US`/`Spanish`
> más abajo son históricas (plan de diseño original).

---

Expand Down
6 changes: 2 additions & 4 deletions docs/userland/shell.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ Built-in commands (CWD, SET, EXIT, CALL) are not pipeable and produce an error i
| PS | `ob_enum(\Ob\Process)` then `ob_query_info` per process for name/pid/state |
| KILL `<pid>` | `ob_set_info(Process, ProcessTerminate)` on target process object |
| PRI `<pid> <level>` | `ob_set_info(Process, ProcessPriority, &level)` |
| KEYB `<layout>` | Legacy — use `NEOKEY layout <name>` instead. `ob_set_info(KeyboardLayout)` on keyboard device object. |
| POWEROFF | `ob_open(\\System\\PowerManager)` + `ob_set_info(PowerShutdown)` — via Object Manager |
| REBOOT | `ob_open(\\System\\PowerManager)` + `ob_set_info(PowerReboot)` — via Object Manager |
| VER | `ob_open(\Global\Info\Version)` → `ob_query_info` → print version string |
Expand All @@ -113,7 +112,7 @@ Built-in commands (CWD, SET, EXIT, CALL) are not pipeable and produce an error i

## userbin/.NXE Binaries

All 43 user-mode binaries, each a standalone `.NXE` ELF file in `userbin/<name>/`:
All 42 user-mode binaries, each a standalone `.NXE` ELF file in `userbin/<name>/`:

| Binary | Category | Description |
| -------- | ---------- | ------------- |
Expand Down Expand Up @@ -151,8 +150,7 @@ All 43 user-mode binaries, each a standalone `.NXE` ELF file in `userbin/<name>/
| tree | utility | Recursive directory listing |
| type | utility | Display file contents |
| drives | utility | List mounted drives |
| keyb | utility | Keyboard layout control (legacy — use neokey) |
| neokey | utility | Keyboard management: show state, switch layout, list layouts, set repeat rate/delay, show LEDs |
| neokey | utility | Keyboard management: show state (modifiers/LEDs) and active layout, list layouts, switch layout (`layout <name>`) |
| kill | system | Terminate processes |
| pri | system | Set process priority |
| label | utility | Volume label management |
Expand Down
Loading
Loading