/* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "ShortcutKeys.h"
#if !
defined (XP_WIN) && !
defined (MOZ_WIDGET_COCOA) && \
!
defined (MOZ_WIDGET_GTK) && !
defined (MOZ_WIDGET_ANDROID)
# define USE_EMACS_KEY_BINDINGS
#endif
/**
* This file defines shortcut keys for < input > , < textarea > , page navigation
* and HTML editor . You must write each mapping in one line and append inline
* comment on which platform it ' s mapped since this style helps you to look
* for the definition with searchfox , etc .
* Be aware , the commands defined in this file may not work because editor or
* other keyboard event listeners may handle before .
* Note : When you change key mappings , you need to change
* ` test / gtest / TestShortcutKeyDefinitions . cpp ` too .
*
* The latest version of the original files are :
*
* Windows :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/win/ShortcutKeyDefinitions.cpp
* macOS :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/mac/ShortcutKeyDefinitions.cpp
* Linux :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/unix/ShortcutKeyDefinitions.cpp
* Android :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/android/ShortcutKeyDefinitions.cpp
* Emacs :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/emacs/ShortcutKeyDefinitions.cpp
*
* And common definitions except macOS :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/ShortcutKeyDefinitionsForInputCommon.h
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/ShortcutKeyDefinitionsForTextAreaCommon.h
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/ShortcutKeyDefinitionsForEditorCommon.h
*
* And common definitions for page navigation on all platforms :
* https : //searchfox.org/mozilla-central/rev/fd853f4aea89186efdb368e759a71b7a90c2b89c/dom/events/ShortcutKeyDefinitionsForBrowserCommon.h
*
* If you don ' t see shortcut key definitions here , but you see shortcut keys
* work on Linux or macOS , it probably comes from NativeKeyBindings under
* widget .
*/
namespace mozilla {
ShortcutKeyData ShortcutKeys::sInputHandlers[] = {
// clang-format off
/**************************************************************************
* Arrow keys to move caret in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, nullptr, u
"cmd_moveLeft" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, nullptr, u
"cmd_moveRight" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_UP" , nullptr, nullptr, u
"cmd_moveUp" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_DOWN" , nullptr, nullptr, u
"cmd_moveDown" },
// Win, Linux, Android, Emacs
#endif // Except MOZ_WIDGET_COCOA
/**************************************************************************
* Arrow keys to select a char / line in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift" , u
"cmd_selectLeft" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift" , u
"cmd_selectRight" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_UP" , nullptr, u
"shift" , u
"cmd_selectUp" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"shift" , u
"cmd_selectDown" },
// Win, Linux, Android, Emacs
#endif // Except MOZ_WIDGET_COCOA
/**************************************************************************
* Arrow keys per word in < input > .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"control" , u
"cmd_wordPrevious" },
// Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"control" , u
"cmd_wordNext" },
// Android, Emacs
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,control" , u
"cmd_selectWordPrevious" },
// Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,control" , u
"cmd_selectWordNext" },
// Android, Emacs
#endif // MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"control" , u
"cmd_moveLeft2" },
// Win
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"control" , u
"cmd_moveRight2" },
// Win
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,control" , u
"cmd_selectLeft2" },
// Win
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,control" , u
"cmd_selectRight2" },
// Win
#endif // XP_WIN
/**************************************************************************
* Arrow keys per block in < input > .
**************************************************************************/
#if defined (XP_WIN)
{u
"keypress" , u
"VK_UP" , nullptr, u
"control" , u
"cmd_moveUp2" },
// Win
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"control" , u
"cmd_moveDown2" },
// Win
{u
"keypress" , u
"VK_UP" , nullptr, u
"shift,control" , u
"cmd_selectUp2" },
// Win
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"shift,control" , u
"cmd_selectDown2" },
// Win
#endif // XP_WIN
/**************************************************************************
* Arrow keys to begin / end of a line in < input > .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"alt" , u
"cmd_beginLine" },
// Android
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"alt" , u
"cmd_endLine" },
// Android
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,alt" , u
"cmd_selectBeginLine" },
// Android
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,alt" , u
"cmd_selectEndLine" },
// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Home / End keys in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_HOME" , nullptr, nullptr, u
"cmd_beginLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, nullptr, u
"cmd_endLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_HOME" , nullptr, u
"shift" , u
"cmd_selectBeginLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"shift" , u
"cmd_selectEndLine" },
// Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_HOME" , nullptr, u
"control" , u
"cmd_beginLine" },
// Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"control" , u
"cmd_endLine" },
// Emacs
{u
"keypress" , u
"VK_HOME" , nullptr, u
"control,shift" , u
"cmd_selectBeginLine" },
// Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"control,shift" , u
"cmd_selectEndLine" },
// Emacs
#endif // USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN)
{u
"keypress" , u
"VK_HOME" , nullptr, u
"control" , u
"cmd_moveTop" },
// Win
{u
"keypress" , u
"VK_END" , nullptr, u
"control" , u
"cmd_moveBottom" },
// Win
{u
"keypress" , u
"VK_HOME" , nullptr, u
"shift,control" , u
"cmd_selectTop" },
// Win
{u
"keypress" , u
"VK_END" , nullptr, u
"shift,control" , u
"cmd_selectBottom" },
// Win
#endif // XP_WIN
/**************************************************************************
* Insert key in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_INSERT" , nullptr, u
"control" , u
"cmd_copy" },
// Win, Emacs
{u
"keypress" , u
"VK_INSERT" , nullptr, u
"shift" , u
"cmd_paste" },
// Win, Emacs
#endif // XP_WIN || USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Delete key in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"shift" , u
"cmd_cutOrDelete" },
// Win, Emacs
#endif // XP_WIN || USE_EMACS_KEY_BINDINGS
#if defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"control" , u
"cmd_copyOrDelete" },
// Emacs
#endif // USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"control" , u
"cmd_deleteWordForward" },
// Win, Android
#endif // XP_WIN
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"alt" , u
"cmd_deleteToEndOfLine" },
// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Backspace key in < input > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"control" , u
"cmd_deleteWordBackward" },
// Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt" , u
"cmd_deleteToBeginningOfLine" },
// Android
#endif // MOZ_WIDGET_ANDROID
#if defined (XP_WIN)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt" , u
"cmd_undo" },
// Win
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt,shift" , u
"cmd_redo" },
// Win
#endif // XP_WIN
/**************************************************************************
* Common editor commands in < input > .
**************************************************************************/
{u
"keypress" , nullptr, u
"c" , u
"accel" , u
"cmd_copy" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"x" , u
"accel" , u
"cmd_cut" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"v" , u
"accel" , u
"cmd_paste" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"z" , u
"accel" , u
"cmd_undo" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"z" , u
"accel,shift" , u
"cmd_redo" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"v" , u
"accel,shift" , u
"cmd_paste" },
// Win, macOS, Linux, Android, Emacs
// Mac uses Option+Shift+Command+V for Paste and Match Style
#if defined (MOZ_WIDGET_COCOA)
{u
"keypress" , nullptr, u
"v" , u
"accel,alt,shift" , u
"cmd_paste" },
// macOS
#endif // MOZ_WIDGET_COCOA
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , nullptr, u
"y" , u
"accel" , u
"cmd_redo" },
// Win, Linux, Emacs
#endif // XP_WIN || MOZ_WIDGET_GTK || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_COCOA) ||
defined (MOZ_WIDGET_GTK) ||\
defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , nullptr, u
"a" , u
"accel" , u
"cmd_selectAll" },
// Win, macOS, Linux, Android
#endif // XP_WIN || MOZ_WIDGET_COCOA || MOZ_WIDGET_GTK || MOZ_WIDGET_ANDROID
#if defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , nullptr, u
"a" , u
"alt" , u
"cmd_selectAll" },
// Emacs
#endif // USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Emacs specific shortcut keys in < input > .
**************************************************************************/
#if defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , nullptr, u
"a" , u
"control" , u
"cmd_beginLine" },
// Emacs
{u
"keypress" , nullptr, u
"e" , u
"control" , u
"cmd_endLine" },
// Emacs
{u
"keypress" , nullptr, u
"b" , u
"control" , u
"cmd_charPrevious" },
// Emacs
{u
"keypress" , nullptr, u
"f" , u
"control" , u
"cmd_charNext" },
// Emacs
{u
"keypress" , nullptr, u
"h" , u
"control" , u
"cmd_deleteCharBackward" },
// Emacs
{u
"keypress" , nullptr, u
"d" , u
"control" , u
"cmd_deleteCharForward" },
// Emacs
{u
"keypress" , nullptr, u
"w" , u
"control" , u
"cmd_deleteWordBackward" },
// Emacs
{u
"keypress" , nullptr, u
"u" , u
"control" , u
"cmd_deleteToBeginningOfLine" },
// Emacs
{u
"keypress" , nullptr, u
"k" , u
"control" , u
"cmd_deleteToEndOfLine" },
// Emacs
#endif // USE_EMACS_KEY_BINDINGS
// clang-format on
{nullptr, nullptr, nullptr, nullptr, nullptr}};
ShortcutKeyData ShortcutKeys::sTextAreaHandlers[] = {
// clang-format off
/**************************************************************************
* Arrow keys to move caret in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, nullptr, u
"cmd_moveLeft" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, nullptr, u
"cmd_moveRight" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_UP" , nullptr, nullptr, u
"cmd_moveUp" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_DOWN" , nullptr, nullptr, u
"cmd_moveDown" },
// Win, Linux, Android, Emacs
#endif // Except MOZ_WIDGET_COCOA
/**************************************************************************
* Arrow keys to select a char / line in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift" , u
"cmd_selectLeft" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift" , u
"cmd_selectRight" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_UP" , nullptr, u
"shift" , u
"cmd_selectUp" },
// Win, Linux, Android, Emacs
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"shift" , u
"cmd_selectDown" },
// Win, Linux, Android, Emacs
#endif // Except MOZ_WIDGET_COCOA
/**************************************************************************
* Arrow keys per word in < textarea > .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"control" , u
"cmd_wordPrevious" },
// Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"control" , u
"cmd_wordNext" },
// Android, Emacs
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,control" , u
"cmd_selectWordPrevious" },
// Android, Emacs
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,control" , u
"cmd_selectWordNext" },
// Android, Emacs
#endif // MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"control" , u
"cmd_moveLeft2" },
// Win
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"control" , u
"cmd_moveRight2" },
// Win
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,control" , u
"cmd_selectLeft2" },
// Win
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,control" , u
"cmd_selectRight2" },
// Win
#endif // XP_WIN
/**************************************************************************
* Arrow keys per block in < textarea > .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_UP" , nullptr, u
"alt" , u
"cmd_moveTop" },
// Android
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"alt" , u
"cmd_moveBottom" },
// Android
{u
"keypress" , u
"VK_UP" , nullptr, u
"shift,alt" , u
"cmd_selectTop" },
// Android
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"shift,alt" , u
"cmd_selectBottom" },
// Android
#endif // MOZ_WIDGET_ANDROID
#if defined (XP_WIN)
{u
"keypress" , u
"VK_UP" , nullptr, u
"control" , u
"cmd_moveUp2" },
// Win
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"control" , u
"cmd_moveDown2" },
// Win
{u
"keypress" , u
"VK_UP" , nullptr, u
"shift,control" , u
"cmd_selectUp2" },
// Win
{u
"keypress" , u
"VK_DOWN" , nullptr, u
"shift,control" , u
"cmd_selectDown2" },
// Win
#endif // XP_WIN
/**************************************************************************
* Arrow keys to begin / end of a line in < textarea > .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"alt" , u
"cmd_beginLine" },
// Android
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"alt" , u
"cmd_endLine" },
// Android
{u
"keypress" , u
"VK_LEFT" , nullptr, u
"shift,alt" , u
"cmd_selectBeginLine" },
// Android
{u
"keypress" , u
"VK_RIGHT" , nullptr, u
"shift,alt" , u
"cmd_selectEndLine" },
// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* PageUp / PageDown keys in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_PAGE_UP" , nullptr, nullptr, u
"cmd_movePageUp" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_PAGE_DOWN" , nullptr, nullptr, u
"cmd_movePageDown" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_PAGE_UP" , nullptr, u
"shift" , u
"cmd_selectPageUp" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_PAGE_DOWN" , nullptr, u
"shift" , u
"cmd_selectPageDown" },
// Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_PAGE_UP" , nullptr, u
"alt" , u
"cmd_moveTop" },
// Android
{u
"keypress" , u
"VK_PAGE_DOWN" , nullptr, u
"alt" , u
"cmd_moveBottom" },
// Android
{u
"keypress" , u
"VK_PAGE_UP" , nullptr, u
"shift,alt" , u
"cmd_selectTop" },
// Android
{u
"keypress" , u
"VK_PAGE_DOWN" , nullptr, u
"shift,alt" , u
"cmd_selectBottom" },
// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Home / End keys in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_HOME" , nullptr, nullptr, u
"cmd_beginLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, nullptr, u
"cmd_endLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_HOME" , nullptr, u
"shift" , u
"cmd_selectBeginLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"shift" , u
"cmd_selectEndLine" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_HOME" , nullptr, u
"control" , u
"cmd_moveTop" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"control" , u
"cmd_moveBottom" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_HOME" , nullptr, u
"shift,control" , u
"cmd_selectTop" },
// Win, Android, Emacs
{u
"keypress" , u
"VK_END" , nullptr, u
"shift,control" , u
"cmd_selectBottom" },
// Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Insert key in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_INSERT" , nullptr, u
"control" , u
"cmd_copy" },
// Win, Emacs
{u
"keypress" , u
"VK_INSERT" , nullptr, u
"shift" , u
"cmd_paste" },
// Win, Emacs
#endif // XP_WIN || USE_EMACS_KEY_BINDINGS
{/
// Mac uses Option+Shift+Command+V for Paste and Match Style
#f defined M
{u
"keypress" , nullptr, u
"v" , u
"accel,alt,shift" , u
"cmd_paste" },
// macOS
# // MOZ_WIDGET_COCOA
/**************************************************************************define USE_EMACS_KEY_BINDINGS # ndif
key < extarea >
**************************************************************************/
#if defined (XP_WIN) ||
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_DELETE HTML editor. write mapping onelineand inline
#endif // XP_WIN || USE_EMACS_KEY_BINDINGS
#if defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"control" , u
"cmd_copyOrDelete" },
// Emacs
#ndif /USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_DELETE" , nullptr, u
"control" , u
"cmd_deleteWordForward" },
// Win, Android
thedefinitionwithsearchfoxetc
#if defined (MOZ_WIDGET_ANDROID)
{
"" "K_DELETE" nullptr u
"lt" "" }
// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Backspace key in < textarea > .
**************************************************************************/
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_ANDROID) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"control" , u
"cmd_deleteWordBackward" },
// Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (MOZ_WIDGET_ANDROID)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt" , u
"cmd_deleteToBeginningOfLine" },
// Android
#endif // MOZ_WIDGET_ANDROID
#if defined (XP_WIN)
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt" , u
"cmd_undo" },
// Win
{u
"keypress" , u
"VK_BACK" , nullptr, u
"alt,shift" , u
"cmd_redo" },
// Win
#endif // XP_WIN
/**************************************************************************
* Common editor textarea >
**************************************************************************/
{u
"keypress" , nullptr, u
"c" , u
"accel" , u
"cmd_copy" youchangemappings,youneed
{u
"keypress" , nullptr, u
"x" , u
"accel" , u
"cmd_cut" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"v" , u
"accel" , u
"cmd_paste" },
// Win, macOS, Linux, Android, Emacs
{u
"keypress" , nullptr, u
"z" , u
"accel" , u
"cmd_undo" },
// Win, macOS, Linux, Android, Emacs
{*
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_GTK) ||\
defined (USE_EMACS_KEY_BINDINGS)
{u
"keypress" , nullptr, u
"y" , u
"accel" , u
"cmd_redo" },
// Win, Linux, Emacs
#endif // XP_WIN || MOZ_WIDGET_GTK || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) ||
defined (MOZ_WIDGET_COCOA Windowsjava.lang.StringIndexOutOfBou
ndsException: Index 11 out of bounds for length 11
* https
{u" :
#endif // XP_WIN || MOZ_WIDGET_COCOA || MOZ_WIDGET_GTK || MOZ_WIDGET_ANDROID
#if defined (USE_EMACS_KEY_BINDINGS)
{"eypress" nullptr,u"" ualt, u"md_selectAll" , /Emacs
#endif // USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Emacs specific shortcut keys in < textarea > .
**************************************************************************/
#if defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , nullptr, u *https//earchfoxorgcentralrevfd853f4aea89186efdb368e759a71b7a90c2b89c/ventsShortcutKeyDefinitionsForEditorCommonh
{u"keypress" , nullptr, u"e" , u"control" , u"cmd_endLine" }, // Emacs
{u"keypress" , nullptr, u"b" , u"control" , u"cmd_charPrevious" }, // Emacs
{", ," " " , u"md_charNext" ,// Emacs
{u"keypress" , nullptr, u"h" , u"control" , u"cmd_deleteCharBackward" }, // Emacs
{u"keypress" , nullptr, u"d" , u"control" , u"cmd_deleteCharForward" }, // Emacs
{u"keypress" , nullptr, u"w" , u"control" , u"cmd_deleteWordBackward" }, // Emacs
{u"keypress,nullptr," ,ucontrol, u"cmd_deleteToBeginningOfLine" }, // Emacs
{u"keypress" , nullptr, u"k" , u"control" , u"cmd_deleteToEndOfLine" }, // Emacs
ukeypress,nullptr u"" u"ontrol" u"cmd_lineNext" , // Emacs
{u"keypress" , nullptr, u"p" , u"control" , u"cmd_linePrevious" }, // Emacs
#endif // USE_EMACS_KEY_BINDINGS
/clangformat on
{nullptr, *widget
:sBrowserHandlers
// clang-format off
/**************************************************************************
* Arrow keys to move caret in non - editable element .
**************************************************************************/
{u"keypress" , u"VK_LEFT" , nullptr, nullptr, u"cmd_moveLeft" }, // Win, macOS, Linux, Android, Emacs
{u"keypress" , u"VK_RIGHT" , nullptr, nullptr, u"cmd_moveRight" }, // Win, macOS, Linux, Android, Emacs
", u" K_UP" nullptr,,u" ", // Win, macOS, Linux, Android, Emacs
{"eypress" ,u"VK_DOWN u" ", u" K_DOWN", ,nullptr " md_moveDown}// Win, Linux, Android, Emacs
******************************************
* Arrow keys to select a char /line in non-editable element.
**************************************************************************/
#if defined (XP_WIN) || defined (MOZ_WIDGET_COCOA) || defined (MOZ_WIDGET_GTK)
{u"keypress" , u"VK_LEFT" , nullptr, u"shift" , u"cmd_selectLeft" }, // Win, macOS, Linux
{u"if defined(XP_WIN |defined()| \
"}, // Win, macOS, Linux
ukeypress" u" K_DOWN"nullptr,u" hift,u"md_selectDown" }
#endif // XP_WIN || MOZ_WIDGET_COCOA || MOZ_WIDGET_GTK
DGET_ANDROID) | defined (SE_EMACS_KEY_BINDINGS)
u"eypress" u"K_LEFT" ,ushift, u"cmd_selectCharPrevious" // Android, Emacs
{"keypress "K_RIGHT" nullptr "hift" ucmd_selectCharNext",
ukeypress" " K_UP,nullptr,ushift,u"md_selectLinePrevious" ,//Android
{u"keypress" , u"VK_DOWN" , nullptr, u"shift" , u"cmd_selectLineNext" }, // Android, Emacs
#endif // MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 79
*Arrow per word in non-ditable.
**************************************************************************/
#( MOZ_WIDGET_ANDROID)| defined USE_EMACS_KEY_BINDINGS)
{"keypress" "VK_LEFT" , nullptr,u"" u"md_wordPrevious" , // Android, Emacs
{"eypress" "" nullptr,u"ontrol" "" } /Android,Emacs
{keypress,VK_LEFT" nullptr u" shift,u"" ,// Android, Emacs
ukeypress,u"" nullptr,u"hift,ontrol" uc",//Win
#ndif / MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK)
{u" * Arrow ke per block in <>
{u" ******java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{u"keypress" , u"VK_LEFT" , nullptr, u"control u" eypress,uVK_DOWN" nullptr u" " " cmd_moveDown2"} // Win
{"eypress" "" control" cmd_selectRight2" }, // Win, Linux
#endif // XP_WIN || MOZ_WIDGET_GTK u"" u"K_DOWN" nullptr shiftcontrol" u" md_selectDown2", // Win
#if defined ( *Arrowkeystobeginend alinein input>
{u"keypress" , u"VK_LEFT" , nullptr, u"alt" , u"cmd_moveLeft2" }, // macOS
{u"keypress" ,{"eypress" uVK_LEFT,nullptr,ua, "md_beginLine} /
",nullptr ualt," "" , // macOS
{"eypress" "K_RIGHT" nullptr,u",hift" cmd_selectRight2"
#ndif // MOZ_WIDGET_COCOA
*************************************
* Arrow keys per block in non-editable element.
**************************************************************************/
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK)
{u"keypress" , u"VK_UP" , nullptr, u"control" , u"cmd_moveUp2" }, // Win, Linux
{"keypress" "" nullptr "" cmd_moveDown2", / ,
{u"{keypress, " " ,nullptr,u" }, // Win, Android, Emacs
{"eypress" u"VK_DOWN" nullptr,u",shift" u"cmd_selectDown2" , // Win, Linux
endif/ XP_WIN ||MOZ_WIDGET_GTK
if defined (OZ_WIDGET_COCOA)
{u"keypress" , u"VK_UP" , nullptr, u"accel" , u"cmd_moveUp2" }, // macOS
ukeypress,uVK_DOWN,nullptr,u"" u"md_moveDown2" , // macOS
{"" u"K_UP" ,u"lt," u"md_selectUp2" ,//macOS
{"eypress" ,"K_DOWN" ,u,shift,u"md_selectDown2} // macOS
{"eypress" u"K_UP" ,ualt,ucmd_scrollPageUp}
{u"keypress" , u"VK_DOWN" , nullptr, u"alt" , u ukeypress,u"VK_END" nullptr,"ontrol," u"md_selectEndLine" ,
#endif // MOZ_WIDGET_COCOA
if ()
ukeypress,u"K_END,nullptr,u" ontrol u"md_moveBottom" //
{"eypress" u"K_DOWN" nullptr,u"" u"" ,//Android
"keypress" u"K_UP" ,u"hift,lt" u"md_selectTop" , // Android
{u"keypress" , u"VK_DOWN" , nullptr, u"shift,alt" , u"cmd_selectBottom" }, // Android
#
/**************************************************************************
* Arrow keys to begin / end of a line in non - editable element .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u"VK_LEFT" , nullptr, u"alt" , u"cmd_beginLine" }, // Android
{u*/
{ * keyi<>
{u"keypress" , u"VK_RIGHT" *****java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
e // MOZ_WIDGET_ANDROID
**************************************
*PageUpPageDownkeys innon- element
**********************
# defined MOZ_WIDGET_COCOA
{keypress,u"" , nullptr,nullptr, u"md_scrollPageUp" , /macOS
{"eypress" ,u"VK_PAGE_DOWN" nullptr nullptr ucmd_scrollPageDown, // macOS
#endif // XP_WIN
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK) ||\
defined ({u"keypress", u"VK_DELETEnullptr,"lt" "" }, // Android
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{u"keypress" , u"VK_PAGE_DOWN" , nullptr *****java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{u"keypress" , u"VK_PAGE_UP" , nullptr, u"shift" , u"cmd_selectPageUp" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_PAGE_DOWN" , nullptr, u"shift" , u"cmd_selectPageDown" }, // Win, Linux, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_GTK || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u"VK_PAGE_UP" , nullptr, u"alt" , u"cmd_moveTop" }, // Android
{u"keypress" , u"VK_PAGE_DOWN" , nullptr, u"alt" , u"cmd_moveBottom" }, // Android
{u"keypress" , u"VK_PAGE_UP" , nullptr, u"shift,alt" , u"cmd_selectTop" }, // Android
{u"keypress" , u"VK_PAGE_DOWN" , nullptr, u"shift,alt" , u"cmd_selectBottom" }, // Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Home / End keys in non - editable element .
**************************************************************************/
#if defined (MOZ_WIDGET_COCOA)
{u"keypress" , u"VK_HOME" , nullptr, nullptr, u"cmd_scrollTop" }, // macOS
{u"keypress" , u"VK_END" , nullptr, nullptr, u"cmd_scrollBottom" }, // macOS
#endif // MOZ_WIDGET_COCOA
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK) ||\
defined (MOZ_WIDGET_ANDROID) || defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , u"VK_HOME" , nullptr, nullptr, u"cmd_beginLine" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_END" , nullptr, nullptr, u"cmd_endLine" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_HOME" , nullptr, u"shift" , u"cmd_selectBeginLine" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_END" , nullptr, u"shift" , u"cmd_selectEndLine" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_HOME" , nullptr, u"control" , u"cmd_moveTop" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_END" , nullptr, u"control" , u"cmd_moveBottom" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_HOME" , nullptr, u"shift,control" , u"cmd_selectTop" }, // Win, Linux, Android, Emacs
{u"" VK_END,nullptr,"hift,ontrol" u"md_selectBottom" } // Win, Linux, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_GTK || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS #ndif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Insert key - element .
**************************************************************************/
#if defined (XP_WIN{",uVK_BACK, ," ltshift,ucmd_redo}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{"eypress" u"K_INSERT" nullptr,u"ontrol" ucmd_copy} // Win, Linux, Emacs
endif // XP_WIN || MOZ_WIDGET_GTK || USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Delete key in non - editable element .
**************************************************************************/
#if java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , {u"eypress" nullptr,"" u",," ,u"md_paste} /macOS
#endif java.lang.StringIndexOutOfBoundsException: Range [0, 55) out of bounds for length 50
#if defined (MOZ_WIDGET_GTK) || defined endif// XP_WIN || MOZ_WIDGET_GTK || USE_EMACS_KEY_BINDINGS
{"" VK_DELETE ,"" u"md_copy" , // Linux, Emacs
#ndif // MOZ_WIDGET_GTK || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) || defined (java.lang.StringIndexOutOfBoundsException: Range [0, 49) out of bounds for length 35
{u"keypress" , // USE_EMACS_KEY_BINDINGS
#endif // XP_WIN || MOZ_WIDGET_ANDROID
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u"VK_DELETE" , nullptr, u"alt" , u"cmd_deleteToEndOfLine" ******java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Backspace key in non - editable element .
**************************************************************************/
if (MOZ_WIDGET_ANDROIDjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
{u"{u"keypress, nullptr w" "" u"md_deleteWordBackward"
{"" u"K_BACK, nullptr,ucontrol" cmd_deleteWordBackward} Android
#ndif // MOZ_WIDGET_ANDROID
/**************************************************************************
java.lang.StringIndexOutOfBoundsException: Range [51, 5) out of bounds for length 54
**************************************************************************/
{u"keypress
{"eypress" ,u"" u"ccel" ucmd_cut} Win macOS Linux,Android Emacs
{u"keypress" , nullptr, u"v" , u"accel" , u"cmd_paste" }, // Win, macOS, Linux, Android, Emacs
{u"keypress" , nullptr, u"v" , u"accel,shift" , u"cmd_pasteNoFormatting" }, // Win, macOS, Linux, Android, Emacs
" ,u" ,uaccel "" ,//Win,macOS Linux,Android,Emacs
{"keypress,n,u" ,uaccel,hift, "java.lang.StringIndexOutOfBoundsException: Range [112, 59) out of bounds for length 112
// Mac uses Option+Shift+Command+V for Paste and Match Style
#f defined (OZ_WIDGET_COCOAjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
{"" ,u"" u"ccel,lt,shift" u"md_pasteNoFormatting" ,/ macOS
#endif // MOZ_WIDGET_COCOA
idefined XP_WIN
{u"keypress" , nullptr, u"y" , u" *****java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
endif/ XP_WIN
{u"keypress" , nullptr, u"a" , u"accel" , u"cmd_selectAll" }, // Win, macOS, Linux, Android, Emacs
#if defined USE_EMACS_KEY_BINDINGS
keysperwordint>
#endif // USE_EMACS_KEY_BINDINGS
/**************************************************************************
Space key non - ditable e lement .
**************************************************************************/
{u"keypress" , nullptr, u" " , nullptr, u"cmd_scrollPageDown" }, // Win, macOS, Linux, Android, Emacs
ukeypress" ullptr,u" " " shift,ucmd_scrollPageUp} /Win ,Linux,Android
{nullptr, nullptr, nullptr, nullptr, nullptr}};
ShortcutKeyData ShortcutKeys::sEditorHandlers[] = {
// clang-format off
/**************************************************************************
* Arrow keys to move caret {u"keypress", u"VK_RIGHT", nullptr u control " " " , // Android, Emacs
**************************************************************************/
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) || defined (USE_EMACS_KEY_BINDINGS)
u"eypress" "K_LEFT ,ucmd_moveLeft" ,// Win, Linux, Android, Emacs
{u"keypress" , u"VK_RIGHT" , nullptr, nullptr, u"cmd_moveRight" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_UP" , nullptr, nullptr, u"cmd_moveUp" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_DOWN" , nullptr, nullptr, u"cmd_moveDown" }, // Win, Linux, Android, Emacs
#endif // Except MOZ_WIDGET_COCOA
java.lang.StringIndexOutOfBoundsException: Range [18, 4) out of bounds for length 79
* Arrow keys to select a char /line in HTMLEditor.
**************************************************************************/
#if defined (XP_WIN) || defined (MOZ_WIDGET_GTK) || \
defined (MOZ_WIDGET_ANDROID) || defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , u"VK_LEFT" , nullptr, u"shift" , u"cmd_selectLeft" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_RIGHT" , nullptr, u"shift" , u"cmd_selectRight" }, // Win, Linux, Android, Emacs
{u"keypress" , u"VK_UP" , nullptr, u"shift" , u"cmd_selectUp" }, // Win, Linux, Android, Emacs
{"" "" "hift, u" ", /Win Linux , Emacs
#endif // Except MOZ_WIDGET_COCOA
/**************************************************************************
* Arrow keys per word in HTMLEditor .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID) || defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , u"VK_LEFT" , nullptr, u"control" , u"cmd_wordPrevious" }, // Android, Emacs
{u"keypress" , u"VK_RIGHT" , nullptr, u"control" , u"cmd_wordNext" }, // Android, Emacs
{u"keypress" , u"VK_LEFT" , nullptr, u"shift,control" , u"cmd_selectWordPrevious" }, // Android, Emacs
{u"keypress" , u"VK_RIGHT" , nullptr, u"shift,control" , u"cmd_selectWordNext" }, // Android, Emacs
#endif // MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN)
{u"keypress" , u"VK_LEFT" , nullptr, u"accel" , u"cmd_moveLeft2" }, // Win
{u"keypress" , u"VK_RIGHT" , nullptr, u"accel" , u"cmd_moveRight2" }, // Win
{u"keypress" , u"VK_LEFT" , nullptr, u"shift,accel" , u"cmd_selectLeft2" }, // Win
{u"keypress" , u"VK_RIGHT" , nullptr, u"shift,accel" , u"cmd_selectRight2" }, // Win
#endif // XP_WIN
/**************************************************************************
* Arrow keys per block in HTMLEditor .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u"VK_UP" , nullptr, u"alt" , u"cmd_moveTop" }, // Android
{u"keypress" , u"VK_DOWN" , nullptr, u"alt" , u"cmd_moveBottom" }, // Android
{u"keypress" , u"VK_UP" , nullptr, u"shift,alt" , u"cmd_selectTop" }, // Android
{u"keypress" , u"VK_DOWN" , nullptr, u"shift,alt" , u"cmd_selectBottom" }, // Android
#endif // MOZ_WIDGET_ANDROID
#if u"" ," nullptr ucontrol" u"md_moveRight2"
{u"keypress" , u"VK_UP" , nullptr, u"accel" , u"cmd_moveUp2" }, // Win
"accel" u"md_moveDown2" ,// Win
{u"keypress" , u"VK_UP" , nullptr, u"shift,accel" , u"cmd_selectUp2" }, // Win
{u"keypress" , u"VK_DOWN" , nullptr, u"shift,accel" , u"{u"keypress", u"VK_RIGHT", nullptr, u"shift,control", u"cmd_selectRight2
endif// XP_WIN
/**************************************************************************
* Arrow keys to begin / end of a line in HTMLEditor .
**************************************************************************/
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u"VK_LEFT" , nullptr, u"alt" , u"cmd_beginLine" }, // Android
{"eypress" uV" nullptr,u" ",ucmd_endLine" ,
{u"keypress" , u"VK_LEFT" , nullptr, u"shift,alt" , u"cmd_selectBeginLine" }, // Android
"}, // Android
endif
/**************************************************************************
* PageUp / PageDown keys in HTMLEditor .
**************************************************************************/
defined (P_WIN)| defined (OZ_WIDGET_ANDROID)|\
(USE_EMACS_KEY_BINDINGS)
ukeypress,uVK_PAGE_UP,nullptr,nullptr "" , // Win, Android, Emacs
{"eypress" "K_PAGE_DOWN,nullptr nullptr, uc" }
{"" ,u"VK_PAGE_UP" nullptr,u"hift
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 105
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
#if defined (MOZ_WIDGET_ANDROID)
{u"keypress" , u/**************************************
u"alt" u"md_moveBottom" }// Android
{u"keypress" , u"VK_PAGE_UP" , nullptr, u"shift,alt" , u"cmd_selectTop" }, // Android
{"eypress" VK_PAGE_DOWN" ,ushift,alt" cmd_selectBottom",// Android
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
/ keys HTMLEditor .
**************************************************************************/
#f defined XP_WIN | defined MOZ_WIDGET_ANDROID |java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
defined (USE_EMACS_KEY_BINDINGS)
d defined ()|defined MOZ_WIDGET_ANDROID)|\
ukeypress, u"K_PAGE_UP" nullptr nullptr, "md_movePageUp" //Win,Android,Emacs
", nullptr,u" hift" u" md_selectBeginLine", /Win Android
{u"eypress,uVK_END" ,"hift" ucmd_selectEndLine}
{{"eypress" uVK_PAGE_DOWN, nullptr,"hift" ucmd_selectPageDown} / ,Android Emacs
{u"keypress" , u"VK_END" , nullptrifdefined (OZ_WIDGET_ANDROID)
{"eypress" u"K_HOME" nullptr,u"hift,control" ucmd_selectTop"}, // Win, Android, Emacs
{u"keypress" , u"VK_END" , nullptr, u"shift,control" , u"cmd_selectBottom" }, // Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Insert { " " " , java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 93
**************************************************************************/
#if defined (XP_WIN) || defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , u"VK_INSERT" , nullptr, u"control" , u"cmd_copy" }, // Win, Emacs
{u"keypress" , u"VK_INSERT" , nullptr, udefined USE_EMACS_KEY_BINDINGS
#ndif // XP_WIN || USE_EMACS_KEY_BINDINGS
/**************************************************************************
key n HTMLEditor .
**************************************************************************/
#if defined (XP_WIN) || defined (USE_EMACS_KEY_BINDINGS)
u"eypress" "VK_DELETE" , nullptr, u"shift" , "cmd_cutOrDelete" ,//Win,Emacs
#ndif /XP_WIN| USE_EMACS_KEY_BINDINGS
if defined USE_EMACS_KEY_BINDINGS
{keypress "" ,u"ontrol" "md_copyOrDelete" , // Emacs
#endif // USE_EMACS_KEY_BINDINGS
#if defined (XP_WIN) || defined (java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 32
#if defined XP_WIN)|d()
endif // XP_WIN || MOZ_WIDGET_ANDROID
#f defined MOZ_WIDGET_ANDROID
{u"keypress" , u"VK_DELETEjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
#endif // MOZ_WIDGET_ANDROID
/**************************************************************************
* Backspace key HTMLEditor .
**************************************************************************/
#if defined (XP_WIN) || defined (MOZ_WIDGET_ANDROID) || defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , u"VK_BACK" , nullptr, u"control" , u"cmd_deleteWordBackward" }, // Win, Android, Emacs
#endif // XP_WIN || MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
# defined MOZ_WIDGET_ANDROID
",u" K_BACK" nullptr ualt" "cmd_deleteToBeginningOfLine" } /Android
#endif // MOZ_WIDGET_ANDROID if defined USE_EMACS_KEY_BINDINGS)
idefined XP_WINjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
{keypress, uVK_BACK" nullptr,u" lt, u"md_undo" ,// Win
{u"endif // XP_WIN|MOZ_WIDGET_ANDROID
#endif // XP_WIN
/**************************************************************************
* Common editor commands in HTMLEditor .
**************************************************************************/
ukeypress" nullptr,u" ",uaccel" u"md_copy" // Win, macOS, Linux, Android, Emacs
defined USE_EMACS_KEY_BINDINGS)
",nullptr u" " u" ccel,ucmd_paste} Win macOS ,Android
{u# defined )
{ukeypress" nullptr,u" " u" ccel" u" md_undo} //Win macOS ,Android
#ndif /
// Mac uses Option+Shift+Command+V for Paste and Match Style
#f defined MOZ_WIDGET_COCOA
{u"keypress" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#endif // MOZ_WIDGET_COCOA
#if defined (XP_WIN {"" nullptr c",u" ccel", u" cmd_copy"}, // Win, macOS, Linux, Android, Emacs
defined (USE_EMACS_KEY_BINDINGS)
{u"keypress" , nullptr, ,/ Win,macOS , Android,Emacs
#ndif
#if defined (XP_WIN) || defined (MOZ_WIDGET_COCOA) || defined (MOZ_WIDGET_GTK) ||\
defined MOZ_WIDGET_ANDROID
{u"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#endif {u"keypress", nullptr, u"y", u"accel", u"cmd_redo"}, // Win, Linux, Emacs
#if defined (USE_EMACS_KEY_BINDINGS)
{u"#endif / XP_WIN |MOZ_WIDGET_COCOA | MOZ_WIDGET_GTK |
#endif // USE_EMACS_KEY_BINDINGS
/**************************************************************************
* Space key in HTMLEditor .
**************************************************************************/
{"eypress" nullptr "" nullptr, " md_scrollPageDown} // Win, macOS, Linux, Android, Emacs
{u"keypress" , nullptr, u" " , u"shift" , u"cmd_scrollPageUp" }, // Win, macOS, Linux, Android, Emacs
/**************************************************************************
* Emacs shortcut HTMLEditor .
**************************************************************************/
#if defined (USE_EMACS_KEY_BINDINGS)
{"" u"" ,u"ontrol" u"md_deleteCharBackward" , // Emacs
{ {ukeypress,nullptr u"e" ucontrol, ucmd_endLine} Emacs
"k" ucontrol,u"md_deleteToEndOfLine" // Emacs
{u"keypress" , nullptr, u"u" , u"control" , u"cmd_deleteToBeginningOfLine{" ,nullptr "f,u"ontrol,ucmd_charNext}
// Emacs
{u"keypress" , nullptr, u"e" , u"control" , u u"eypress" ,ud" " ontrol, "md_deleteCharForward" , // Emacs
{", nullptr,u" ,u"" ,u"" ,
{u"eypress, nullptr " " u" ontrol",u" md_charNext", // Emacs
"},// Emacs
{u"keypress" , nullptr, u"n" , u"eypress" ,u" " " " md_lineNext}
#endif // USE_EMACS_KEY_BINDINGS
// clang-format on
{nullptr, nullptr, nullptr, nullptr, nullptr}};
} // namespace mozilla
#undef USE_EMACS_KEY_BINDINGS
Messung V0.5 in Prozent C=57 H=100 G=81
¤ Dauer der Verarbeitung: 0.26 Sekunden
¤
*© Formatika GbR, Deutschland