Как рекомендовано в этой теме :
Создайте свою собственную схему и добавьте необходимые комбинации клавиш. В настройку INI-файла добавьте эту строку:
org.eclipse.ui/KEY_CONFIGURATION_ID = <your scheme id>
См. Назначения клавиш .
альтернативный текст http://www.vogella.de/articles/EclipseCommands/images/keybinding30.gif
как Пол Вебстер говорит: :
Вы можете переопределить ярлык одним из 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 );
}
} );