2010-08-05 18 views
0

J'ai un plugin Eclipse qui utilise plusieurs raccourcis clavier (Alt-G x, Alt-G y, etc ...). Pour la plupart des dispositions de clavier, il n'y a aucun problème pour ces raccourcis clavier spécifiques. Cependant, pour le suisse-allemand, il s'avère que 'Alt-G' crée '@' et cela rend très difficile pour les Allemands suisses d'utiliser les plugins que j'ai créés. Je ne veux pas modifier les raccourcis clavier actuels, car cela perturberait les utilisateurs existants.Comment annuler la liaison d'une touche pour un paramètre régional particulier

Ma question est:

Comment puis-je détecter qu'un programme utilisateur est sur un clavier allemand suisse et désactiver programmation (ou modifier) ​​les raccourcis clavier?

(Est-ce que je peux préciser dans le plugin.xml?)

+0

Je aurais dû regarder/un peu/difficile avant que je pose la question. Il semble que le point d'extension org.eclipse.ui.bindings fournisse un attribut 'locale'. À l'aide de cela, je peux spécifier qu'une liaison de clé doit s'appliquer uniquement à un environnement linguistique particulier, mais je ne sais toujours pas comment appliquer une liaison de touches à * toutes * les locales sauf une. –

Répondre

0

Pour répondre à ma propre question, vous pouvez utiliser le point d'extension org.eclipse.ui.bindings pour résoudre complètement le problème. D'abord, vous définissez une liaison de touches comme vous le feriez normalement, et vous pouvez ensuite désactiver cette liaison de touches particulière sur un seul environnement local. Et pour cet environnement uniquement, vous pouvez rétablir la liaison à quelque chose de différent.

Cela fonctionne, mais est malheureusement très verbeux si vous avez beaucoup de clés à lier, délier, et relier.

Voici un exemple:

 <!-- set binding globally --> 
     <key 
     commandId="com.foo.myCommandId" 
     contextId="org.eclipse.ui.contexts.window" 
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" 
     sequence="M3+G T"/> 
     <!-- un-set binding for Swiss German --> 
     <key 
     commandId="com.foo.myCommandId" 
     contextId="org.eclipse.ui.contexts.window" 
     locale="de_CH" 
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" 
     sequence="M3+G C"/> 
     <!-- re-set binding for Swiss German with a new key combo --> 
     <key 
     commandId="com.foo.myCommandId" 
     contextId="org.eclipse.ui.contexts.window" 
     locale="de_CH" 
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" 
     sequence="M1+M3+G C"/>