ios - restaurar - teclado inalambrico mac no funcionan algunas teclas
iOS: ¿Cómo detectar las teclas de escape/control en un teclado de bluetooth de hardware? (3)
AFAIK esto no es posible usando la API pública. He hecho un poco de búsqueda y la clave esc no se reconoce. Lo único que no hice fue probar iSSH
(cuesta 9 € :-), pero si lees la descripción en la AppStore, parece claro que la tecla ESC en un teclado de hardware (bluetooth) no funciona:
Soporte de configuración de claves exhaustivas. Tiene teclas de flecha (por ventana emergente o por barra de herramientas). ctrl , alt , esc , tab , shift , teclas Fn ( 1-10 ), ` key, PgUp , PgDown y para esas teclas no listadas proporciona múltiples medios para agregarlas.
Compatibilidad con el teclado Bluetooth para las teclas de flecha , teclas de función y una reasignación de la tecla ctrl mediante la asignación de teclas de opción en el servidor
X11/VNC
o en el terminal. Cuando está habilitada, una tecla Opción + presiona mapas para presionar la tecla Ctrl + equivalente.
Como puede ver, en la segunda línea no se menciona la tecla ESC . Además, he encontrado este (antiguo) post .
EDITAR:
Como sus últimas actualizaciones, he encontrado una manera de "ocultar" el _gsEvent
dentro del binario. Sin embargo, no sé si el analizador estático de Apple puede encontrarlo. El truco es simple ... ¡cree el selector _gsEvent
(y otros selectores privados) en tiempo de ejecución!
-(void)sendEvent:(UIEvent *)event
{
SEL aSelector = NSSelectorFromString([self theSelector]);
if ([event respondsToSelector:aSelector]) {
NSLog(@"Event: %@", event.description);
}
[super sendEvent:event];
}
-(NSString *)theSelector
{
// compose the keyword as you prefer
NSString *sel = [NSString stringWithFormat:@"%@g%@%@ent", @"_", @"s", @"Ev"];
return sel;
}
He intentado buscar dentro del binario y no encuentro la palabra clave _gsEvent
, obviamente porque se creó solo en tiempo de ejecución.
Espero que esto ayude.
Estoy tratando de descubrir cómo detectar que el Escape (y otras combinaciones de teclas como Ctrl y alt) se presionaron en un teclado Bluetooth conectado a un dispositivo iOS.
Algunas respuestas parecen sugerir que esto no es posible. Sin embargo, hay aplicaciones en Appstore que hacen esto (por ejemplo, iSSH), así que asumo que es posible usar las API públicas de alguna manera.
He intentado crear mi propio UITextInput, sin embargo, esto no recibe nada cuando se presiona la tecla Escape. La única parte de la API que puedo ver donde podría responder el iPad es cuando VoiceOver está habilitado (Escape funciona como nuevo en Safari), así que me pregunto si hay alguna forma de acceder a la API de accesibilidad.
También traté de ver si hay algo que pueda observar desde NSNotificationCenter que pueda ayudar, pero que aún no haya encontrado nada.
Las sugerencias son bienvenidas, he estado trabajando en esto por un día y ahora estoy un poco perdido.
No hay API públicas para lo que pretende lograr, por lo que esto puede llevar a un rechazo.
Si estás dispuesto a arriesgarte, puedes intentar this . Que básicamente intercepta todos los eventos enviados a su aplicación al sobrescribir sendEvent:
en su aplicación UIApplication
.
Puede hacer esto ahora en iOS 7. Por ejemplo, para implementar la clave de escape, anule UITextView y coloque los siguientes métodos en su clase:
- (NSArray *) keyCommands {
UIKeyCommand *esc = [UIKeyCommand keyCommandWithInput: UIKeyInputEscape modifierFlags: 0 action: @selector(esc:)];
return [[NSArray alloc] initWithObjects: esc, nil];
}
- (void) esc: (UIKeyCommand *) keyCommand {
// Your custom code goes here.
}
No necesita verificar para estar seguro de que está en iOS 7, ya que las versiones anteriores del sistema operativo no llamarán al método keyCommands.