Me he tirado todo este domingo desde por la mañana hasta las cinco de la tarde investigando la forma de identificar el origen de los atajos del teclado en la versión UWP de Notepad en Windows 11, pero no he encontrado la forma. Me rindo.
He utilizado una herramienta
command-line poco o nada conocida por nombre
PriExplorer.exe para analizar los archivos *.pri:
https://github.com/chausner/PriToolsAdemás, también sirve analizar los archivos *.xbf, pero solo encontré cadenas de texto relacionadas, nada que me parezca útil ni relevante.
He buscado en los archivos *.mui que el Notepad mantiene abiertos, pero tampoco encontré nada relevante.
Con el archivo "AppxBundleManifest.xml" dentro del directorio del paquete de Notepad (en "WindowsApps") intenté un par de cosas eliminando la referencia al idioma "es-ES", pero no surtió efecto.
Con el editor hexadecimal encontré referencias a funciones win32 con nombres tipo "CreateAcceleratorTableW" y "DestroyAcceleratorTable" en el archivo
Notepad.exe, y también referencias que parecen estar relacionas con la carga del idioma y el manejo de los aceleradores del teclado como por ejemplo: "AppLanguageResourceLoader", "ShortcutType" y "AccessKeyType" en el archivo
NotepadXamlUI.dll, pero no sé que hacer con todo esto....
Estoy convencido que con conocimientos de desensamblador se podría averiguar algo en concreto en relación con esos dos archivos tal vez añadiendo un breakpoint cuando el programa realiza la llamada la función "CreateAcceleratorTableW" y averiguar el origen de los valores que se le pasan a dicha función (datos de la estructura "ACCEL"), pero yo no tengo los suficientes conocimientos como para rastrear esas cosas en un desensamblador.
En fin, eso sería todo.
Dejo por aquí escritas dos claves de registro relacionadas:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateRepository\Cache\Package\Data\100]
"PackageFullName"="Microsoft.WindowsNotepad_11.2604.5.0_neutral_split.language-es_8wekyb3d8bbwe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages\Microsoft.WindowsNotepad_11.2604.5.0_neutral_split.language-es_8wekyb3d8bbwe]
"Path"="C:\\Program Files\\WindowsApps\\Microsoft.WindowsNotepad_11.2604.5.0_neutral_split.language-es_8wekyb3d8bbwe"
Existe una alternativa para usar los atajos del teclado "inglés" en Notepad moderno de Windows 11, la solución consiste directamente en eliminar el paquete relacionado con el idioma español desde una terminal de
Powershell:
Remove-AppxPackage -Package "Microsoft.WindowsNotepad_11.2604.5.0_neutral_split.language-es_8wekyb3d8bbwe"
Esto permite usar CTRL+A para seleccionar todo y etc, pero tiene el obvio inconveniente de volver toda la interfaz de usuario del Notepad al idioma inglés.
Algo es algo, supongo.
Qué rabia no haberlo conseguido esta vez por la vía más directa y menos destructiva.
Un saludo.
EDITO: Por cierto, también estuve probando este "Legacy Notepad" en Windows 11:
https://github.com/ForLoopCodes/legacy-notepadNo revisé el código fuente, solo lo compilé y lo pasé por Virustotal, todo OK.
Tal vez no tiene mucho sentido usarlo teniendo acceso al notepad clásico en el propio Windows 11, pero en Windows 11 primero hay que desactivar un alias llamado "Bloc de Notas" en la configuración del sistema, en la sección de "Configuración avanzada de aplicaciones" (o un nombre similar a eso), por que aunque escribas la ruta exacta del notepad clásico o aunque abras la carpeta C:\Windows\System32 y hagas doble click sobre el notepad clásico siempre se ejecuta el moderno si no desactivas el alias. Cómo complican las cosas los de Microsoft.