… | |
… | |
198 | |
198 | |
199 | int width = 0; |
199 | int width = 0; |
200 | fname = rxvt_temp_buf<wchar_t *> (len); |
200 | fname = rxvt_temp_buf<wchar_t *> (len); |
201 | for (int i = 0; i < len; i++) |
201 | for (int i = 0; i < len; i++) |
202 | { |
202 | { |
203 | rxvt_font *f = (*fs)[fs->find_font (chr[i])]; |
203 | rxvt_font *f = (*fs)[fs->find_font_idx (chr[i])]; |
204 | fname[i] = rxvt_utf8towcs (f->name); |
204 | fname[i] = rxvt_utf8towcs (f->name); |
205 | max_it (width, wcswidth (fname[i], wcslen (fname[i]))); |
205 | max_it (width, wcswidth (fname[i], wcslen (fname[i]))); |
206 | } |
206 | } |
207 | |
207 | |
208 | max_it (width, 8+5); // for char + hex |
208 | max_it (width, 8+5); // for char + hex |
… | |
… | |
288 | } |
288 | } |
289 | |
289 | |
290 | static int |
290 | static int |
291 | hex_keyval (XKeyEvent &ev) |
291 | hex_keyval (XKeyEvent &ev) |
292 | { |
292 | { |
293 | // check wether this event corresponds to a hex digit |
293 | // check whether this event corresponds to a hex digit |
294 | // if the modifiers had not been pressed. |
294 | // if the modifiers had not been pressed. |
295 | for (int index = 0; index < 8; index++) |
295 | for (int index = 0; index < 8; index++) |
296 | { |
296 | { |
297 | KeySym k = XLookupKeysym (&ev, index); |
297 | KeySym k = XLookupKeysym (&ev, index); |
298 | |
298 | |
… | |
… | |
421 | * Always permit `shift' to override the current setting |
421 | * Always permit `shift' to override the current setting |
422 | */ |
422 | */ |
423 | shft = ev.state & ShiftMask; |
423 | shft = ev.state & ShiftMask; |
424 | ctrl = ev.state & ControlMask; |
424 | ctrl = ev.state & ControlMask; |
425 | meta = ev.state & ModMetaMask; |
425 | meta = ev.state & ModMetaMask; |
426 | |
|
|
427 | if (numlock_state || (ev.state & ModNumLockMask)) |
|
|
428 | { |
|
|
429 | numlock_state = (ev.state & ModNumLockMask); |
|
|
430 | set_privmode (PrivMode_aplKP, !numlock_state); |
|
|
431 | } |
|
|
432 | |
426 | |
433 | kbuf[0] = 0; |
427 | kbuf[0] = 0; |
434 | |
428 | |
435 | #ifdef USE_XIM |
429 | #ifdef USE_XIM |
436 | if (Input_Context) |
430 | if (Input_Context) |
… | |
… | |
653 | if (keysym >= 0xFF00 && keysym <= 0xFFFF) |
647 | if (keysym >= 0xFF00 && keysym <= 0xFFFF) |
654 | { |
648 | { |
655 | bool kp = priv_modes & PrivMode_aplKP ? !shft : shft; |
649 | bool kp = priv_modes & PrivMode_aplKP ? !shft : shft; |
656 | unsigned int newlen = 1; |
650 | unsigned int newlen = 1; |
657 | |
651 | |
|
|
652 | if (ev.state & ModNumLockMask) |
|
|
653 | kp = false; |
658 | switch (translate_keypad (keysym, kp)) |
654 | switch (translate_keypad (keysym, kp)) |
659 | { |
655 | { |
660 | #ifndef NO_BACKSPACE_KEY |
656 | #ifndef NO_BACKSPACE_KEY |
661 | case XK_BackSpace: |
657 | case XK_BackSpace: |
662 | if (priv_modes & PrivMode_HaveBackSpace) |
658 | if (priv_modes & PrivMode_HaveBackSpace) |
… | |
… | |
1033 | } |
1029 | } |
1034 | |
1030 | |
1035 | display->flush (); |
1031 | display->flush (); |
1036 | } |
1032 | } |
1037 | |
1033 | |
1038 | /* checks wether a refresh is requested and starts the refresh timer */ |
1034 | /* checks whether a refresh is requested and starts the refresh timer */ |
1039 | void |
1035 | void |
1040 | rxvt_term::refresh_check () |
1036 | rxvt_term::refresh_check () |
1041 | { |
1037 | { |
1042 | if (want_refresh && !flush_ev.is_active ()) |
1038 | if (want_refresh && !flush_ev.is_active ()) |
1043 | flush_ev.start (1. / 60.); // refresh at max. 60 Hz normally |
1039 | flush_ev.start (1. / 60.); // refresh at max. 60 Hz normally |
… | |
… | |
1137 | // this should really be sched_yield(), but the linux guys thought |
1133 | // this should really be sched_yield(), but the linux guys thought |
1138 | // that giving a process calling sched_yield () less cpu time than |
1134 | // that giving a process calling sched_yield () less cpu time than |
1139 | // ones with high nice levels is a useful thing to do. It surely is is |
1135 | // ones with high nice levels is a useful thing to do. It surely is is |
1140 | // allowed by the sus... as is returning ENOSYS. |
1136 | // allowed by the sus... as is returning ENOSYS. |
1141 | // since the linux guys additionally thought that breaking the only |
1137 | // since the linux guys additionally thought that breaking the only |
1142 | // known workaroudn against their unusable sched_yield hack is cool, |
1138 | // known workaround against their unusable sched_yield hack is cool, |
1143 | // we just nanosleep a bit and hope for the best. |
1139 | // we just nanosleep a bit and hope for the best. |
1144 | |
1140 | |
1145 | struct timespec ts = { 0, 1000 }; |
1141 | struct timespec ts = { 0, 1000 }; |
1146 | nanosleep (&ts, 0); |
1142 | nanosleep (&ts, 0); |
1147 | |
1143 | |