Archive for the 'Uncategorized' Category

girar la pantalla en el acer aspire 1825PTZ con el botón programable (II)

Actualización: Mucho mas simple e interesante la nueva aproximación al problema de este otro post : Matar un proceso en C#

Bueno, el cutre script que puse hace unas semanas, funciona,  pero tiene un par de cosas que no me gustan:

– para girar se basa en un valor almacenado, y no en la posición actual

– usa “sendkeys”, luego dependo del driver de intel para que funcione

asi que me puse a buscar si había alguna forma de acceder a la API de video para saber la posición y manipularla, y encontre un ejemplo en C++ y en C# que hacía justo lo que necesitaba (http://msdn.microsoft.com/en-us/library/ms812499.aspx).

Lo unico que no me gusta en este caso es que practicamente es copia y pega (solo he cambiado el sentido de giro, a mi gusto), sin pensarlo ni nada 🙂

Aquí va el codigo tal cual para una app de consola de c#:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace RotarPantalla
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
public class NativeMethods
{
// PInvoke declaration for EnumDisplaySettings Win32 API
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int EnumDisplaySettings(
string lpszDeviceName,
int iModeNum,
ref DEVMODE lpDevMode);
// PInvoke declaration for ChangeDisplaySettings Win32 API
[DllImport("user32.dll", CharSet=CharSet.Ansi)]
public static extern int ChangeDisplaySettings(
ref DEVMODE lpDevMode,
int dwFlags);
// constants
public const int ENUM_CURRENT_SETTINGS = -1;
public const int DMDO_DEFAULT = 0;
public const int DMDO_90 = 1;
public const int DMDO_180 = 2;
public const int DMDO_270 = 3;
}
class Program
{
static void Main(string[] args)
{
// initialize the DEVMODE structure
DEVMODE dm = new DEVMODE();
dm.dmDeviceName = new string(new char[32]);
dm.dmFormName = new string(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
if (0 != NativeMethods.EnumDisplaySettings(
null,
NativeMethods.ENUM_CURRENT_SETTINGS,
ref dm))
{
// swap width and height
int temp = dm.dmPelsHeight;
dm.dmPelsHeight = dm.dmPelsWidth;
dm.dmPelsWidth = temp;
// determine new orientation
switch (dm.dmDisplayOrientation)
{
case NativeMethods.DMDO_DEFAULT:
dm.dmDisplayOrientation = NativeMethods.DMDO_90;
break;
case NativeMethods.DMDO_270:
dm.dmDisplay

Orientation = NativeMethods.DMDO_DEFAULT;
break;
case NativeMethods.DMDO_180:
dm.dmDisplayOrientation = NativeMethods.DMDO_270;
break;
case NativeMethods.DMDO_90:
dm.dmDisplayOrientation = NativeMethods.DMDO_180;
break;
default:
// unknown orientation value
// add exception handling here
break;
}
}
}
}
}

PD.- despues de actualizar n veces la entrada para intentar que el codigo quede decente,no hay manera…

girar la pantalla en el acer aspire 1825ptz con el botón programable

Como comentaba, me gusta decidir yo cuando se  gira la pantalla , por eso he desactivado el acelerometro, así con “ctrl-alt” mas las flechas del cursor, puedo decidir el giro de la pantalla,pero en modo tablet usar el teclado no es lo mas comodo del mundo, asi que sería bueno poder girar con el botón “P” (el unico accesible en modo tableta), que puede asociarse mediante el “launch manager” al programa que queramos… luego necesitaremos un programa para girar la pantalla.

Como no quiero complicarme la vida, no usaré ninguna API para la gestión de video, que seguro que la hay, y queda mas elegante, pero, ya que la forma de girar la pantalla con el acelerometro es mandar atajos de teclado al driver de video cada vez que detecta cambio de posición, yo voy a usar ese mismo acercamiento (lo se, es muy cutre, pero funciona). Tampoco quiero crear ninguna aplicación maravillosa, asi que una vez comprobado que vbs tiene sendkeys… decisión tomada.Cutre scrit en visual basic script.

La idea es que la pantalla gire cada vez que demos al botón. Yo he puesto las 4 posiciones posibles de giro. Para saber en q posición estoy (para girar a la siguiente)  guardo (y leo) un valor en el registro. (como digo la idea era no perder tiempo en esto, lo mismo aparte del ancho y alto hay una forma facil de conocer la posición de la pantalla, pero perdía mas tiempo googleando que haciendo esto, asi que…)

el codigo del script es el siguiente: (por supuesto, no me hago responsable de lo que os pase con él…)


Set oReg = CreateObject("Wscript.Shell")
'Definimos las variables necesarias
Dim valorGiro
dim atajo
'leemos (si existe) el ultimo giro realizado
'0 down
'1 right
'2 up
'3 left
on error resume next 'no es el mejor modo pero es VBS...
valorGiro=oReg.RegRead("HKCU\Software\Bingen\girar")
'si no existe la entrada, o algun otro problema de lectura, inicializamos la variable
if err.number <> 0 then
valorGiro=0
end if
'y para hacer el siguiente giro sumamos 1 y le hacemos el mod para que siga de 1 a 4
valorGiro=(valorGiro + 1) mod 4
'y en función del giro, el atajo de teclado que corresponde.Uso los predefinidos
select case valorGiro
case 0
atajo="^%{DOWN}"
case 1
atajo="^%{RIGHT}"
case 2
atajo="^%{UP}"
case 3
atajo="^%{LEFT}"
end select
'Escribimos el nuevo valor de la clave
oReg.RegWrite "HKCU\Software\Bingen\girar", valorGiro, "REG_DWORD"
'enviamos el atajo de teclado para girar la pantalla
oReg.SendKeys atajo
'Destruimos la variable de objeto
Set oReg = Nothing

