2011-12-13 14 views
9

Los programas Gtk pueden tener diferentes temas de vinculación vinculando diferentes claves a las señales gtk, pero los programas afaik, qt no pueden hacer eso ahora.¿Es posible implementar combinaciones de teclas de estilo de emacs en todos los programas Qt (probablemente como un complemento qt)?

Desde Qt los complementos (como la mayoría de este tipo de biblioteca lo hacen, y lo que quiero decir es High Level Plugin o Qt Extension) y al menos algunos de ellos (High Level Plugins) pueden cargarse automáticamente por todos los programas qt de acuerdo con algo como ENV, ¿es posible tener combinaciones de teclas globales (Emacs u otro estilo) (al menos en toda el área de entrada) usando el complemento qt? O en otras palabras, ¿alguien sabe qué tipo de complemento (de alto nivel) debería ser?

Mi conjetura es un complemento de inputcontext o un complemento accesible (puente). Para el plugin de contexto de entrada, me pregunto si esto puede funcionar con el método de entrada ya que afaik solo se puede habilitar un backend de entrada por vez. Para el complemento accesible, no he descubierto cómo cargarlo automáticamente.

Gracias.

Respuesta

1

Puede install an event filter interceptar eventos clave, y usar eso para convertirlos a other events.

Creo que estás usando la palabra "plug-in" en un sentido diferente al de Qt. Tiene varios complementos específicos, para códecs de imágenes, controladores SQL, etc., pero no tiene un mecanismo de "hacer esto para todos los widgets" de propósito general. Para eso, debería capturar todos los puntos de creación de los widgets de nivel superior en su aplicación y agregar código para instalar el filtro para cada caso.

+0

¿Qué tal la parte de carga? (No encontré ningún documento sobre cómo Qt dicide cargar estos complementos ~~~) – yuyichao

+0

Aunque estas extensiones ESTÁN cargadas en la mayoría de los programas qt (que tienen cuadro de entrada) pero no en skype. ¿Alguna razón para eso? – yuyichao

+0

Es lo que quiero decir con "plug-in". (y mi pregunta es solo si hay un tipo de complemento que pueda usar). Creo que probablemente los complementos de accesibilidad o inputcotext pueden ayudar, pero no sé cómo/cuándo se cargan estos complementos. De hecho, estoy bastante seguro de que un complemento de InputContext puede hacer esto (solo para el contexto de entrada) si no está utilizando ningún método de entrada. (por cierto, para skype es probable porque skype no usa el elemento qt estándar ~~) – yuyichao

0

De alguna manera resuelvo el problema (junto con this one) usando xkb, es decir, redirijo C-npfbae a las claves adecuadas, aunque no he realizado C-d redirection compatible with terminal EOF.

Todavía creo que el problema (en Qt) se puede resolver con los complementos de qtaccessible pero no he descubierto cómo hacerlo funcionar.

+0

Hm, no, no es una muy buena solución ... P. ej. en el propio Emacs estoy usando «C-S-f» para mover la selección un char hacia adelante. Pero las flechas están libres ahora, así que me limité a «S-AnArrow», un movimiento entre pantallas divididas. Si hubiera vinculado «C-S-f» a «S- →» para un nivel de sistema, rompería todo. –

Cuestiones relacionadas