Atajos de teclado en Leopard

15 05 2009

A estas alturas ya nadie se sorprende cuando le dicen o descubre un nuevo atajo de teclado para Leopard que desconocía, cosa bastante normal sabiendo que el sistema se encuentra repleto de ellos.  Pues bien, aquí traigo una pequeña colección de atajos que pueden no ser tan conocidos pero que son igualmente útiles sin lugar a dudas.

Forzar borrado de papelera: comando+opción+shit+borrado

Variar el volumen poco a poco: Alt+shit+ subir o bajar volumen.

Al subir o bajar el volumen, mantener presionado shift: Silencia el sonido que se produce cuando variamos el volumen.

C en Spaces: Agrupar todas las ventanas en el primer espacio.

Menú de aplicaciones para forzar salida: Opción+comando+escape

Apagar mac: comando+opcion+escape+ctrl

Menú manzana + opción: Otras opciones.

Menú manzana + shift: Forzar salida.

Y si alguno de los que estáis leyendo estas líneas usáis emacs, seguro que reconoceréis los siquientes atajos:

Control + a: Situar el cursor al comienzo de la línea.

Control + e: Situar el cursor al final de la línea.

Control + k: Borrar desde la posición del cursor hasta el final de línea.

No sé si estos atajos funcionará para otras versiones del sistema operativo, como Tiger por ejemplo, aunque es muy posible que lo hagan.

En fin, espero que os sean útiles.

By Zozo.





¡fflush es para flujos de salida!

12 05 2009

El otro día estaba haciendo una práctica para la carrera donde había un pequeño menú con opciones numeradas para que el usuario eligiese la que quisiera. Para obtener la opción elegida por el usuario usé getchar, esta función extrae sólo el primer carácter del buffer del teclado, dejando por ejemplo, el retorno de carro y todo lo demás. El problema se encontraba en la segunda llamada a getchar, pues devolvía la basura que había quedado en el buffer sin esperar una entrada por parte del usuario.

Instantáneamente ví que la solución al problema era usar “fflush(stdin)“. Lo habíamos usado el año anterior en otras práctica y nos había funcionado de maravilla, pero resultó que esta vez no funcionaba

¿Por qué no?
Bien, parece ser que “fflush” está programado para aplicarse a flujos de salida y no de entrada como el de teclado. Así pues la única sólución posible que nos queda es leer todos los caracteres restantes dell buffer hasta dejarlo vacío. Esto podría hacerse con algo así:

while (getchar() != ‘\n’) ;

Pero, ¿Por qué nos había funcionado el año anterior? Pues, al parecer, “fflush” sobre un flujo de entrada es un agregado que han hecho a la función estándar en Windows que es donde hicimos las prácticas. En esta ocasión no nos funcionó porque usabamos Linux donde no existía tal ampliación de la función.

Bueno, es un pequeño detalle, pero espero que os sirva para quien se encuentre confundido como yo lo estaba.