macos-hotkeys-on-linux.patch 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. # Working patch for Portage Overlay pf4public www-client/ungoogled-chromium
  2. # Copy to /etc/portage/patches/www-client/ungoogled-chromium/ and emerge like normal
  3. --- a/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc
  4. +++ b/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc
  5. @@ -144,39 +144,39 @@ bool RenderViewContextMenuViews::GetAcce
  6. return true;
  7. case IDC_CONTENT_CONTEXT_UNDO:
  8. - *accel = ui::Accelerator(ui::VKEY_Z, ui::EF_CONTROL_DOWN);
  9. + *accel = ui::Accelerator(ui::VKEY_Z, ui::EF_PLATFORM_ACCELERATOR);
  10. return true;
  11. case IDC_CONTENT_CONTEXT_REDO:
  12. // TODO(jcampan): should it be Ctrl-Y?
  13. *accel = ui::Accelerator(ui::VKEY_Z,
  14. - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
  15. + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR);
  16. return true;
  17. case IDC_CONTENT_CONTEXT_CUT:
  18. - *accel = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN);
  19. + *accel = ui::Accelerator(ui::VKEY_X, ui::EF_PLATFORM_ACCELERATOR);
  20. return true;
  21. case IDC_CONTENT_CONTEXT_COPY:
  22. - *accel = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN);
  23. + *accel = ui::Accelerator(ui::VKEY_C, ui::EF_PLATFORM_ACCELERATOR);
  24. return true;
  25. case IDC_CONTENT_CONTEXT_INSPECTELEMENT:
  26. *accel = ui::Accelerator(ui::VKEY_I,
  27. - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
  28. + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR);
  29. return true;
  30. case IDC_CONTENT_CONTEXT_PASTE:
  31. - *accel = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
  32. + *accel = ui::Accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR);
  33. return true;
  34. case IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE:
  35. *accel = ui::Accelerator(ui::VKEY_V,
  36. - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
  37. + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR);
  38. return true;
  39. case IDC_CONTENT_CONTEXT_SELECTALL:
  40. - *accel = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN);
  41. + *accel = ui::Accelerator(ui::VKEY_A, ui::EF_PLATFORM_ACCELERATOR);
  42. return true;
  43. case IDC_CONTENT_CONTEXT_ROTATECCW:
  44. @@ -192,11 +192,11 @@ bool RenderViewContextMenuViews::GetAcce
  45. return true;
  46. case IDC_PRINT:
  47. - *accel = ui::Accelerator(ui::VKEY_P, ui::EF_CONTROL_DOWN);
  48. + *accel = ui::Accelerator(ui::VKEY_P, ui::EF_PLATFORM_ACCELERATOR);
  49. return true;
  50. case IDC_RELOAD:
  51. - *accel = ui::Accelerator(ui::VKEY_R, ui::EF_CONTROL_DOWN);
  52. + *accel = ui::Accelerator(ui::VKEY_R, ui::EF_PLATFORM_ACCELERATOR);
  53. return true;
  54. case IDC_CONTENT_CONTEXT_SAVEAVAS:
  55. --- a/chrome/common/extensions/command.cc
  56. +++ b/chrome/common/extensions/command.cc
  57. @@ -104,7 +104,7 @@ ui::Accelerator ParseImpl(const std::str
  58. // Mac the developer has to specify MacCtrl). Therefore we treat this
  59. // as Command.
  60. modifiers |= ui::EF_COMMAND_DOWN;
  61. -#if defined(OS_MAC)
  62. +#if defined(OS_MAC) || defined(OS_LINUX)
  63. } else if (platform_key == values::kKeybindingPlatformDefault) {
  64. // If we see "Command+foo" in the Default section it can mean two
  65. // things, depending on the platform:
  66. --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
  67. +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
  68. @@ -1437,7 +1437,7 @@ void PepperPluginInstanceImpl::SelectAll
  69. // TODO(https://crbug.com/836074) |kPlatformModifier| should be
  70. // |ui::EF_PLATFORM_ACCELERATOR| (|ui::EF_COMMAND_DOWN| on Mac).
  71. - static const ui::EventFlags kPlatformModifier = ui::EF_CONTROL_DOWN;
  72. + static const ui::EventFlags kPlatformModifier = ui::EF_COMMAND_DOWN;
  73. // Synthesize a ctrl + a key event to send to the plugin and let it sort out
  74. // the event. See also https://crbug.com/739529.
  75. ui::KeyEvent char_event(L'A', ui::VKEY_A, ui::DomCode::NONE,
  76. --- a/third_party/blink/renderer/core/editing/editing_behavior.cc
  77. +++ b/third_party/blink/renderer/core/editing/editing_behavior.cc
  78. @@ -45,7 +45,7 @@ const unsigned kCtrlKey = WebInputEvent:
  79. const unsigned kAltKey = WebInputEvent::kAltKey;
  80. const unsigned kShiftKey = WebInputEvent::kShiftKey;
  81. const unsigned kMetaKey = WebInputEvent::kMetaKey;
  82. -#if defined(OS_MAC)
  83. +#if defined(OS_MAC) || defined(OS_LINUX)
  84. // Aliases for the generic key defintions to make kbd shortcuts definitions more
  85. // readable on OS X.
  86. const unsigned kOptionKey = kAltKey;
  87. @@ -88,7 +88,7 @@ struct DomKeyKeyDownEntry {
  88. const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  89. {VKEY_LEFT, 0, "MoveLeft"},
  90. {VKEY_LEFT, kShiftKey, "MoveLeftAndModifySelection"},
  91. -#if defined(OS_MAC)
  92. +#if defined(OS_MAC) || defined(OS_LINUX)
  93. {VKEY_LEFT, kOptionKey, "MoveWordLeft"},
  94. {VKEY_LEFT, kOptionKey | kShiftKey, "MoveWordLeftAndModifySelection"},
  95. #else
  96. @@ -97,7 +97,7 @@ const KeyboardCodeKeyDownEntry kKeyboard
  97. #endif
  98. {VKEY_RIGHT, 0, "MoveRight"},
  99. {VKEY_RIGHT, kShiftKey, "MoveRightAndModifySelection"},
  100. -#if defined(OS_MAC)
  101. +#if defined(OS_MAC) || defined(OS_LINUX)
  102. {VKEY_RIGHT, kOptionKey, "MoveWordRight"},
  103. {VKEY_RIGHT, kOptionKey | kShiftKey, "MoveWordRightAndModifySelection"},
  104. #else
  105. @@ -110,7 +110,7 @@ const KeyboardCodeKeyDownEntry kKeyboard
  106. {VKEY_DOWN, 0, "MoveDown"},
  107. {VKEY_DOWN, kShiftKey, "MoveDownAndModifySelection"},
  108. {VKEY_NEXT, kShiftKey, "MovePageDownAndModifySelection"},
  109. -#if !defined(OS_MAC)
  110. +#if !defined(OS_MAC) && !defined(OS_LINUX)
  111. {VKEY_UP, kCtrlKey, "MoveParagraphBackward"},
  112. {VKEY_UP, kCtrlKey | kShiftKey, "MoveParagraphBackwardAndModifySelection"},
  113. {VKEY_DOWN, kCtrlKey, "MoveParagraphForward"},
  114. @@ -120,18 +120,18 @@ const KeyboardCodeKeyDownEntry kKeyboard
  115. #endif
  116. {VKEY_HOME, 0, "MoveToBeginningOfLine"},
  117. {VKEY_HOME, kShiftKey, "MoveToBeginningOfLineAndModifySelection"},
  118. -#if defined(OS_MAC)
  119. +#if defined(OS_MAC) || defined(OS_LINUX)
  120. {VKEY_PRIOR, kOptionKey, "MovePageUp"},
  121. {VKEY_NEXT, kOptionKey, "MovePageDown"},
  122. #endif
  123. -#if !defined(OS_MAC)
  124. +#if !defined(OS_MAC) && !defined(OS_LINUX)
  125. {VKEY_HOME, kCtrlKey, "MoveToBeginningOfDocument"},
  126. {VKEY_HOME, kCtrlKey | kShiftKey,
  127. "MoveToBeginningOfDocumentAndModifySelection"},
  128. #endif
  129. {VKEY_END, 0, "MoveToEndOfLine"},
  130. {VKEY_END, kShiftKey, "MoveToEndOfLineAndModifySelection"},
  131. -#if !defined(OS_MAC)
  132. +#if !defined(OS_MAC) && !defined(OS_LINUX)
  133. {VKEY_END, kCtrlKey, "MoveToEndOfDocument"},
  134. {VKEY_END, kCtrlKey | kShiftKey, "MoveToEndOfDocumentAndModifySelection"},
  135. #endif
  136. @@ -145,7 +145,7 @@ const KeyboardCodeKeyDownEntry kKeyboard
  137. {VKEY_BACK, kCtrlKey, "DeleteWordBackward"},
  138. {VKEY_DELETE, kCtrlKey, "DeleteWordForward"},
  139. #endif
  140. -#if defined(OS_MAC)
  141. +#if defined(OS_MAC) || defined(OS_LINUX)
  142. {'B', kCommandKey, "ToggleBold"},
  143. {'I', kCommandKey, "ToggleItalic"},
  144. #else
  145. @@ -168,14 +168,14 @@ const KeyboardCodeKeyDownEntry kKeyboard
  146. #if !defined(OS_MAC)
  147. // On OS X, we pipe these back to the browser, so that it can do menu item
  148. // blinking.
  149. - {'C', kCtrlKey, "Copy"},
  150. - {'V', kCtrlKey, "Paste"},
  151. - {'V', kCtrlKey | kShiftKey, "PasteAndMatchStyle"},
  152. - {'X', kCtrlKey, "Cut"},
  153. - {'A', kCtrlKey, "SelectAll"},
  154. - {'Z', kCtrlKey, "Undo"},
  155. - {'Z', kCtrlKey | kShiftKey, "Redo"},
  156. - {'Y', kCtrlKey, "Redo"},
  157. + {'C', kCommandKey, "Copy"},
  158. + {'V', kCommandKey, "Paste"},
  159. + {'V', kCommandKey | kShiftKey, "PasteAndMatchStyle"},
  160. + {'X', kCommandKey, "Cut"},
  161. + {'A', kCommandKey, "SelectAll"},
  162. + {'Z', kCommandKey, "Undo"},
  163. + {'Z', kCommandKey | kShiftKey, "Redo"},
  164. + {'Y', kCommandKey, "Redo"},
  165. #endif
  166. #if defined(OS_WIN)
  167. {VKEY_BACK, kAltKey, "Undo"},
  168. @@ -274,19 +274,19 @@ bool EditingBehavior::ShouldInsertCharac
  169. // unexpected behaviour
  170. if (ch < ' ')
  171. return false;
  172. -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
  173. +//#if defined(OS_LINUX) || defined(OS_CHROMEOS)
  174. // According to XKB map no keyboard combinations with ctrl key are mapped to
  175. // printable characters, however we need the filter as the DomKey/text could
  176. // contain printable characters.
  177. - if (event.ctrlKey())
  178. - return false;
  179. -#elif !defined(OS_WIN)
  180. + //if (event.ctrlKey())
  181. + // return false;
  182. +#if !defined(OS_WIN)
  183. // Don't insert ASCII character if ctrl w/o alt or meta is on.
  184. // On Mac, we should ignore events when meta is on (Command-<x>).
  185. if (ch < 0x80) {
  186. if (event.ctrlKey() && !event.altKey())
  187. return false;
  188. -#if defined(OS_MAC)
  189. +#if defined(OS_MAC) || defined(OS_LINUX)
  190. if (event.metaKey())
  191. return false;
  192. #endif
  193. --- a/ui/base/window_open_disposition.cc
  194. +++ b/ui/base/window_open_disposition.cc
  195. @@ -17,7 +17,7 @@ WindowOpenDisposition DispositionFromCli
  196. bool shift_key,
  197. WindowOpenDisposition disposition_for_current_tab) {
  198. // MacOS uses meta key (Command key) to spawn new tabs.
  199. -#if defined(OS_APPLE)
  200. +#if defined(OS_APPLE) || defined(OS_LINUX)
  201. if (middle_button || meta_key)
  202. #else
  203. if (middle_button || ctrl_key)
  204. --- a/ui/events/base_event_utils.cc
  205. +++ b/ui/events/base_event_utils.cc
  206. @@ -23,6 +23,8 @@ const int kSystemKeyModifierMask = EF_AL
  207. #elif defined(OS_APPLE)
  208. // Alt modifier is used to input extended characters on Mac.
  209. const int kSystemKeyModifierMask = EF_COMMAND_DOWN;
  210. +#elif defined(OS_LINUX)
  211. +const int kSystemKeyModifierMask = EF_COMMAND_DOWN;
  212. #else
  213. const int kSystemKeyModifierMask = EF_ALT_DOWN;
  214. #endif // !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_APPLE)
  215. --- a/ui/events/event_constants.h
  216. +++ b/ui/events/event_constants.h
  217. @@ -50,7 +50,9 @@ enum EventFlags {
  218. #if defined(OS_APPLE)
  219. EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN,
  220. #else
  221. - EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN,
  222. + //EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN,
  223. + // TODO(hparadiz): Build Configurable EF_PLATFORM_ACCELERATOR from chrome://flags
  224. + EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN,
  225. #endif
  226. };
  227. --- a/ui/views/controls/textfield/textfield.cc
  228. +++ b/ui/views/controls/textfield/textfield.cc
  229. @@ -253,9 +253,9 @@ Textfield::Textfield()
  230. // These allow BrowserView to pass edit commands from the Chrome menu to us
  231. // when we're focused by simply asking the FocusManager to
  232. // ProcessAccelerator() with the relevant accelerators.
  233. - AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN));
  234. - AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN));
  235. - AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN));
  236. + AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_PLATFORM_ACCELERATOR));
  237. + AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_PLATFORM_ACCELERATOR));
  238. + AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR));
  239. #endif
  240. // Sometimes there are additional ignored views, such as the View representing
  241. @@ -2160,46 +2160,47 @@ ui::TextEditCommand Textfield::GetComman
  242. #endif
  243. const bool control = event.IsControlDown() || event.IsCommandDown();
  244. const bool alt = event.IsAltDown() || event.IsAltGrDown();
  245. + const bool command = event.IsCommandDown();
  246. switch (event.key_code()) {
  247. case ui::VKEY_Z:
  248. if (control && !shift && !alt)
  249. return ui::TextEditCommand::UNDO;
  250. - return (control && shift && !alt) ? ui::TextEditCommand::REDO
  251. + return (command && shift && !alt) ? ui::TextEditCommand::REDO
  252. : ui::TextEditCommand::INVALID_COMMAND;
  253. case ui::VKEY_Y:
  254. - return (control && !alt) ? ui::TextEditCommand::REDO
  255. + return (command && !alt) ? ui::TextEditCommand::REDO
  256. : ui::TextEditCommand::INVALID_COMMAND;
  257. case ui::VKEY_A:
  258. - return (control && !alt) ? ui::TextEditCommand::SELECT_ALL
  259. + return (command && !alt) ? ui::TextEditCommand::SELECT_ALL
  260. : ui::TextEditCommand::INVALID_COMMAND;
  261. case ui::VKEY_X:
  262. - return (control && !alt) ? ui::TextEditCommand::CUT
  263. + return (command && !alt) ? ui::TextEditCommand::CUT
  264. : ui::TextEditCommand::INVALID_COMMAND;
  265. case ui::VKEY_C:
  266. - return (control && !alt) ? ui::TextEditCommand::COPY
  267. + return (command && !alt) ? ui::TextEditCommand::COPY
  268. : ui::TextEditCommand::INVALID_COMMAND;
  269. case ui::VKEY_V:
  270. - return (control && !alt) ? ui::TextEditCommand::PASTE
  271. + return (command && !alt) ? ui::TextEditCommand::PASTE
  272. : ui::TextEditCommand::INVALID_COMMAND;
  273. case ui::VKEY_RIGHT:
  274. // Ignore alt+right, which may be a browser navigation shortcut.
  275. if (alt)
  276. return ui::TextEditCommand::INVALID_COMMAND;
  277. if (!shift) {
  278. - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT
  279. + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT
  280. : ui::TextEditCommand::MOVE_RIGHT;
  281. }
  282. - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
  283. + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
  284. : ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION;
  285. case ui::VKEY_LEFT:
  286. // Ignore alt+left, which may be a browser navigation shortcut.
  287. if (alt)
  288. return ui::TextEditCommand::INVALID_COMMAND;
  289. if (!shift) {
  290. - return control ? ui::TextEditCommand::MOVE_WORD_LEFT
  291. + return command ? ui::TextEditCommand::MOVE_WORD_LEFT
  292. : ui::TextEditCommand::MOVE_LEFT;
  293. }
  294. - return control ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
  295. + return command ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
  296. : ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION;
  297. case ui::VKEY_HOME:
  298. if (shift) {
  299. @@ -2270,12 +2271,12 @@ ui::TextEditCommand Textfield::GetComman
  300. if (shift && control)
  301. return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
  302. #endif
  303. - if (control)
  304. + if (command)
  305. return ui::TextEditCommand::DELETE_WORD_FORWARD;
  306. return shift ? ui::TextEditCommand::CUT
  307. : ui::TextEditCommand::DELETE_FORWARD;
  308. case ui::VKEY_INSERT:
  309. - if (control && !shift)
  310. + if (command && !shift)
  311. return ui::TextEditCommand::COPY;
  312. return (shift && !control) ? ui::TextEditCommand::PASTE
  313. : ui::TextEditCommand::INVALID_COMMAND;