… | |
… | |
400 | break; |
400 | break; |
401 | } |
401 | } |
402 | return param; |
402 | return param; |
403 | } |
403 | } |
404 | |
404 | |
|
|
405 | static inline wchar_t * |
|
|
406 | rxvt_wcsdup (const wchar_t *str, int len) |
|
|
407 | { |
|
|
408 | wchar_t *r = (wchar_t *)rxvt_malloc ((len + 1) * sizeof (wchar_t)); |
|
|
409 | memcpy (r, str, len * sizeof (wchar_t)); |
|
|
410 | r[len] = 0; |
|
|
411 | return r; |
|
|
412 | } |
|
|
413 | |
405 | void ecb_cold |
414 | void ecb_cold |
406 | rxvt_term::key_press (XKeyEvent &ev) |
415 | rxvt_term::key_press (XKeyEvent &ev) |
407 | { |
416 | { |
408 | int ctrl, meta, shft, len; |
417 | int ctrl, meta, shft, len; |
409 | KeySym keysym; |
418 | KeySym keysym; |
… | |
… | |
576 | case XK_KP_Subtract: /* Shift+KP_Subtract = smaller font */ |
585 | case XK_KP_Subtract: /* Shift+KP_Subtract = smaller font */ |
577 | return; |
586 | return; |
578 | #endif |
587 | #endif |
579 | } |
588 | } |
580 | } |
589 | } |
|
|
590 | } |
|
|
591 | |
|
|
592 | if (ctrl && meta && (keysym == XK_c || keysym == XK_v)) |
|
|
593 | { |
|
|
594 | if (keysym == XK_v) |
|
|
595 | selection_request (ev.time, Sel_Clipboard); |
|
|
596 | else if (selection.len > 0) |
|
|
597 | { |
|
|
598 | free (selection.clip_text); |
|
|
599 | selection.clip_text = rxvt_wcsdup (selection.text, selection.len); |
|
|
600 | selection.clip_len = selection.len; |
|
|
601 | selection_grab (CurrentTime, true); |
|
|
602 | } |
|
|
603 | |
|
|
604 | return; |
581 | } |
605 | } |
582 | |
606 | |
583 | #if ENABLE_FRILLS || ISO_14755 |
607 | #if ENABLE_FRILLS || ISO_14755 |
584 | // ISO 14755 support |
608 | // ISO 14755 support |
585 | if (iso14755buf & (ISO_14755_STARTED | ISO_14755_51)) |
609 | if (iso14755buf & (ISO_14755_STARTED | ISO_14755_51)) |