# Working patch for Portage Overlay pf4public www-client/ungoogled-chromium # Copy to /etc/portage/patches/www-client/ungoogled-chromium/ and emerge like normal --- a/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc +++ b/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc @@ -144,34 +144,34 @@ bool RenderViewContextMenuViews::GetAcce return true; case IDC_CONTENT_CONTEXT_UNDO: - *accel = ui::Accelerator(ui::VKEY_Z, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_Z, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_REDO: // TODO(jcampan): should it be Ctrl-Y? *accel = ui::Accelerator(ui::VKEY_Z, - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_CUT: - *accel = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_X, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_COPY: - *accel = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_C, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_PASTE: - *accel = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE: *accel = ui::Accelerator(ui::VKEY_V, - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_SELECTALL: - *accel = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_A, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_ROTATECCW: @@ -187,11 +187,11 @@ bool RenderViewContextMenuViews::GetAcce return true; case IDC_PRINT: - *accel = ui::Accelerator(ui::VKEY_P, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_P, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_RELOAD: - *accel = ui::Accelerator(ui::VKEY_R, ui::EF_CONTROL_DOWN); + *accel = ui::Accelerator(ui::VKEY_R, ui::EF_PLATFORM_ACCELERATOR); return true; case IDC_CONTENT_CONTEXT_SAVEAVAS: --- a/chrome/common/extensions/command.cc +++ b/chrome/common/extensions/command.cc @@ -104,7 +104,7 @@ ui::Accelerator ParseImpl(const std::str // Mac the developer has to specify MacCtrl). Therefore we treat this // as Command. modifiers |= ui::EF_COMMAND_DOWN; -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) } else if (platform_key == values::kKeybindingPlatformDefault) { // If we see "Command+foo" in the Default section it can mean two // things, depending on the platform: --- a/third_party/blink/renderer/core/editing/editing_behavior.cc +++ b/third_party/blink/renderer/core/editing/editing_behavior.cc @@ -44,7 +44,7 @@ const unsigned kCtrlKey = WebInputEvent: const unsigned kAltKey = WebInputEvent::kAltKey; const unsigned kShiftKey = WebInputEvent::kShiftKey; const unsigned kMetaKey = WebInputEvent::kMetaKey; -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) // Aliases for the generic key defintions to make kbd shortcuts definitions more // readable on OS X. const unsigned kOptionKey = kAltKey; @@ -87,7 +87,7 @@ struct DomKeyKeyDownEntry { const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = { {VKEY_LEFT, 0, "MoveLeft"}, {VKEY_LEFT, kShiftKey, "MoveLeftAndModifySelection"}, -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) {VKEY_LEFT, kOptionKey, "MoveWordLeft"}, {VKEY_LEFT, kOptionKey | kShiftKey, "MoveWordLeftAndModifySelection"}, #else @@ -96,7 +96,7 @@ const KeyboardCodeKeyDownEntry kKeyboard #endif {VKEY_RIGHT, 0, "MoveRight"}, {VKEY_RIGHT, kShiftKey, "MoveRightAndModifySelection"}, -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) {VKEY_RIGHT, kOptionKey, "MoveWordRight"}, {VKEY_RIGHT, kOptionKey | kShiftKey, "MoveWordRightAndModifySelection"}, #else @@ -109,7 +109,7 @@ const KeyboardCodeKeyDownEntry kKeyboard {VKEY_DOWN, 0, "MoveDown"}, {VKEY_DOWN, kShiftKey, "MoveDownAndModifySelection"}, {VKEY_NEXT, kShiftKey, "MovePageDownAndModifySelection"}, -#if !defined(OS_MAC) +#if !defined(OS_MAC) && !defined(OS_LINUX) {VKEY_UP, kCtrlKey, "MoveParagraphBackward"}, {VKEY_UP, kCtrlKey | kShiftKey, "MoveParagraphBackwardAndModifySelection"}, {VKEY_DOWN, kCtrlKey, "MoveParagraphForward"}, @@ -119,18 +119,18 @@ const KeyboardCodeKeyDownEntry kKeyboard #endif {VKEY_HOME, 0, "MoveToBeginningOfLine"}, {VKEY_HOME, kShiftKey, "MoveToBeginningOfLineAndModifySelection"}, -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) {VKEY_PRIOR, kOptionKey, "MovePageUp"}, {VKEY_NEXT, kOptionKey, "MovePageDown"}, #endif -#if !defined(OS_MAC) +#if !defined(OS_MAC) && !defined(OS_LINUX) {VKEY_HOME, kCtrlKey, "MoveToBeginningOfDocument"}, {VKEY_HOME, kCtrlKey | kShiftKey, "MoveToBeginningOfDocumentAndModifySelection"}, #endif {VKEY_END, 0, "MoveToEndOfLine"}, {VKEY_END, kShiftKey, "MoveToEndOfLineAndModifySelection"}, -#if !defined(OS_MAC) +#if !defined(OS_MAC) && !defined(OS_LINUX) {VKEY_END, kCtrlKey, "MoveToEndOfDocument"}, {VKEY_END, kCtrlKey | kShiftKey, "MoveToEndOfDocumentAndModifySelection"}, #endif @@ -144,7 +144,7 @@ const KeyboardCodeKeyDownEntry kKeyboard {VKEY_BACK, kCtrlKey, "DeleteWordBackward"}, {VKEY_DELETE, kCtrlKey, "DeleteWordForward"}, #endif -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) {'B', kCommandKey, "ToggleBold"}, {'I', kCommandKey, "ToggleItalic"}, #else @@ -167,14 +167,14 @@ const KeyboardCodeKeyDownEntry kKeyboard #if !defined(OS_MAC) // On OS X, we pipe these back to the browser, so that it can do menu item // blinking. - {'C', kCtrlKey, "Copy"}, - {'V', kCtrlKey, "Paste"}, - {'V', kCtrlKey | kShiftKey, "PasteAndMatchStyle"}, - {'X', kCtrlKey, "Cut"}, - {'A', kCtrlKey, "SelectAll"}, - {'Z', kCtrlKey, "Undo"}, - {'Z', kCtrlKey | kShiftKey, "Redo"}, - {'Y', kCtrlKey, "Redo"}, + {'C', kCommandKey, "Copy"}, + {'V', kCommandKey, "Paste"}, + {'V', kCommandKey | kShiftKey, "PasteAndMatchStyle"}, + {'X', kCommandKey, "Cut"}, + {'A', kCommandKey, "SelectAll"}, + {'Z', kCommandKey, "Undo"}, + {'Z', kCommandKey | kShiftKey, "Redo"}, + {'Y', kCommandKey, "Redo"}, #endif #if defined(OS_WIN) {VKEY_BACK, kAltKey, "Undo"}, @@ -276,19 +276,19 @@ bool EditingBehavior::ShouldInsertCharac // unexpected behaviour if (ch < ' ') return false; -#if defined(OS_LINUX) || defined(OS_CHROMEOS) +//#if defined(OS_LINUX) || defined(OS_CHROMEOS) // According to XKB map no keyboard combinations with ctrl key are mapped to // printable characters, however we need the filter as the DomKey/text could // contain printable characters. - if (event.ctrlKey()) - return false; -#elif !defined(OS_WIN) + //if (event.ctrlKey()) + // return false; +#if !defined(OS_WIN) // Don't insert ASCII character if ctrl w/o alt or meta is on. // On Mac, we should ignore events when meta is on (Command-). if (ch < 0x80) { if (event.ctrlKey() && !event.altKey()) return false; -#if defined(OS_MAC) +#if defined(OS_MAC) || defined(OS_LINUX) if (event.metaKey()) return false; #endif --- a/ui/base/window_open_disposition.cc +++ b/ui/base/window_open_disposition.cc @@ -17,7 +17,7 @@ WindowOpenDisposition DispositionFromCli bool shift_key, WindowOpenDisposition disposition_for_current_tab) { // MacOS uses meta key (Command key) to spawn new tabs. -#if defined(OS_APPLE) +#if defined(OS_APPLE) || defined(OS_LINUX) if (middle_button || meta_key) #else if (middle_button || ctrl_key) --- a/ui/events/base_event_utils.cc +++ b/ui/events/base_event_utils.cc @@ -23,6 +23,8 @@ const int kSystemKeyModifierMask = EF_AL #elif defined(OS_APPLE) // Alt modifier is used to input extended characters on Mac. const int kSystemKeyModifierMask = EF_COMMAND_DOWN; +#elif defined(OS_LINUX) +const int kSystemKeyModifierMask = EF_COMMAND_DOWN; #else const int kSystemKeyModifierMask = EF_ALT_DOWN; #endif // !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_APPLE) --- a/ui/events/event_constants.h +++ b/ui/events/event_constants.h @@ -50,7 +50,9 @@ enum EventFlags { #if defined(OS_APPLE) EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN, #else - EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN, + //EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN, + // TODO(hparadiz): Build Configurable EF_PLATFORM_ACCELERATOR from chrome://flags + EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN, #endif }; --- a/ui/views/controls/textfield/textfield.cc +++ b/ui/views/controls/textfield/textfield.cc @@ -249,9 +249,9 @@ Textfield::Textfield() // These allow BrowserView to pass edit commands from the Chrome menu to us // when we're focused by simply asking the FocusManager to // ProcessAccelerator() with the relevant accelerators. - AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN)); - AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN)); - AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN)); + AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_PLATFORM_ACCELERATOR)); + AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_PLATFORM_ACCELERATOR)); + AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR)); #endif // Sometimes there are additional ignored views, such as the View representing @@ -2145,46 +2145,47 @@ ui::TextEditCommand Textfield::GetComman #endif const bool control = event.IsControlDown() || event.IsCommandDown(); const bool alt = event.IsAltDown() || event.IsAltGrDown(); + const bool command = event.IsCommandDown(); switch (event.key_code()) { case ui::VKEY_Z: if (control && !shift && !alt) return ui::TextEditCommand::UNDO; - return (control && shift && !alt) ? ui::TextEditCommand::REDO + return (command && shift && !alt) ? ui::TextEditCommand::REDO : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_Y: - return (control && !alt) ? ui::TextEditCommand::REDO + return (command && !alt) ? ui::TextEditCommand::REDO : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_A: - return (control && !alt) ? ui::TextEditCommand::SELECT_ALL + return (command && !alt) ? ui::TextEditCommand::SELECT_ALL : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_X: - return (control && !alt) ? ui::TextEditCommand::CUT + return (command && !alt) ? ui::TextEditCommand::CUT : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_C: - return (control && !alt) ? ui::TextEditCommand::COPY + return (command && !alt) ? ui::TextEditCommand::COPY : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_V: - return (control && !alt) ? ui::TextEditCommand::PASTE + return (command && !alt) ? ui::TextEditCommand::PASTE : ui::TextEditCommand::INVALID_COMMAND; case ui::VKEY_RIGHT: // Ignore alt+right, which may be a browser navigation shortcut. if (alt) return ui::TextEditCommand::INVALID_COMMAND; if (!shift) { - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT : ui::TextEditCommand::MOVE_RIGHT; } - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION : ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION; case ui::VKEY_LEFT: // Ignore alt+left, which may be a browser navigation shortcut. if (alt) return ui::TextEditCommand::INVALID_COMMAND; if (!shift) { - return control ? ui::TextEditCommand::MOVE_WORD_LEFT + return command ? ui::TextEditCommand::MOVE_WORD_LEFT : ui::TextEditCommand::MOVE_LEFT; } - return control ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION + return command ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION : ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION; case ui::VKEY_HOME: if (shift) { @@ -2255,12 +2256,12 @@ ui::TextEditCommand Textfield::GetComman if (shift && control) return ui::TextEditCommand::DELETE_TO_END_OF_LINE; #endif - if (control) + if (command) return ui::TextEditCommand::DELETE_WORD_FORWARD; return shift ? ui::TextEditCommand::CUT : ui::TextEditCommand::DELETE_FORWARD; case ui::VKEY_INSERT: - if (control && !shift) + if (command && !shift) return ui::TextEditCommand::COPY; return (shift && !control) ? ui::TextEditCommand::PASTE : ui::TextEditCommand::INVALID_COMMAND;