Adding hotkeys to WEBCON BPS 2025
Overview
When I upgraded applications for WEBCON BPS 2025 I wanted to use the new features like:
- Folders in the navigation
- Navigation grid
- Dashboard wide filters
This required a lot of testing and saving. The most annoying thing was, that I needed to scroll up to save a dashboard. This was the beginning of the idea to add hotkeys to WEBCON BPS.
Info: I added a user voice to always display the toolbar with the save button of dashboard. This is under review (2025-03-16).
Implementation
The biggest problem is, that we still don’t have an option to load global JavaScript
. While I created a post Global JS, the only supported options to load the JavaScript via a form rule or by adding this to a dashboard with an HTML element. I’ve opted for the form rule. Therefore, we need to:
- Add a global forum rule
- Add the form rule to a HTML field.
The hotkeys are simulating a user clicking on the user interface. This is done by accessing the user interface object with the correct path/id. Based on my experience, it may happen, that these paths/ids will change over time. Therefore, I already prepared the script so that it’s easier to update these for later version. The drawback is, that the form rule requires the Common functions form rule.
Info: I’m quite sure that I added a user voice for loading global JavaScript but I can’t find it.
Info: I’ve tested this only with Microsoft Edge.
Global form rule
You can download the JS for this form rule from the repository and paste it to the new form rule. Don’t forget to switch the type to JavaScript mode
.
Rule name: HotKeys
Description: Provides hotkeys for saving, editing, showing the history and opening the preview instance.
Edit mode: JavaScript mode

HTML field
You can invoke the common and hotkey form rule from an existing HTML field or create a new one with the below lines.
<script>
InvokeRule(#{BRUX:1360:ID}#);
InvokeRule(#{BRUX:2338:ID}#);
</script>

Usage
The hotkeys will be available after loading a workflow instance with the HTML field. Opening the preview is enough, but the hotkeys will only be available in the current tab. All hot keys require a combination of ctrl+shift
. This should prevent conflicting with most of the browser hotkeys.
If you want to role this out to all users, I would add this to all workflow instances. If you only want to use it for yourself to speed up report / dashboard editing, you could create a custom process.
Saving
You can use the hotkey ctrl+shift+s
and ctrl+shift+q
for triggering save and related actions.
- Saving an instance
- Saving the dashboard
- Saving the report
- Saving (apply) dashboard element modifications
If added ctrl+shift+q
as an alternative because of Web Capture.
Info: Some dashboard elements only have a close function. You can use ctrl+shift+c
to close these.
Editing
You can use the hotkey ctrl+shift+e
for triggering edit related.
- Edit and cancel editing an instance
- Editing a report
- Saving the report
- Saving (apply) dashboard element modifications
There’s no hotkey for activating/deactivating the edit mode of the portal.

Closing
The hotkey ctrl+shift+c
will trigger the closing / cancelling of a displayed element.
- Close a preview
- Close navigation grid
- Close a report tile / datasource opened from a report tile
- Cancel editing a dashboard tile
Instance History
You can display and instance history using ctrl+shift+h
. You can also use this key to return to the instance.
Open preview instance
If the workflow instance preview is displayed you can use ctrl+shift+g
to open it.
Edges integrated Web Capture
{: .notice–info}Info: I’ve yet to find a way to release the hotkeys. Even if the web capture is disabled. The key combination is swallowed by the browser.
I wasn’t aware that Edge / Chromium had a native web capturing tool which is triggered by pressing ctrl+shift+s
.

The only way I discovered to disable this is by changing the registry. The worst of it is, that it this requires administrative privileges. Therefore I added the ctrl+shift+q
combination. You can use the below PowerShell script to disable it, if you have administrative privileges or can persuade someone to execute it on your machine.
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (!$currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Must be executed in administrator mode" -ForegroundColor Red
}
else {
$registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Edge"
$propertyName = "WebCaptureEnabled"
$propertyValue = 0
# Create the registry key if it doesn't exist
if (-not (Test-Path $registryPath)) {
New-Item -Path $registryPath -Force | Out-Null
}
# Set the registry value
Set-ItemProperty -Path $registryPath -Name $propertyName -Value $propertyValue -Type DWord
Write-Host "WebCaptureEnabled set to $propertyValue"
}
# Keep the window open after execution
Pause
Script modification
Event listeners are registered only ones
The following code prevents that the event listeners are registered multiple times
// Prevents the script from running multiple times
window.dkrSPAproperties = window.dkrSPAproperties || {};
if (!window.dkrSPAproperties.hotkeysLoaded) {
If you are updating the script, you will have to reload the whole page. Using the refresh button in an instance or opening another instance won’t have any effect.
Adding support for other versions
If you are not yet on 2025, you could modify the source code. You can copy the existing version
object and add a new one with your version or 0.0.0.0
dkr.hotkeys.VersionDependingValues = [
{
version: '2025.1.1.1',
values: {
selectors: {
formEditButton: '#EditToolbarButton',
reportEditButton: 'button.report__settings-toolbar-button',
saveButton: 'i.ms-Icon--Save',
historyButton: '#HistoryToolbarButton',
backToInstanceFromHistoryButton: '#HistoryBackToElementButton',
closeModalButton: 'button.modal-button[data-key="Close"]',
closeReportEditButton: '#closeSweConfigButton',
dismissSidebarButton: '.sidebar-dash-header__buttons i[class*="icon-ic_fluent_dismiss"]',
dismissPreviewSidebarButton: '.webcon-sidebar-dash__header-buttons i[class*="icon-ic_fluent_dismiss"]',
dashboardAcceptButton: 'button[data-name="accept"]',
dashboardSaveButton: 'button.modal-button[data-key="Save"]',
openInNewWindowButton: 'i.ms-Icon--OpenInNewWindow'
}
}
}
This is an example from the missing comment handler.
dkr.missingCommentHandler.VersionDependingValues = [
{
version: '0.0.0.0',
values: {
'errorContainerSelector': '.form-error-modal div.form-errors-panel__errors-container__error',
'buttonStyle':'webcon-button animated standard-focus form-error-modal__close-button modal-button th-button-default webcon-button--padding-default standard-focus'
}
}, {
version: '2023.1.3.202',
values: {
'errorContainerSelector': '.form-error-modal div.form-errors-panel__errors-container',
'buttonStyle':'webcon-button animated standard-focus form-error-modal__close-button modal-button th-button-default webcon-button--padding-default standard-focus'
}
}
, {
version: '2024.1.1.1',
values: {
'errorContainerSelector': '.form-error-modal div.error-list__errors-container',
'buttonStyle':'webcon-button animated standard-focus form-error-modal__close-button modal-button th-button-default webcon-button--padding-default standard-focus'
}
}, {
version: '2025.1.1.1',
values: {
'errorContainerSelector': '.form-error-modal div.error-list__errors-container',
'buttonStyle':'webcon-ui button button--primary button--medium toolbar-button__button'
}
}
];
//#endregion
Download
You can find the full and a minified JS version here.
If you are interested in the fact, that there’s a minified version at all, you can take a look at the post Bandwidth usage.
Comments