void BC_TextBox::default_keypress(int &dispatch_event, int &result)
{
int key = top_level->get_keypress(), len;
- if( (key == RETURN) || ( key >= 32 && key <= 255 ) ) {
+ if( (key == RETURN) || ( key >= 32 && key <= 255 ) ||
+ (key >= KP1 && key <= KP9) || key == KPINS ) {
wchar_t *wkeys = top_level->get_wkeystring(&len);
- if( key == RETURN ) { wkeys[0] = '\n'; wkeys[1] = 0; len = 1; }
+ switch( key ) {
+ case RETURN: key = '\n'; goto kpchr;
+ case KPINS: key = '0'; goto kpchr;
+ case KP1: case KP2: case KP3: case KP4: case KP5:
+ case KP6: case KP7: case KP8: case KP9:
+ key = key - KP1 + '1';
+ kpchr:
+ wkeys[0] = key; wkeys[1] = 0; len = 1;
+ break;
+ }
insert_text(wkeys, len);
find_ibeam(1);
draw(1);
result = 1;
wlen = 0;
break; }
+ case KPINS: last_keypress = KP1-'1'+'0'; // fall thru
+ case KP1: case KP2: case KP3: case KP4: case KP5:
+ case KP6: case KP7: case KP8: case KP9:
+ last_keypress = last_keypress-KP1 + '1';
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
default: {
if( ctrl_down() ) {
- switch( get_keypress() ) {
+ switch( last_keypress ) {
case 'c': case 'C': {
result = copy(0);
break; }