Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java

Issue 1276703003: Handle UI operations through gamepad (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/browser/gamepad/gamepad_platform_data_fetcher_android.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.view.KeyEvent; 7 import android.view.KeyEvent;
8 8
9 import org.chromium.base.annotations.SuppressFBWarnings; 9 import org.chromium.base.annotations.SuppressFBWarnings;
10 import org.chromium.chrome.R; 10 import org.chromium.chrome.R;
(...skipping 16 matching lines...) Expand all
27 private static final int SHIFT = 1 << 29; 27 private static final int SHIFT = 1 << 29;
28 28
29 private KeyboardShortcuts() {} 29 private KeyboardShortcuts() {}
30 30
31 private static int getMetaState(KeyEvent event) { 31 private static int getMetaState(KeyEvent event) {
32 return (event.isCtrlPressed() ? CTRL : 0) 32 return (event.isCtrlPressed() ? CTRL : 0)
33 | (event.isAltPressed() ? ALT : 0) 33 | (event.isAltPressed() ? ALT : 0)
34 | (event.isShiftPressed() ? SHIFT : 0); 34 | (event.isShiftPressed() ? SHIFT : 0);
35 } 35 }
36 36
37 private static boolean isGamepadAPIActive(ChromeActivity activity) {
38 ContentViewCore cvc = activity.getCurrentContentViewCore();
39 return (cvc != null) ? cvc.isGamepadAPIActive() : false;
40 }
41
37 /** 42 /**
38 * This should be called from the Activity's dispatchKeyEvent() to handle ke yboard shortcuts. 43 * This should be called from the Activity's dispatchKeyEvent() to handle ke yboard shortcuts.
39 * 44 *
40 * Note: dispatchKeyEvent() is called before the active view or web page get s a chance to handle 45 * Note: dispatchKeyEvent() is called before the active view or web page get s a chance to handle
41 * the key event. So the keys handled here cannot be overridden by any view or web page. 46 * the key event. So the keys handled here cannot be overridden by any view or web page.
42 * 47 *
43 * @param event The KeyEvent to handle. 48 * @param event The KeyEvent to handle.
44 * @param activity The ChromeActivity in which the key was pressed. 49 * @param activity The ChromeActivity in which the key was pressed.
45 * @param uiInitialized Whether the UI has been initialized. If this is fals e, most keys will 50 * @param uiInitialized Whether the UI has been initialized. If this is fals e, most keys will
46 * not be handled. 51 * not be handled.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 * @param isCurrentTabVisible Whether page-related actions are valid, e.g. r eload, zoom in. 103 * @param isCurrentTabVisible Whether page-related actions are valid, e.g. r eload, zoom in.
99 * This should be false when in the tab switcher. 104 * This should be false when in the tab switcher.
100 * @param tabSwitchingEnabled Whether shortcuts that switch between tabs are enabled (e.g. 105 * @param tabSwitchingEnabled Whether shortcuts that switch between tabs are enabled (e.g.
101 * Ctrl+Tab, Ctrl+3). 106 * Ctrl+Tab, Ctrl+3).
102 * @return Whether the key event was handled. 107 * @return Whether the key event was handled.
103 */ 108 */
104 public static boolean onKeyDown(KeyEvent event, ChromeActivity activity, 109 public static boolean onKeyDown(KeyEvent event, ChromeActivity activity,
105 boolean isCurrentTabVisible, boolean tabSwitchingEnabled) { 110 boolean isCurrentTabVisible, boolean tabSwitchingEnabled) {
106 int keyCode = event.getKeyCode(); 111 int keyCode = event.getKeyCode();
107 if (event.getRepeatCount() != 0 || KeyEvent.isModifierKey(keyCode)) retu rn false; 112 if (event.getRepeatCount() != 0 || KeyEvent.isModifierKey(keyCode)) retu rn false;
108 if (!event.isCtrlPressed() && !event.isAltPressed() 113 if (KeyEvent.isGamepadButton(keyCode)) {
114 if (isGamepadAPIActive(activity)) return false;
115 } else if (!event.isCtrlPressed() && !event.isAltPressed()
109 && keyCode != KeyEvent.KEYCODE_F3 116 && keyCode != KeyEvent.KEYCODE_F3
110 && keyCode != KeyEvent.KEYCODE_F5 117 && keyCode != KeyEvent.KEYCODE_F5
111 && keyCode != KeyEvent.KEYCODE_FORWARD) { 118 && keyCode != KeyEvent.KEYCODE_FORWARD) {
112 return false; 119 return false;
113 } 120 }
114 121
115 TabModel curModel = activity.getCurrentTabModel(); 122 TabModel curModel = activity.getCurrentTabModel();
116 int count = curModel.getCount(); 123 int count = curModel.getCount();
117 124
118 int metaState = getMetaState(event); 125 int metaState = getMetaState(event);
(...skipping 20 matching lines...) Expand all
139 if (currentTab != null && isCurrentTabVisible) { 146 if (currentTab != null && isCurrentTabVisible) {
140 currentTab.loadUrl(new LoadUrlParams(url, PageTransition.AUT O_BOOKMARK)); 147 currentTab.loadUrl(new LoadUrlParams(url, PageTransition.AUT O_BOOKMARK));
141 } else { 148 } else {
142 TabCreator tabCreator = activity.getCurrentTabCreator(); 149 TabCreator tabCreator = activity.getCurrentTabCreator();
143 if (tabCreator != null) { 150 if (tabCreator != null) {
144 tabCreator.launchUrl(url, TabLaunchType.FROM_KEYBOARD); 151 tabCreator.launchUrl(url, TabLaunchType.FROM_KEYBOARD);
145 } 152 }
146 } 153 }
147 return true; 154 return true;
148 case ALT | KeyEvent.KEYCODE_F: 155 case ALT | KeyEvent.KEYCODE_F:
156 case KeyEvent.KEYCODE_BUTTON_Y:
149 activity.onMenuOrKeyboardAction(R.id.show_menu, false); 157 activity.onMenuOrKeyboardAction(R.id.show_menu, false);
150 return true; 158 return true;
151 } 159 }
152 160
153 if (isCurrentTabVisible) { 161 if (isCurrentTabVisible) {
154 if (tabSwitchingEnabled && (metaState == CTRL || metaState == ALT)) { 162 if (tabSwitchingEnabled && (metaState == CTRL || metaState == ALT)) {
155 int numCode = keyCode - KeyEvent.KEYCODE_0; 163 int numCode = keyCode - KeyEvent.KEYCODE_0;
156 if (numCode > 0 && numCode <= Math.min(count, 8)) { 164 if (numCode > 0 && numCode <= Math.min(count, 8)) {
157 // Ctrl+1 to Ctrl+8: select tab by index 165 // Ctrl+1 to Ctrl+8: select tab by index
158 TabModelUtils.setIndex(curModel, numCode - 1); 166 TabModelUtils.setIndex(curModel, numCode - 1);
159 return true; 167 return true;
160 } else if (numCode == 9 && count != 0) { 168 } else if (numCode == 9 && count != 0) {
161 // Ctrl+9: select last tab 169 // Ctrl+9: select last tab
162 TabModelUtils.setIndex(curModel, count - 1); 170 TabModelUtils.setIndex(curModel, count - 1);
163 return true; 171 return true;
164 } 172 }
165 } 173 }
166 174
167 switch (keyCodeAndMeta) { 175 switch (keyCodeAndMeta) {
168 case CTRL | KeyEvent.KEYCODE_TAB: 176 case CTRL | KeyEvent.KEYCODE_TAB:
169 case CTRL | KeyEvent.KEYCODE_PAGE_DOWN: 177 case CTRL | KeyEvent.KEYCODE_PAGE_DOWN:
178 case KeyEvent.KEYCODE_BUTTON_R1:
170 if (tabSwitchingEnabled && count > 1) { 179 if (tabSwitchingEnabled && count > 1) {
171 TabModelUtils.setIndex(curModel, (curModel.index() + 1) % count); 180 TabModelUtils.setIndex(curModel, (curModel.index() + 1) % count);
172 } 181 }
173 return true; 182 return true;
174 case CTRL | SHIFT | KeyEvent.KEYCODE_TAB: 183 case CTRL | SHIFT | KeyEvent.KEYCODE_TAB:
175 case CTRL | KeyEvent.KEYCODE_PAGE_UP: 184 case CTRL | KeyEvent.KEYCODE_PAGE_UP:
185 case KeyEvent.KEYCODE_BUTTON_L1:
176 if (tabSwitchingEnabled && count > 1) { 186 if (tabSwitchingEnabled && count > 1) {
177 TabModelUtils.setIndex(curModel, (curModel.index() + cou nt - 1) % count); 187 TabModelUtils.setIndex(curModel, (curModel.index() + cou nt - 1) % count);
178 } 188 }
179 return true; 189 return true;
180 case CTRL | KeyEvent.KEYCODE_W: 190 case CTRL | KeyEvent.KEYCODE_W:
181 case CTRL | KeyEvent.KEYCODE_F4: 191 case CTRL | KeyEvent.KEYCODE_F4:
192 case KeyEvent.KEYCODE_BUTTON_B:
182 TabModelUtils.closeCurrentTab(curModel); 193 TabModelUtils.closeCurrentTab(curModel);
183 return true; 194 return true;
184 case CTRL | KeyEvent.KEYCODE_F: 195 case CTRL | KeyEvent.KEYCODE_F:
185 case CTRL | KeyEvent.KEYCODE_G: 196 case CTRL | KeyEvent.KEYCODE_G:
186 case CTRL | SHIFT | KeyEvent.KEYCODE_G: 197 case CTRL | SHIFT | KeyEvent.KEYCODE_G:
187 case KeyEvent.KEYCODE_F3: 198 case KeyEvent.KEYCODE_F3:
188 case SHIFT | KeyEvent.KEYCODE_F3: 199 case SHIFT | KeyEvent.KEYCODE_F3:
189 activity.onMenuOrKeyboardAction(R.id.find_in_page_id, false) ; 200 activity.onMenuOrKeyboardAction(R.id.find_in_page_id, false) ;
190 return true; 201 return true;
191 case CTRL | KeyEvent.KEYCODE_L: 202 case CTRL | KeyEvent.KEYCODE_L:
192 case ALT | KeyEvent.KEYCODE_D: 203 case ALT | KeyEvent.KEYCODE_D:
204 case KeyEvent.KEYCODE_BUTTON_X:
193 activity.onMenuOrKeyboardAction(R.id.focus_url_bar, false); 205 activity.onMenuOrKeyboardAction(R.id.focus_url_bar, false);
194 return true; 206 return true;
195 case KeyEvent.KEYCODE_BOOKMARK: 207 case KeyEvent.KEYCODE_BOOKMARK:
196 case CTRL | KeyEvent.KEYCODE_D: 208 case CTRL | KeyEvent.KEYCODE_D:
197 activity.onMenuOrKeyboardAction(R.id.bookmark_this_page_id, false); 209 activity.onMenuOrKeyboardAction(R.id.bookmark_this_page_id, false);
198 return true; 210 return true;
199 case CTRL | KeyEvent.KEYCODE_P: 211 case CTRL | KeyEvent.KEYCODE_P:
200 activity.onMenuOrKeyboardAction(R.id.print_id, false); 212 activity.onMenuOrKeyboardAction(R.id.print_id, false);
201 return true; 213 return true;
202 case CTRL | KeyEvent.KEYCODE_PLUS: 214 case CTRL | KeyEvent.KEYCODE_PLUS:
(...skipping 17 matching lines...) Expand all
220 case KeyEvent.KEYCODE_F5: 232 case KeyEvent.KEYCODE_F5:
221 Tab tab = activity.getActivityTab(); 233 Tab tab = activity.getActivityTab();
222 if (tab != null) tab.reload(); 234 if (tab != null) tab.reload();
223 return true; 235 return true;
224 case ALT | KeyEvent.KEYCODE_DPAD_LEFT: 236 case ALT | KeyEvent.KEYCODE_DPAD_LEFT:
225 tab = activity.getActivityTab(); 237 tab = activity.getActivityTab();
226 if (tab != null && tab.canGoBack()) tab.goBack(); 238 if (tab != null && tab.canGoBack()) tab.goBack();
227 return true; 239 return true;
228 case ALT | KeyEvent.KEYCODE_DPAD_RIGHT: 240 case ALT | KeyEvent.KEYCODE_DPAD_RIGHT:
229 case KeyEvent.KEYCODE_FORWARD: 241 case KeyEvent.KEYCODE_FORWARD:
242 case KeyEvent.KEYCODE_BUTTON_START:
230 tab = activity.getActivityTab(); 243 tab = activity.getActivityTab();
231 if (tab != null && tab.canGoForward()) tab.goForward(); 244 if (tab != null && tab.canGoForward()) tab.goForward();
232 return true; 245 return true;
233 case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH: // i.e. Ctrl+? 246 case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH: // i.e. Ctrl+?
234 activity.onMenuOrKeyboardAction(R.id.help_id, false); 247 activity.onMenuOrKeyboardAction(R.id.help_id, false);
235 return true; 248 return true;
236 } 249 }
237 } 250 }
238 251
239 return false; 252 return false;
240 } 253 }
241 } 254 }
OLDNEW
« no previous file with comments | « no previous file | content/browser/gamepad/gamepad_platform_data_fetcher_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698