Make VolumeUp+x send Alt+x

This commit is contained in:
Fredrik Fornwall
2016-04-22 02:20:10 +02:00
parent fb7f7d249e
commit a87cbdd70c

View File

@@ -652,52 +652,55 @@ public final class TerminalView extends View {
resultingKeyCode = KeyEvent.KEYCODE_F12; resultingKeyCode = KeyEvent.KEYCODE_F12;
} }
} else if (mVirtualFnKeyDown) { } else if (mVirtualFnKeyDown) {
if (codePoint == 'w' || codePoint == 'W') { int lowerCase = Character.toLowerCase(codePoint);
resultingKeyCode = KeyEvent.KEYCODE_DPAD_UP; switch (lowerCase) {
} else if (codePoint == 'a' || codePoint == 'A') { // Arrow keys.
resultingKeyCode = KeyEvent.KEYCODE_DPAD_LEFT; case 'w': resultingKeyCode = KeyEvent.KEYCODE_DPAD_UP; break;
} else if (codePoint == 's' || codePoint == 'S') { case 'a': resultingKeyCode = KeyEvent.KEYCODE_DPAD_LEFT; break;
resultingKeyCode = KeyEvent.KEYCODE_DPAD_DOWN; case 's': resultingKeyCode = KeyEvent.KEYCODE_DPAD_DOWN; break;
} else if (codePoint == 'd' || codePoint == 'D') { case 'd': resultingKeyCode = KeyEvent.KEYCODE_DPAD_RIGHT; break;
resultingKeyCode = KeyEvent.KEYCODE_DPAD_RIGHT;
} else if (codePoint == 'p' || codePoint == 'P') { // Page up and down.
resultingKeyCode = KeyEvent.KEYCODE_PAGE_UP; case 'p': resultingKeyCode = KeyEvent.KEYCODE_PAGE_UP; break;
} else if (codePoint == 'n' || codePoint == 'N') { case 'n': resultingKeyCode = KeyEvent.KEYCODE_PAGE_DOWN; break;
resultingKeyCode = KeyEvent.KEYCODE_PAGE_DOWN;
} else if (codePoint == 't' || codePoint == 'T') { // Some special keys:
resultingKeyCode = KeyEvent.KEYCODE_TAB; case 't': resultingKeyCode = KeyEvent.KEYCODE_TAB; break;
} else if (codePoint == 'l' || codePoint == 'L') { case 'i': resultingKeyCode = KeyEvent.KEYCODE_INSERT; break;
codePoint = '|'; case 'h': resultingKeyCode = KeyEvent.KEYCODE_MOVE_HOME; break;
} else if (codePoint == 'u' || codePoint == 'U') {
codePoint = '_'; // Special characters to input.
} else if (codePoint == 'e' || codePoint == 'E') { case 'u': codePoint = '_'; break;
codePoint = 27; // ^[ (Esc) case 'l': codePoint = '|'; break;
} else if (codePoint == '.') {
codePoint = 28; // ^\ // Function keys.
} else if (codePoint > '0' && codePoint <= '9') { case '1': case '2': case '3':
// F1-F9 case '4': case '5': case '6':
resultingKeyCode = (codePoint - '1') + KeyEvent.KEYCODE_F1; case '7': case '8': case '9':
} else if (codePoint == '0') { resultingKeyCode = (codePoint - '1') + KeyEvent.KEYCODE_F1;
resultingKeyCode = KeyEvent.KEYCODE_F10; break;
} else if (codePoint == 'i' || codePoint == 'I') { case '0':
resultingKeyCode = KeyEvent.KEYCODE_INSERT; resultingKeyCode = KeyEvent.KEYCODE_F10;
} else if (codePoint == 'x' || codePoint == 'X') { break;
resultingKeyCode = KeyEvent.KEYCODE_FORWARD_DEL;
} else if (codePoint == 'h' || codePoint == 'H') { // Other special keys.
resultingKeyCode = KeyEvent.KEYCODE_MOVE_HOME; case 'e': codePoint = /*Escape*/ 27; break;
} else if (codePoint == 'f' || codePoint == 'F') { case '.': codePoint = /*^.*/ 28; break;
// As left alt+f, jumping forward in readline:
codePoint = 'f'; case 'b': // alt+b, jumping backward in readline.
leftAltDownFromEvent = true; case 'f': // alf+f, jumping forward in readline.
} else if (codePoint == 'b' || codePoint == 'B') { case 'x': // alt+x, common in emacs.
// As left alt+b, jumping forward in readline: codePoint = lowerCase;
codePoint = 'b'; leftAltDownFromEvent = true;
leftAltDownFromEvent = true; break;
} else if (codePoint == 'v' || codePoint == 'V') {
codePoint = -1; // Volume control.
AudioManager audio = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); case 'v':
audio.adjustSuggestedStreamVolume(AudioManager.ADJUST_SAME, AudioManager.USE_DEFAULT_STREAM_TYPE, AudioManager.FLAG_SHOW_UI); codePoint = -1;
} AudioManager audio = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
audio.adjustSuggestedStreamVolume(AudioManager.ADJUST_SAME, AudioManager.USE_DEFAULT_STREAM_TYPE, AudioManager.FLAG_SHOW_UI);
break;
}
} }
if (codePoint > -1) { if (codePoint > -1) {