Keyboard support in Angular Rich text editor component
14 Oct 202417 minutes to read
The Rich Text Editor has full keyboard accessibility that includes shortcuts to open and other actions with toolbar items, drop-down lists and dialogs.
HTML formation shortcut key
You can use the following key shortcuts when the Rich Text Editor renders with HTML edit mode.
Actions | Keyboard shortcuts |
---|---|
Toolbar focus | Alt + f10 |
Insert link | Ctrl + k |
Insert image | Ctrl + Shift + i |
Insert audio | Ctrl + Shift + a |
Insert video | Ctrl + Alt + v |
Insert table | Ctrl + Shift + e |
Undo | Ctrl + z |
Redo | Ctrl + y |
Copy | Ctrl + c |
Cut | Ctrl + x |
Paste | Ctrl + v |
Bold | Ctrl + b |
Italic | Ctrl + i |
Underline | Ctrl + u |
Strikethrough | Ctrl + Shift + s |
Inline Code | Ctrl + ` |
Uppercase | Ctrl + Shift + u |
Lowercase | Ctrl + Shift + l |
Superscript | Ctrl + Shift + = |
Subscript | Ctrl + = |
Indents | Ctrl + ] |
Outdents | Ctrl + [ |
HTML source | Ctrl + Shift + h |
Fullscreen | Ctrl + Shift + f |
Exit Fullscreen | Esc |
Justify center | Ctrl + e |
Justify full | Ctrl + j |
Justify left | Ctrl + l |
Justify right | Ctrl + r |
Clear format | Ctrl + Shift + r |
Ordered list | Ctrl + Shift + o |
Unordered list | Ctrl + Alt + o |
Format Painter Copy | Alt + Shift + c |
Format Painter Paste | Alt + Shift + v |
Format Painter Escape | Esc |
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RichTextEditorAllModule } from '@syncfusion/ej2-angular-richtexteditor'
import { DialogModule } from '@syncfusion/ej2-angular-popups'
import { Component, ViewChild } from '@angular/core';
import { RichTextEditorComponent, ToolbarService, HtmlEditorService, ImageService, QuickToolbarService, LinkService, FormatPainterService } from '@syncfusion/ej2-angular-richtexteditor';
@Component({
imports: [
RichTextEditorAllModule,
DialogModule
],
standalone: true,
selector: 'app-root',
template:`<ejs-richtexteditor #defaultRTE id='defaultRTE' [toolbarSettings]='tools' (create)='onCreate($event)'></ejs-richtexteditor>`,
providers: [ToolbarService, HtmlEditorService, ImageService, QuickToolbarService, LinkService, FormatPainterService ]
})
export class AppComponent {
@ViewChild('defaultRTE') rteObj: RichTextEditorComponent | undefined;
public tools = {
items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',
'FontName', 'FontSize', 'FontColor', 'BackgroundColor',
'LowerCase', 'UpperCase', '|',
'Formats', 'Alignments', 'OrderedList', 'UnorderedList',
'Outdent', 'Indent', '|',
'CreateLink', 'Image', '|', 'FormatPainter', 'ClearFormat', 'Print',
'SourceCode', 'FullScreen', '|', 'Undo', 'Redo']
};
onCreate(e: any) {
document.onkeyup = function (e) {
if (e.altKey && e.keyCode === 84 /* t */) {
// press alt+t to focus the component.
(this as any).rteObj.focusIn();
}
}
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Markdown formation shortcut key
You can use the following key shortcuts when the Rich Text Editor renders with Markdown edit mode
Actions | Keyboard shortcuts |
---|---|
Toolbar focus | Alt + f10 |
Insert link | Ctrl + k |
Insert image | Ctrl + Shift + i |
Insert table | Ctrl + Shift + e |
Undo | Ctrl + z |
Redo | Ctrl + y |
Copy | Ctrl + c |
Cut | Ctrl + x |
Paste | Ctrl + v |
Bold | Ctrl + b |
Italic | Ctrl + i |
Strikethrough | Ctrl + Shift + s |
Uppercase | Ctrl + Shift + u |
Lowercase | Ctrl + Shift + l |
Superscript | Ctrl + Shift + = |
Subscript | Ctrl + = |
Fullscreen | Ctrl + Shift + f |
Ordered list | Ctrl + Shift + o |
Unordered list | Ctrl + Alt + o |
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RichTextEditorAllModule } from '@syncfusion/ej2-angular-richtexteditor'
import { DialogModule } from '@syncfusion/ej2-angular-popups'
import { Component, ViewChild } from '@angular/core';
import { ToolbarService, LinkService, ImageService, MarkdownEditorService, RichTextEditorComponent} from '@syncfusion/ej2-angular-richtexteditor';
@Component({
imports: [
RichTextEditorAllModule,
DialogModule
],
standalone: true,
selector: 'app-root',
template:`<ejs-richtexteditor #defaultRTE id='defaultRTE' [toolbarSettings]='tools' [editorMode]='mode'(create)='onCreate($event)'></ejs-richtexteditor>`,
providers: [ToolbarService, LinkService, ImageService, MarkdownEditorService]
})
export class AppComponent {
@ViewChild('defaultRTE') rteObj: RichTextEditorComponent | undefined;
public tools = {
items: ['Bold', 'Italic', 'StrikeThrough', '|',
'Formats', 'OrderedList', 'UnorderedList', '|',
'CreateLink', 'Image', '|','Undo', 'Redo']
};
public mode = 'Markdown';
onCreate(e: any) {
document.onkeyup = function (e) {
if (e.altKey && e.keyCode === 84 /* t */) {
// press alt+t to focus the component.
(this as any).rteObj.focusIn();
}
}
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Custom key config
You can able to customize the key config for the keyboard interaction of Rich Text Editor, using keyConfig
property.
In the below sample, you have customize the bold, italic, underline toolbar action with ctrl+alt+b, ctrl+alt+i and ctrl+alt+u respectively.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RichTextEditorAllModule } from '@syncfusion/ej2-angular-richtexteditor'
import { DialogModule } from '@syncfusion/ej2-angular-popups'
import { Component, ViewChild } from '@angular/core';
import { ToolbarService, LinkService, ImageService, HtmlEditorService, RichTextEditorComponent} from '@syncfusion/ej2-angular-richtexteditor';
@Component({
imports: [
RichTextEditorAllModule,
DialogModule
],
standalone: true,
selector: 'app-root',
template:`<ejs-richtexteditor #defaultRTE id='defaultRTE' [toolbarSettings]='tools' [keyConfig]='keyConfig' (create)='onCreate($event)'></ejs-richtexteditor>`,
providers: [ToolbarService, LinkService, ImageService, HtmlEditorService]
})
export class AppComponent {
@ViewChild('defaultRTE') rteObj: RichTextEditorComponent | undefined;
public tools = {
items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',
'FontName', 'FontSize', 'FontColor', 'BackgroundColor',
'LowerCase', 'UpperCase', '|',
'Formats', 'Alignments', 'OrderedList', 'UnorderedList',
'Outdent', 'Indent', '|',
'CreateLink', 'Image', '|', 'ClearFormat', 'Print',
'SourceCode', 'FullScreen', '|', 'Undo', 'Redo']
};
public keyConfig = {
'copy': 'ctrl+1',
'cut': 'ctrl+2',
'paste': 'ctrl+3'
}
onCreate(e: any) {
document.onkeyup = function (e) {
if (e.altKey && e.keyCode === 84 /* t */) {
// press alt+t to focus the component.
(this as any).rteObj.focusIn();
}
}
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));