Как отключить мнемонику? - PullRequest
       6

Как отключить мнемонику?

1 голос
/ 24 января 2010

Я расширяю Eclipse с помощью инфраструктуры плагинов Eclipse, и у меня возникла проблема:

Я создал редактор Eclipse и хотел бы отключить мнемонические меню Eclipse, например: ALT + a эквивалентно меню Search. Потому что мне нужны эти комбинации (Alt + ...) в моем редакторе. что делать?

Ответы [ 3 ]

1 голос
/ 24 января 2010

Как рекомендовано в этой теме :

Создайте свою собственную схему и добавьте необходимые комбинации клавиш. В настройку INI-файла добавьте эту строку:

org.eclipse.ui/KEY_CONFIGURATION_ID = <your scheme id>

См. Назначения клавиш .

альтернативный текст http://www.vogella.de/articles/EclipseCommands/images/keybinding30.gif

как Пол Вебстер говорит: :

Вы можете переопределить ярлык одним из 3 способов

  1. создать новую схему без родителя. Затем вы можете определить столько привязок клавиш, сколько захотите, поскольку вы не увидите ни одной привязки по умолчанию.
  2. создать новую схему с родительской схемой по умолчанию. Вы унаследуете все комбинации клавиш по умолчанию, но любая, которую вы определите в своей схеме, будет иметь приоритет (я думаю:)
  3. создать дочерний контекст вне контекста, содержащего некоторые привязки. Любые ключи, которые вы определили в своем контексте, будут иметь приоритет над исходным контекстом.

Другим решением для обработки события конкретного ключа только для одного компонента SWT, при сохранении схемы по умолчанию для остальных, является добавление прослушивателя (см. this thread ):

final Listener keyDownFilter = new Listener()
{
    private void postKeyEvent( final int type, final char character, final int keyCode )
    {
        final Display display = PlatformUI.getWorkbench().getDisplay();
        final Event event = new Event();
        event.type = type;
        event.character = character;
        event.keyCode = keyCode;
        display.post( event );
    }

    /* (non-Javadoc)
    * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
    */
    public void handleEvent( Event ev )
    {
        if ( ev.widget == RichText.this.editorControl )
        {
            if ( ( ev.keyCode == SWT.CR || ev.keyCode == SWT.KEYPAD_CR ) && ( ev.stateMask & SWT.SHIFT ) == 0 )
            {
                ev.doit = false;
                postKeyEvent( SWT.KeyDown, ( char ) 0, SWT.SHIFT );
                postKeyEvent( SWT.KeyDown, ev.character, ev.keyCode );
                postKeyEvent( SWT.KeyUp, ( char ) 0, SWT.SHIFT );
            }
        }
    }
};

final Display display = PlatformUI.getWorkbench().getDisplay();
display.addFilter( SWT.KeyDown, keyDownFilter );
this.editorControl.addDisposeListener( new DisposeListener()
{
    /* (non-Javadoc)
    * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
    */
    public void widgetDisposed( final DisposeEvent ev )
    {
        display.removeFilter( SWT.KeyDown, keyDownFilter );
    }
} );
0 голосов
/ 02 марта 2018

Это помогло мне с empty.scheme: Поместите это поверх вашего IApplication.start()

public Object start(IApplicationContext context) { 
    // set the default shortcuts
PlatformUI.getPreferenceStore().setDefault(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID, "your.scheme"); //$NON-NLS-1$ 
    // start your app 
} 

, и вам будет присвоена схема по умолчанию.

0 голосов
/ 22 февраля 2010

схема ключей для переопределения Alt

<extension
     point="org.eclipse.ui.bindings">
  <scheme
        id="myscheme"
        name="My Scheme"
        parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
  </scheme>
  <key
        commandId="mycommand"
        contextId="mycontext"
        schemeId="myscheme"
        sequence="Alt+A">
  </key>
  <key
        commandId="mycommand"
        contextId="mycontext"
        schemeId="myscheme"
        sequence="Alt">
  </key>

команда

<extension
     point="org.eclipse.ui.commands">
  <command
        id="mycommand"
        name="My Command">
  </command>

...