下面列出了android.view.KeyEvent#KEYCODE_S 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public boolean onKeyShortcut(int keyCode, KeyEvent event) {
if (event.isCtrlPressed()) {
switch (keyCode) {
case KeyEvent.KEYCODE_R:
saveAndRun();
break;
case KeyEvent.KEYCODE_S:
onlySave();
break;
case KeyEvent.KEYCODE_F:
toggleApiDrawer();
break;
}
}
return super.onKeyShortcut(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) {
if (event.isCtrlPressed()) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
case KeyEvent.KEYCODE_X:
case KeyEvent.KEYCODE_C:
case KeyEvent.KEYCODE_V:
case KeyEvent.KEYCODE_Z:
case KeyEvent.KEYCODE_Y:
case KeyEvent.KEYCODE_S:
return true;
default:
return false;
}
} else {
switch (keyCode) {
case KeyEvent.KEYCODE_TAB:
return true;
default:
return false;
}
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (DLog.DEBUG) {
Log.w(TAG, "onKeyUp " + event);
}
if (handleControlKey(keyCode, event, false)) {
return true;
}
if (event.isCtrlPressed() || mKeyListener.mControlKey.isActive()) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
case KeyEvent.KEYCODE_X:
case KeyEvent.KEYCODE_C:
case KeyEvent.KEYCODE_V:
case KeyEvent.KEYCODE_Z:
case KeyEvent.KEYCODE_Y:
case KeyEvent.KEYCODE_S:
case KeyEvent.KEYCODE_R:
case KeyEvent.KEYCODE_F:
case KeyEvent.KEYCODE_L:
return true;
}
} else {
switch (keyCode) {
case KeyEvent.KEYCODE_TAB:
return true;
}
}
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onKeyShortcut(int keyCode, KeyEvent event) {
if (event.hasModifiers(KeyEvent.META_CTRL_ON)) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
if (mState == State.WORKSPACE) {
showAppsView(true, false);
return true;
}
break;
case KeyEvent.KEYCODE_S: {
View focusedView = getCurrentFocus();
if (focusedView instanceof BubbleTextView
&& focusedView.getTag() instanceof ItemInfo
&& mAccessibilityDelegate.performAction(focusedView,
(ItemInfo) focusedView.getTag(),
LauncherAccessibilityDelegate.DEEP_SHORTCUTS)) {
PopupContainerWithArrow.getOpen(this).requestFocus();
return true;
}
break;
}
case KeyEvent.KEYCODE_O:
if (new CustomActionsPopup(this, getCurrentFocus()).show()) {
return true;
}
break;
}
}
return super.onKeyShortcut(keyCode, event);
}
static public int keyCode2Direction(int keyCode) {
/* interprets a keyCode as a direction
* input: keyCode - a key code passed to handler
* output: [0 1 2 3] -> [left down up right]; -1 -> unknown
*/
switch (keyCode) {
// WASD, ZX-NM spread, AS-KL spread
// 12-90 spread, D-Pad
// Headphone music controller
case KeyEvent.KEYCODE_A: case KeyEvent.KEYCODE_Z:
case KeyEvent.KEYCODE_1: case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MEDIA_PREVIOUS: case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_BUTTON_X:
return 0;
case KeyEvent.KEYCODE_S: case KeyEvent.KEYCODE_X:
case KeyEvent.KEYCODE_2: case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_MEDIA_STOP:
case KeyEvent.KEYCODE_BUTTON_A:
return 1;
case KeyEvent.KEYCODE_W: case KeyEvent.KEYCODE_N: case KeyEvent.KEYCODE_K:
case KeyEvent.KEYCODE_9: case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_BUTTON_Y:
return 2;
case KeyEvent.KEYCODE_D: case KeyEvent.KEYCODE_M: case KeyEvent.KEYCODE_L:
case KeyEvent.KEYCODE_0: case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_MEDIA_NEXT: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
case KeyEvent.KEYCODE_BUTTON_B:
return 3;
default:
return -1;
}
}
/**
* CTRL + C copy
* CTRL + V paste
* CTRL + B: compile
* CTRL + R generate
* CTRL + X cut
* CTRL + Z undo
* CTRL + Y redo
* CTRL + Q quit
* CTRL + S save
* CTRL + O open
* CTRL + F find
* CTRL + H find and replace
* CTRL + L format code
* CTRL + G: goto line
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (DLog.DEBUG) Log.w(TAG, "onKeyDown: " + keyCode + " " + event);
if (handleControlKey(keyCode, event, false)) {
return true;
}
if (event.isCtrlPressed() || mKeyListener.mControlKey.isActive()) {
// Log.i(TAG, "onKeyDown: process");
switch (keyCode) {
case KeyEvent.KEYCODE_A:
selectAll();
return true;
case KeyEvent.KEYCODE_X:
cut();
return true;
case KeyEvent.KEYCODE_C:
copy();
return true;
case KeyEvent.KEYCODE_V:
paste();
return true;
case KeyEvent.KEYCODE_G: //go to line
if (editorControl != null)
editorControl.goToLine();
return true;
case KeyEvent.KEYCODE_L: //format
if (editorControl != null)
editorControl.formatCode();
return true;
case KeyEvent.KEYCODE_Z:
if (canUndo()) {
undo();
}
return true;
case KeyEvent.KEYCODE_Y:
if (canRedo()) {
redo();
}
return true;
case KeyEvent.KEYCODE_S:
if (editorControl != null)
editorControl.saveCurrentFile();
return true;
case KeyEvent.KEYCODE_N:
if (editorControl != null)
editorControl.saveAs();
return true;
default:
return super.onKeyDown(keyCode, event);
}
} else {
switch (keyCode) {
case KeyEvent.KEYCODE_TAB:
String textToInsert = mSettings.getTabStr();
int start, end;
start = Math.max(getSelectionStart(), 0);
end = Math.max(getSelectionEnd(), 0);
getText().replace(Math.min(start, end), Math.max(start, end),
textToInsert, 0, textToInsert.length());
return true;
default:
try {
return super.onKeyDown(keyCode, event);
} catch (Exception e) {
}
return false;
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_BUTTON_B)
return super.onKeyDown(keyCode, event);
if (mIsLoading) {
switch (keyCode) {
case KeyEvent.KEYCODE_S:
case KeyEvent.KEYCODE_MEDIA_STOP:
exitOK();
return true;
}
return false;
}
showOverlayTimeout(OVERLAY_TIMEOUT);
switch (keyCode) {
case KeyEvent.KEYCODE_F:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
case KeyEvent.KEYCODE_MEDIA_NEXT:
seekDelta(10000);
return true;
case KeyEvent.KEYCODE_R:
case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
seekDelta(-10000);
return true;
case KeyEvent.KEYCODE_BUTTON_R1:
seekDelta(60000);
return true;
case KeyEvent.KEYCODE_BUTTON_L1:
seekDelta(-60000);
return true;
case KeyEvent.KEYCODE_BUTTON_A:
if (mOverlayProgress.getVisibility() == View.VISIBLE)
return false;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_MEDIA_PLAY:
case KeyEvent.KEYCODE_MEDIA_PAUSE:
case KeyEvent.KEYCODE_SPACE:
if (mIsNavMenu)
return navigateDvdMenu(keyCode);
else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) //prevent conflict with remote control
return super.onKeyDown(keyCode, event);
else
doPlayPause();
return true;
case KeyEvent.KEYCODE_O:
case KeyEvent.KEYCODE_BUTTON_Y:
case KeyEvent.KEYCODE_MENU:
showAdvancedOptions(mAdvOptions);
return true;
case KeyEvent.KEYCODE_V:
case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
case KeyEvent.KEYCODE_BUTTON_X:
onAudioSubClick(mTracks);
return true;
case KeyEvent.KEYCODE_N:
showNavMenu();
return true;
case KeyEvent.KEYCODE_A:
resizeVideo();
return true;
case KeyEvent.KEYCODE_M:
case KeyEvent.KEYCODE_VOLUME_MUTE:
updateMute();
return true;
case KeyEvent.KEYCODE_S:
case KeyEvent.KEYCODE_MEDIA_STOP:
exitOK();
return true;
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
if (mIsNavMenu)
return navigateDvdMenu(keyCode);
else
return super.onKeyDown(keyCode, event);
case KeyEvent.KEYCODE_J:
delayAudio(-50000l);
return true;
case KeyEvent.KEYCODE_K:
delayAudio(50000l);
return true;
case KeyEvent.KEYCODE_G:
delaySubs(-50000l);
return true;
case KeyEvent.KEYCODE_H:
delaySubs(50000l);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
if (mMute) {
updateMute();
return true;
} else
return false;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) {
if (event.isCtrlPressed()) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
return onTextContextMenuItem(ID_SELECT_ALL);
case KeyEvent.KEYCODE_X:
return onTextContextMenuItem(ID_CUT);
case KeyEvent.KEYCODE_C:
return onTextContextMenuItem(ID_COPY);
case KeyEvent.KEYCODE_V:
return onTextContextMenuItem(ID_PASTE);
case KeyEvent.KEYCODE_Z:
if (getCanUndo()) {
return onTextContextMenuItem(ID_UNDO);
}
case KeyEvent.KEYCODE_Y:
if (getCanRedo()) {
return onTextContextMenuItem(ID_REDO);
}
case KeyEvent.KEYCODE_S:
getMainActivity().saveTheFile(false);
return true;
default:
return super.onKeyDown(keyCode, event);
}
} else {
switch (keyCode) {
case KeyEvent.KEYCODE_TAB:
String textToInsert = " ";
int start, end;
start = Math.max(getSelectionStart(), 0);
end = Math.max(getSelectionEnd(), 0);
getText().replace(Math.min(start, end), Math.max(start, end),
textToInsert, 0, textToInsert.length());
return true;
default:
return super.onKeyDown(keyCode, event);
}
}
}