macos-hotkeys-on-linux.patch 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. diff --git 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
  2. index 8202df66a..277934322 100644
  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. @@ -145,34 +145,34 @@ bool RenderViewContextMenuViews::GetAcceleratorForCommandId(
  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_PASTE:
  26. - *accel = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
  27. + *accel = ui::Accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR);
  28. return true;
  29. case IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE:
  30. *accel = ui::Accelerator(ui::VKEY_V,
  31. - ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
  32. + ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR);
  33. return true;
  34. case IDC_CONTENT_CONTEXT_SELECTALL:
  35. - *accel = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN);
  36. + *accel = ui::Accelerator(ui::VKEY_A, ui::EF_PLATFORM_ACCELERATOR);
  37. return true;
  38. case IDC_CONTENT_CONTEXT_ROTATECCW:
  39. @@ -188,16 +188,16 @@ bool RenderViewContextMenuViews::GetAcceleratorForCommandId(
  40. return true;
  41. case IDC_PRINT:
  42. - *accel = ui::Accelerator(ui::VKEY_P, ui::EF_CONTROL_DOWN);
  43. + *accel = ui::Accelerator(ui::VKEY_P, ui::EF_PLATFORM_ACCELERATOR);
  44. return true;
  45. case IDC_RELOAD:
  46. - *accel = ui::Accelerator(ui::VKEY_R, ui::EF_CONTROL_DOWN);
  47. + *accel = ui::Accelerator(ui::VKEY_R, ui::EF_PLATFORM_ACCELERATOR);
  48. return true;
  49. case IDC_CONTENT_CONTEXT_SAVEAVAS:
  50. case IDC_SAVE_PAGE:
  51. - *accel = ui::Accelerator(ui::VKEY_S, ui::EF_CONTROL_DOWN);
  52. + *accel = ui::Accelerator(ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR);
  53. return true;
  54. case IDC_CONTENT_CONTEXT_EXIT_FULLSCREEN: {
  55. @@ -230,7 +230,7 @@ bool RenderViewContextMenuViews::GetAcceleratorForCommandId(
  56. }
  57. case IDC_VIEW_SOURCE:
  58. - *accel = ui::Accelerator(ui::VKEY_U, ui::EF_CONTROL_DOWN);
  59. + *accel = ui::Accelerator(ui::VKEY_U, ui::EF_PLATFORM_ACCELERATOR);
  60. return true;
  61. case IDC_CONTENT_CONTEXT_EMOJI:
  62. diff --git a/third_party/blink/renderer/core/editing/editing_behavior.cc b/third_party/blink/renderer/core/editing/editing_behavior.cc
  63. index 6b7a35b5b..4e0611418 100644
  64. --- a/third_party/blink/renderer/core/editing/editing_behavior.cc
  65. +++ b/third_party/blink/renderer/core/editing/editing_behavior.cc
  66. @@ -44,7 +44,7 @@ const unsigned kCtrlKey = WebInputEvent::kControlKey;
  67. const unsigned kAltKey = WebInputEvent::kAltKey;
  68. const unsigned kShiftKey = WebInputEvent::kShiftKey;
  69. const unsigned kMetaKey = WebInputEvent::kMetaKey;
  70. -#if BUILDFLAG(IS_MAC)
  71. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  72. // Aliases for the generic key defintions to make kbd shortcuts definitions more
  73. // readable on OS X.
  74. const unsigned kOptionKey = kAltKey;
  75. @@ -87,7 +87,7 @@ struct DomKeyKeyDownEntry {
  76. const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  77. {VKEY_LEFT, 0, "MoveLeft"},
  78. {VKEY_LEFT, kShiftKey, "MoveLeftAndModifySelection"},
  79. -#if BUILDFLAG(IS_MAC)
  80. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  81. {VKEY_LEFT, kOptionKey, "MoveWordLeft"},
  82. {VKEY_LEFT, kOptionKey | kShiftKey, "MoveWordLeftAndModifySelection"},
  83. #else
  84. @@ -96,7 +96,7 @@ const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  85. #endif
  86. {VKEY_RIGHT, 0, "MoveRight"},
  87. {VKEY_RIGHT, kShiftKey, "MoveRightAndModifySelection"},
  88. -#if BUILDFLAG(IS_MAC)
  89. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  90. {VKEY_RIGHT, kOptionKey, "MoveWordRight"},
  91. {VKEY_RIGHT, kOptionKey | kShiftKey, "MoveWordRightAndModifySelection"},
  92. #else
  93. @@ -109,7 +109,7 @@ const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  94. {VKEY_DOWN, 0, "MoveDown"},
  95. {VKEY_DOWN, kShiftKey, "MoveDownAndModifySelection"},
  96. {VKEY_NEXT, kShiftKey, "MovePageDownAndModifySelection"},
  97. -#if !BUILDFLAG(IS_MAC)
  98. +#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX)
  99. {VKEY_UP, kCtrlKey, "MoveParagraphBackward"},
  100. {VKEY_UP, kCtrlKey | kShiftKey, "MoveParagraphBackwardAndModifySelection"},
  101. {VKEY_DOWN, kCtrlKey, "MoveParagraphForward"},
  102. @@ -119,32 +119,32 @@ const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  103. #endif
  104. {VKEY_HOME, 0, "MoveToBeginningOfLine"},
  105. {VKEY_HOME, kShiftKey, "MoveToBeginningOfLineAndModifySelection"},
  106. -#if BUILDFLAG(IS_MAC)
  107. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  108. {VKEY_PRIOR, kOptionKey, "MovePageUp"},
  109. {VKEY_NEXT, kOptionKey, "MovePageDown"},
  110. #endif
  111. -#if !BUILDFLAG(IS_MAC)
  112. +#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX)
  113. {VKEY_HOME, kCtrlKey, "MoveToBeginningOfDocument"},
  114. {VKEY_HOME, kCtrlKey | kShiftKey,
  115. "MoveToBeginningOfDocumentAndModifySelection"},
  116. #endif
  117. {VKEY_END, 0, "MoveToEndOfLine"},
  118. {VKEY_END, kShiftKey, "MoveToEndOfLineAndModifySelection"},
  119. -#if !BUILDFLAG(IS_MAC)
  120. +#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX)
  121. {VKEY_END, kCtrlKey, "MoveToEndOfDocument"},
  122. {VKEY_END, kCtrlKey | kShiftKey, "MoveToEndOfDocumentAndModifySelection"},
  123. #endif
  124. {VKEY_BACK, 0, "DeleteBackward"},
  125. {VKEY_BACK, kShiftKey, "DeleteBackward"},
  126. {VKEY_DELETE, 0, "DeleteForward"},
  127. -#if BUILDFLAG(IS_MAC)
  128. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  129. {VKEY_BACK, kOptionKey, "DeleteWordBackward"},
  130. {VKEY_DELETE, kOptionKey, "DeleteWordForward"},
  131. #else
  132. {VKEY_BACK, kCtrlKey, "DeleteWordBackward"},
  133. {VKEY_DELETE, kCtrlKey, "DeleteWordForward"},
  134. #endif
  135. -#if BUILDFLAG(IS_MAC)
  136. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  137. {'B', kCommandKey, "ToggleBold"},
  138. {'I', kCommandKey, "ToggleItalic"},
  139. #else
  140. @@ -167,14 +167,14 @@ const KeyboardCodeKeyDownEntry kKeyboardCodeKeyDownEntries[] = {
  141. #if !BUILDFLAG(IS_MAC)
  142. // On OS X, we pipe these back to the browser, so that it can do menu item
  143. // blinking.
  144. - {'C', kCtrlKey, "Copy"},
  145. - {'V', kCtrlKey, "Paste"},
  146. - {'V', kCtrlKey | kShiftKey, "PasteAndMatchStyle"},
  147. - {'X', kCtrlKey, "Cut"},
  148. - {'A', kCtrlKey, "SelectAll"},
  149. - {'Z', kCtrlKey, "Undo"},
  150. - {'Z', kCtrlKey | kShiftKey, "Redo"},
  151. - {'Y', kCtrlKey, "Redo"},
  152. + {'C', kCommandKey, "Copy"},
  153. + {'V', kCommandKey, "Paste"},
  154. + {'V', kCommandKey | kShiftKey, "PasteAndMatchStyle"},
  155. + {'X', kCommandKey, "Cut"},
  156. + {'A', kCommandKey, "SelectAll"},
  157. + {'Z', kCommandKey, "Undo"},
  158. + {'Z', kCommandKey | kShiftKey, "Redo"},
  159. + {'Y', kCommandKey, "Redo"},
  160. #endif
  161. #if BUILDFLAG(IS_WIN)
  162. {VKEY_BACK, kAltKey, "Undo"},
  163. @@ -280,19 +280,19 @@ bool EditingBehavior::ShouldInsertCharacter(const KeyboardEvent& event) const {
  164. // unexpected behaviour
  165. if (ch < ' ')
  166. return false;
  167. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
  168. +//#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
  169. // According to XKB map no keyboard combinations with ctrl key are mapped to
  170. // printable characters, however we need the filter as the DomKey/text could
  171. // contain printable characters.
  172. - if (event.ctrlKey())
  173. - return false;
  174. -#elif !BUILDFLAG(IS_WIN)
  175. + //if (event.ctrlKey())
  176. + // return false;
  177. +#if !BUILDFLAG(IS_WIN)
  178. // Don't insert ASCII character if ctrl w/o alt or meta is on.
  179. // On Mac, we should ignore events when meta is on (Command-<x>).
  180. if (ch < 0x80) {
  181. if (event.ctrlKey() && !event.altKey())
  182. return false;
  183. -#if BUILDFLAG(IS_MAC)
  184. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  185. if (event.metaKey())
  186. return false;
  187. #endif
  188. diff --git a/ui/base/window_open_disposition.cc b/ui/base/window_open_disposition.cc
  189. index 0c3708f6b..8eed78e74 100644
  190. --- a/ui/base/window_open_disposition.cc
  191. +++ b/ui/base/window_open_disposition.cc
  192. @@ -17,7 +17,7 @@ WindowOpenDisposition DispositionFromClick(
  193. bool shift_key,
  194. WindowOpenDisposition disposition_for_current_tab) {
  195. // MacOS uses meta key (Command key) to spawn new tabs.
  196. -#if BUILDFLAG(IS_APPLE)
  197. +#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
  198. if (middle_button || meta_key)
  199. #else
  200. if (middle_button || ctrl_key)
  201. diff --git a/ui/events/base_event_utils.cc b/ui/events/base_event_utils.cc
  202. index 294b52d76..104976d7a 100644
  203. --- a/ui/events/base_event_utils.cc
  204. +++ b/ui/events/base_event_utils.cc
  205. @@ -20,7 +20,7 @@ namespace {
  206. #if BUILDFLAG(IS_CHROMEOS_ASH)
  207. const int kSystemKeyModifierMask = EF_ALT_DOWN | EF_COMMAND_DOWN;
  208. -#elif BUILDFLAG(IS_APPLE)
  209. +#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
  210. // Alt modifier is used to input extended characters on Mac.
  211. const int kSystemKeyModifierMask = EF_COMMAND_DOWN;
  212. #else
  213. diff --git a/ui/events/event_constants.h b/ui/events/event_constants.h
  214. index 5a7dfef91..7896ea956 100644
  215. --- a/ui/events/event_constants.h
  216. +++ b/ui/events/event_constants.h
  217. @@ -52,7 +52,7 @@ enum EventFlags {
  218. #if BUILDFLAG(IS_APPLE)
  219. EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN,
  220. #else
  221. - EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN,
  222. + EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN,
  223. #endif
  224. };
  225. diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
  226. index 3d831cf69..c08768dcd 100644
  227. --- a/ui/views/controls/textfield/textfield.cc
  228. +++ b/ui/views/controls/textfield/textfield.cc
  229. @@ -241,9 +241,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. @@ -2118,7 +2118,7 @@ ui::TextEditCommand Textfield::GetCommandForKeyEvent(
  242. return ui::TextEditCommand::INVALID_COMMAND;
  243. const bool shift = event.IsShiftDown();
  244. -#if BUILDFLAG(IS_MAC)
  245. +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
  246. const bool command = event.IsCommandDown();
  247. #endif
  248. const bool control = event.IsControlDown() || event.IsCommandDown();
  249. @@ -2127,42 +2127,42 @@ ui::TextEditCommand Textfield::GetCommandForKeyEvent(
  250. case ui::VKEY_Z:
  251. if (control && !shift && !alt)
  252. return ui::TextEditCommand::UNDO;
  253. - return (control && shift && !alt) ? ui::TextEditCommand::REDO
  254. + return (command && shift && !alt) ? ui::TextEditCommand::REDO
  255. : ui::TextEditCommand::INVALID_COMMAND;
  256. case ui::VKEY_Y:
  257. - return (control && !alt) ? ui::TextEditCommand::REDO
  258. + return (command && !alt) ? ui::TextEditCommand::REDO
  259. : ui::TextEditCommand::INVALID_COMMAND;
  260. case ui::VKEY_A:
  261. - return (control && !alt) ? ui::TextEditCommand::SELECT_ALL
  262. + return (command && !alt) ? ui::TextEditCommand::SELECT_ALL
  263. : ui::TextEditCommand::INVALID_COMMAND;
  264. case ui::VKEY_X:
  265. - return (control && !alt) ? ui::TextEditCommand::CUT
  266. + return (command && !alt) ? ui::TextEditCommand::CUT
  267. : ui::TextEditCommand::INVALID_COMMAND;
  268. case ui::VKEY_C:
  269. - return (control && !alt) ? ui::TextEditCommand::COPY
  270. + return (command && !alt) ? ui::TextEditCommand::COPY
  271. : ui::TextEditCommand::INVALID_COMMAND;
  272. case ui::VKEY_V:
  273. - return (control && !alt) ? ui::TextEditCommand::PASTE
  274. + return (command && !alt) ? ui::TextEditCommand::PASTE
  275. : ui::TextEditCommand::INVALID_COMMAND;
  276. case ui::VKEY_RIGHT:
  277. // Ignore alt+right, which may be a browser navigation shortcut.
  278. if (alt)
  279. return ui::TextEditCommand::INVALID_COMMAND;
  280. if (!shift) {
  281. - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT
  282. + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT
  283. : ui::TextEditCommand::MOVE_RIGHT;
  284. }
  285. - return control ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
  286. + return command ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
  287. : ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION;
  288. case ui::VKEY_LEFT:
  289. // Ignore alt+left, which may be a browser navigation shortcut.
  290. if (alt)
  291. return ui::TextEditCommand::INVALID_COMMAND;
  292. if (!shift) {
  293. - return control ? ui::TextEditCommand::MOVE_WORD_LEFT
  294. + return command ? ui::TextEditCommand::MOVE_WORD_LEFT
  295. : ui::TextEditCommand::MOVE_LEFT;
  296. }
  297. - return control ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
  298. + return command ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
  299. : ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION;
  300. case ui::VKEY_HOME:
  301. if (shift) {
  302. @@ -2233,12 +2233,12 @@ ui::TextEditCommand Textfield::GetCommandForKeyEvent(
  303. if (shift && control)
  304. return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
  305. #endif
  306. - if (control)
  307. + if (command)
  308. return ui::TextEditCommand::DELETE_WORD_FORWARD;
  309. return shift ? ui::TextEditCommand::CUT
  310. : ui::TextEditCommand::DELETE_FORWARD;
  311. case ui::VKEY_INSERT:
  312. - if (control && !shift)
  313. + if (command && !shift)
  314. return ui::TextEditCommand::COPY;
  315. return (shift && !control) ? ui::TextEditCommand::PASTE
  316. : ui::TextEditCommand::INVALID_COMMAND;