| 473 | } |
| 474 | |
| 475 | HandleKeyPressResult Textbuf::HandleKeyPress(char32_t key, uint16_t keycode) |
| 476 | { |
| 477 | bool edited = false; |
| 478 | |
| 479 | switch (keycode) { |
| 480 | case WKC_ESC: return HKPR_CANCEL; |
| 481 | |
| 482 | case WKC_RETURN: case WKC_NUM_ENTER: return HKPR_CONFIRM; |
| 483 | |
| 484 | case (WKC_CTRL | 'V'): |
| 485 | case (WKC_SHIFT | WKC_INSERT): |
| 486 | edited = this->InsertClipboard(); |
| 487 | break; |
| 488 | |
| 489 | case (WKC_CTRL | 'U'): |
| 490 | this->DeleteAll(); |
| 491 | edited = true; |
| 492 | break; |
| 493 | |
| 494 | case WKC_BACKSPACE: case WKC_DELETE: |
| 495 | case WKC_CTRL | WKC_BACKSPACE: case WKC_CTRL | WKC_DELETE: |
| 496 | edited = this->DeleteChar(keycode); |
| 497 | break; |
| 498 | |
| 499 | case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME: |
| 500 | case WKC_CTRL | WKC_LEFT: case WKC_CTRL | WKC_RIGHT: |
| 501 | this->MovePos(keycode); |
| 502 | break; |
| 503 | |
| 504 | default: |
| 505 | if (IsValidChar(key, this->afilter)) { |
| 506 | edited = this->InsertChar(key); |
| 507 | } else { |
| 508 | return HKPR_NOT_HANDLED; |
| 509 | } |
| 510 | break; |
| 511 | } |
| 512 | |
| 513 | return edited ? HKPR_EDITING : HKPR_CURSOR; |
| 514 | } |
no test coverage detected