Mercurial > 510Connectbot
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 |