comparison src/com/five_ten_sg/connectbot/service/TerminalKeyListener.java @ 154:86f903100573

disable auto-repeat on monitor special key
author Carl Byington <carl@five-ten-sg.com>
date Mon, 23 Jun 2014 11:54:26 -0700
parents eff82d6c11d9
children 4e1e1a6ee9f9
comparison
equal deleted inserted replaced
153:3ca280646f2d 154:86f903100573
138 * Handle onKey() events coming down from a {@link com.five_ten_sg.connectbot.TerminalView} above us. 138 * Handle onKey() events coming down from a {@link com.five_ten_sg.connectbot.TerminalView} above us.
139 * Modify the keys to make more sense to a host then pass it to the vt320. 139 * Modify the keys to make more sense to a host then pass it to the vt320.
140 */ 140 */
141 public boolean onKey(View v, int keyCode, KeyEvent event) { 141 public boolean onKey(View v, int keyCode, KeyEvent event) {
142 try { 142 try {
143 int repeat = event.getRepeatCount();
144
143 // skip keys if we aren't connected yet or have been disconnected 145 // skip keys if we aren't connected yet or have been disconnected
144 if (bridge.isDisconnected()) return false; 146 if (bridge.isDisconnected()) return false;
145 147
146 // Ignore all key-up events except for the special keys 148 // Ignore all key-up events except for the special keys
147 if (event.getAction() == KeyEvent.ACTION_UP) { 149 if (event.getAction() == KeyEvent.ACTION_UP) {
360 if (sendFullSpecialKey(keyCode)) 362 if (sendFullSpecialKey(keyCode))
361 return true; 363 return true;
362 } 364 }
363 365
364 // try handling keymode shortcuts 366 // try handling keymode shortcuts
365 if (hardKeyboard && !hardKeyboardHidden && 367 if (hardKeyboard && !hardKeyboardHidden && (repeat == 0)) {
366 event.getRepeatCount() == 0) {
367 if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) { 368 if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) {
368 switch (keyCode) { 369 switch (keyCode) {
369 case KeyEvent.KEYCODE_ALT_RIGHT: 370 case KeyEvent.KEYCODE_ALT_RIGHT:
370 metaState |= META_SLASH; 371 metaState |= META_SLASH;
371 return true; 372 return true;
424 } 425 }
425 } 426 }
426 427
427 // look for special chars 428 // look for special chars
428 switch (keyCode) { 429 switch (keyCode) {
429 case KEYCODE_ESCAPE: 430 case KeyEvent.KEYCODE_ESCAPE:
430 sendEscape(); 431 sendEscape();
431 return true; 432 return true;
432 433
433 case KeyEvent.KEYCODE_TAB: 434 case KeyEvent.KEYCODE_TAB:
434 buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer()); 435 buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer());
435 return true; 436 return true;
436 437
437 case KEYCODE_PAGE_DOWN: 438 case KeyEvent.KEYCODE_PAGE_DOWN:
438 buffer.keyPressed(vt320.KEY_PAGE_DOWN, ' ', getStateForBuffer()); 439 buffer.keyPressed(vt320.KEY_PAGE_DOWN, ' ', getStateForBuffer());
439 metaState &= ~META_TRANSIENT; 440 metaState &= ~META_TRANSIENT;
440 bridge.tryKeyVibrate(); 441 bridge.tryKeyVibrate();
441 return true; 442 return true;
442 443
443 case KEYCODE_PAGE_UP: 444 case KeyEvent.KEYCODE_PAGE_UP:
444 buffer.keyPressed(vt320.KEY_PAGE_UP, ' ', getStateForBuffer()); 445 buffer.keyPressed(vt320.KEY_PAGE_UP, ' ', getStateForBuffer());
445 metaState &= ~META_TRANSIENT; 446 metaState &= ~META_TRANSIENT;
446 bridge.tryKeyVibrate(); 447 bridge.tryKeyVibrate();
447 return true; 448 return true;
448 449
461 case KeyEvent.KEYCODE_CAMERA: 462 case KeyEvent.KEYCODE_CAMERA:
462 // check to see which shortcut the camera button triggers 463 // check to see which shortcut the camera button triggers
463 String hwbuttonShortcut = manager.prefs.getString( 464 String hwbuttonShortcut = manager.prefs.getString(
464 PreferenceConstants.CAMERA, 465 PreferenceConstants.CAMERA,
465 PreferenceConstants.HWBUTTON_SCREEN_CAPTURE); 466 PreferenceConstants.HWBUTTON_SCREEN_CAPTURE);
466 return (handleShortcut(v, hwbuttonShortcut)); 467 return (handleShortcut(v, hwbuttonShortcut, repeat));
467 468
468 case KeyEvent.KEYCODE_VOLUME_UP: 469 case KeyEvent.KEYCODE_VOLUME_UP:
469 // check to see which shortcut the volume button triggers 470 // check to see which shortcut the volume button triggers
470 hwbuttonShortcut = manager.prefs.getString( 471 hwbuttonShortcut = manager.prefs.getString(
471 PreferenceConstants.VOLUP, 472 PreferenceConstants.VOLUP,
472 PreferenceConstants.HWBUTTON_CTRL); 473 PreferenceConstants.HWBUTTON_CTRL);
473 return (handleShortcut(v, hwbuttonShortcut)); 474 return (handleShortcut(v, hwbuttonShortcut, repeat));
474 475
475 case KeyEvent.KEYCODE_VOLUME_DOWN: 476 case KeyEvent.KEYCODE_VOLUME_DOWN:
476 // check to see which shortcut the camera button triggers 477 // check to see which shortcut the camera button triggers
477 hwbuttonShortcut = manager.prefs.getString( 478 hwbuttonShortcut = manager.prefs.getString(
478 PreferenceConstants.VOLDN, 479 PreferenceConstants.VOLDN,
479 PreferenceConstants.HWBUTTON_TAB); 480 PreferenceConstants.HWBUTTON_TAB);
480 return (handleShortcut(v, hwbuttonShortcut)); 481 return (handleShortcut(v, hwbuttonShortcut, repeat));
481 482
482 case KeyEvent.KEYCODE_SEARCH: 483 case KeyEvent.KEYCODE_SEARCH:
483 // check to see which shortcut the search button triggers 484 // check to see which shortcut the search button triggers
484 hwbuttonShortcut = manager.prefs.getString( 485 hwbuttonShortcut = manager.prefs.getString(
485 PreferenceConstants.SEARCH, 486 PreferenceConstants.SEARCH,
486 PreferenceConstants.HWBUTTON_ESC); 487 PreferenceConstants.HWBUTTON_ESC);
487 return (handleShortcut(v, hwbuttonShortcut)); 488 return (handleShortcut(v, hwbuttonShortcut, repeat));
488 489
489 case KeyEvent.KEYCODE_BUTTON_L2: 490 case KeyEvent.KEYCODE_BUTTON_L2:
490 // check to see which shortcut the ptt button triggers 491 // check to see which shortcut the ptt button triggers
491 hwbuttonShortcut = manager.prefs.getString( 492 hwbuttonShortcut = manager.prefs.getString(
492 PreferenceConstants.PTT, 493 PreferenceConstants.PTT,
493 PreferenceConstants.HWBUTTON_MONITOR); 494 PreferenceConstants.HWBUTTON_MONITOR);
494 return (handleShortcut(v, hwbuttonShortcut)); 495 return (handleShortcut(v, hwbuttonShortcut, repeat));
495 496
496 case KeyEvent.KEYCODE_DEL: 497 case KeyEvent.KEYCODE_DEL:
497 if ((metaState & META_ALT_MASK) != 0) { 498 if ((metaState & META_ALT_MASK) != 0) {
498 buffer.keyPressed(vt320.KEY_INSERT, ' ', getStateForBuffer()); 499 buffer.keyPressed(vt320.KEY_INSERT, ' ', getStateForBuffer());
499 } 500 }
596 } 597 }
597 598
598 return false; 599 return false;
599 } 600 }
600 601
601 private boolean handleShortcut(View v, String shortcut) { 602 private boolean handleShortcut(View v, String shortcut, int repeat) {
602 if (PreferenceConstants.HWBUTTON_SCREEN_CAPTURE.equals(shortcut)) { 603 if (PreferenceConstants.HWBUTTON_SCREEN_CAPTURE.equals(shortcut)) {
604 if (repeat > 0) return false;
603 bridge.captureScreen(); 605 bridge.captureScreen();
604 } 606 }
605 else if (PreferenceConstants.HWBUTTON_MONITOR.equals(shortcut)) { 607 else if (PreferenceConstants.HWBUTTON_MONITOR.equals(shortcut)) {
608 if (repeat > 0) return false;
606 buffer.monitorKey(true); // key down 609 buffer.monitorKey(true); // key down
607 } 610 }
608 else if (PreferenceConstants.HWBUTTON_CTRL.equals(shortcut)) { 611 else if (PreferenceConstants.HWBUTTON_CTRL.equals(shortcut)) {
609 showMetakeyToast(v, PreferenceConstants.HWBUTTON_CTRL); 612 showMetakeyToast(v, PreferenceConstants.HWBUTTON_CTRL);
610 metaPress(META_CTRL_ON); 613 metaPress(META_CTRL_ON);
1172 // handler... 1175 // handler...
1173 } 1176 }
1174 } 1177 }
1175 } 1178 }
1176 } 1179 }
1177