Si otro día tengo mas tiempo/ganas, lo explico un poco mas y pongo enlaces de referencias y demas, pero, para que no quede en el olvido publico esto y ya veremos (aunque todos sabemos que finalmente quedará así)

Desactivar el acelerometro del acer aspire 1825PTZ

Desde hace un par de días tengo un tabletPc (acer aspire 1825PTZ) que compré a traves de mis amigos de altusnt. Una de las cosas que mas me molesta de él (por lo general estoy -encantado, pero siempre hay “esas pequeñas cositas”) es el acelerometro. Ya se que es muy cool lo de que la pantalla gire segun la muevas, pero supongo que el que invento eso no leía en la cama.

Segun Acer, para desactivar el acelerometro, hay que desactivar los atajos de teclado del driver de la tarjeta grafica. Eso puede ser valido si efectivamente no quieres girar la pantalla nunca, pero yo quiero poder hacerlo manualmente, así que no me vale.

Mirando un poco, veo que el programa que gestiona el acelerometro es el SDTabletPC.EXE, que se  carga al inicio. Así que con abrir msconfig y desmarcar sdtabletpc.exe dentro de los programas de inicio de windows, ya no dará mas problemas.

Ahora el siguiente paso será utilizar la tecla programable “P” del tablet para girar la pantalla a voluntad (en modo tablet los atajos de teclado no son muy comodos) , pero eso será otro post

redireccionar desde un componente en symfony

si desde un componente necesitas redireccionar a otra página (@homepage en el ejemplo), y pruebas:
$this->redirect('@homepage');
Verás que no funciona. Tiene lógica, estas en un componente, en ‘un cacho’ del objeto, así, deberás acceder al controlador del objeto para poder redireccionar:
$this->getController()->redirect('@homepage');
Dicho esto, ahora habrá q pensar si realmente quieres redireccionar desde el componente. En mi caso, me parecía necesario hasta justo el segundo después de dar con el modo de hacerlo. Acto seguido, comenté la linea…

Pintxos para navidad

Como posiblemente hasta el año que viene no vuelva a hacerlos, toca apuntar en algún sitio la receta aproximada.

Morcilla con manzana

morcilla y manzanas (lógicamente), harina, aceite y mini tostas redodas.
Cortamos rodajas de manzana de medio centímetro o así (por decir algo, q nadie se ponga a medirlo, por Dios!) y con un molde (o un vaso de chupito) las hacemos redondas, mas o menos del tamaño de las tostadas. Pasamos por harina y las freímos en abundante aceite hasta que doren, y retiramos.
A la morcilla la despellejamos y cortamos rodajas de un centímetro y medio o así, las pasamos por harina y a la sartén también.

ya solo falta montar los pintxos (pan/manzana/morcilla). Me gustan mas si los mantenemos calientes hasta el momento de comer, pero fríos están muy buenos también.

 

Volovanes / Tartaletas  de puerro

– Puerros, cebolla, nata, aceite,harina, sal y pimienta
Picamos la cebolla y los Puerros, rehogamos con un poco de aceite y después con un poquito de agua 10 minutos en la olla. Abrimos, y seguimos a fuego medio. Vertemos la nata y revolvemos bien. si queremos una textura mas densa, incorporamos un poco de harina.Opcional también pasar la batidora, si no queremos tropezones. A la hora de comer, rellenamos las tartaletas (si lo hacemos con antelación quedan blandas)

Insertando videos de videolandia en wordpress.com

Esta era una entrada tonta, porque cotilleando videolandia me he encontrado este video que me ha hecho gracia, y me he dicho, voy a insertar  un video en el blog, que creo que es el primero…

Al final lo he conseguido, pero no sabía que wordpress.com tiene capado el “embed”, y solo deja insertar videos de los sitios típicos (youtube y demas) o sino, a traves de vodpod, tal y como explican en su blog, que es lo que ha tocado hacer.

Vodpod videos no longer available.

Kiva: Microcréditos a emprendedores

Kiva - loans that change lives

Ayer descubrí Kiva, una pagina que te permite colaborar en el préstamo de microcréditos a emprendedores de países en desarrollo. Tiene contrapartes en distintos países que son las que gestionarán el préstamo y su posterior devolución. Podemos elegir el proyecto y aportar pequeñas (desde 25$) cantidades vía PayPal, que nos serán devueltas (sin intereses) en 6 / 9 meses aproximadamente (depende del proyecto).

via: Pastilla roja


Enlaces en del.icio.us

Fotos en Flickr



patos0028

patos0027

patos0022

Más fotos

Posts Más Vistos


A %d blogueros les gusta esto: