Si habéis instalado (por casualidad o por motivos laborales) la ultima beta de de OSX 10.10.2, si, la que funciona mejor, la beta 2. Os habréis asustado porque hay aplicaciones que misteriosamente han dejado de funcionar.

La aplicación que mas se nota, será por el uso, ha sido Google Chrome. Como veis, es arrancarla y petar nada más arrancar. Todo debido a que Apple ha modificado/eliminado ciertas APIs del trackpad sin avisar y el amigo Chrome, pues chico, explota.

Depende de como tengáis el día podéis pensar de dos formas.

1. Vaya hombre, no se han dado cuenta pero bueno, seguro que ya lo solucionan… pobres los de Google (y otros) que se han visto afectados, pobres.
2. Malditos bastardos con su guerra Termonuclear escondida, están atacando a Google directamente y han atacado a su linea de flotación, tras el buscador, ahora el navegador. Malditos bastardos.

Elegid vosotros la vuestra.

El caso es que, si necesitáis probar Chrome (por compatibilidad de vuestras aplicaciones web) se puede parchear la librería para que modifique el touchpad para que no pete. Para ello:

1. Abrid el terminal y cread un fichero de texto (llamadlo como querais pero que sea .m, por ejemplo chrome_patch.m). Hacedlo como querais, si sois unos tios guays, usareis el vi. Escribid (copiad) los siguiente.

#import <appkit /AppKit.h>

__attribute((constructor)) void Patch_10_10_2_entry()
{
NSLog(@"10.10.2 patch loaded");
}

@interface NSTouch ()
- (id)_initWithPreviousTouch:(NSTouch *)touch newPhase:(NSTouchPhase)phase position:(CGPoint)position     isResting:(BOOL)isResting force:(double)force;
@end

@implementation NSTouch (Patch_10_10_2)
- (id)_initWithPreviousTouch:(NSTouch *)touch newPhase:(NSTouchPhase)phase position:(CGPoint)position     isResting:(BOOL)isResting
{
return [self _initWithPreviousTouch:touch newPhase:phase position:position isResting:isResting force:0];
}
@end

Es este código esta el parche de las funciones (NSTouch) y que, como veis es un parche acumulativo que esperemos que en la próxima beta este incluido.

2. En el mismo terminal, ejecutad:



clang -dynamiclib -framework AppKit RUTA_DEL_FICHERO/FICHERO.m -o ~/Desktop/google_patch.dylib

Con esto creamos una librería dinámica del parche.

3. Una linea mas en el terminal y listo:

env DYLD_INSERT_LIBRARIES=~/Desktop/google_patch.dylib "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

Con lo que inyectamos la librería a Chrome.

Eso si, con esto funcionara para 1 Chrome y mientras mantengáis el terminal abierto ya que es ese bash el que esta inyectando el parche a la librería.

Esperemos que Apple lo repare para las siguientes versiones… o no.

Aun si esto os parece complicado, un pollo ha montado un Automator con todo hecho.