Capture keypresses on Windows
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C
- Estrellas
- 40.4k
- Forks
- 8.1k
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 96
Descripción
Description
Some tutorials and packages show it is possible to capture and handle keypresses on terminals, but only available on *nix systems
The example below shows a commonly see implementation.
<?php
$stdin = fopen('php://stdin', 'r');
system('stty cbreak -echo');
stream_set_blocking($stdin, false);
while (1) {
$keypress = fgets($stdin);
if ($keypress) {
echo 'Key pressed: ' . $keypress . PHP_EOL;
}
}
EDIT:
This example captures keys presses in the open terminal, except: shift, alt, control, caps lock, meta and fn
This example above does not work on Windows.
The intention is to capture a single keypress, of course, without typing enter. This would make possible things like terminal games and many command line apps, working for any O.S.
This was discussed in the past here: https://bugs.php.net/bug.php?id=34972
CMB gave some hope this would be implemented, and so, not a bug at all.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza revisando la discusión histórica en bugs.php.net/bug.php?id=34972 y el manejo existente de la entrada del terminal en php-src. Determina el punto de entrada adecuado en Windows y cómo debe comportarse la captura de una sola pulsación de tecla en los sistemas operativos compatibles. Se considerará terminado cuando exista una forma documentada y probada, multiplataforma, de leer una tecla sin requerir Enter.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- c, php
- Área
- cli, operating-systems
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100