add support for more keypad keys cd2133a5
The keypad Enter key was already supported. On some keyboard layouts like my
laptop the page-up and page-down key is more comfortable to use.
This adds a few lines but no complexity.
Hiltjo Posthuma · 2021-08-09 18:39 1 file(s) · +11 −0
dmenu.c +11 −0
360 360
			                  utf8, utf8, win, CurrentTime);
361 361
			return;
362 362
		case XK_Left:
363 +
		case XK_KP_Left:
363 364
			movewordedge(-1);
364 365
			goto draw;
365 366
		case XK_Right:
367 +
		case XK_KP_Right:
366 368
			movewordedge(+1);
367 369
			goto draw;
368 370
		case XK_Return:
400 402
			insert(buf, len);
401 403
		break;
402 404
	case XK_Delete:
405 +
	case XK_KP_Delete:
403 406
		if (text[cursor] == '\0')
404 407
			return;
405 408
		cursor = nextrune(+1);
410 413
		insert(NULL, nextrune(-1) - cursor);
411 414
		break;
412 415
	case XK_End:
416 +
	case XK_KP_End:
413 417
		if (text[cursor] != '\0') {
414 418
			cursor = strlen(text);
415 419
			break;
429 433
		cleanup();
430 434
		exit(1);
431 435
	case XK_Home:
436 +
	case XK_KP_Home:
432 437
		if (sel == matches) {
433 438
			cursor = 0;
434 439
			break;
437 442
		calcoffsets();
438 443
		break;
439 444
	case XK_Left:
445 +
	case XK_KP_Left:
440 446
		if (cursor > 0 && (!sel || !sel->left || lines > 0)) {
441 447
			cursor = nextrune(-1);
442 448
			break;
445 451
			return;
446 452
		/* fallthrough */
447 453
	case XK_Up:
454 +
	case XK_KP_Up:
448 455
		if (sel && sel->left && (sel = sel->left)->right == curr) {
449 456
			curr = prev;
450 457
			calcoffsets();
451 458
		}
452 459
		break;
453 460
	case XK_Next:
461 +
	case XK_KP_Next:
454 462
		if (!next)
455 463
			return;
456 464
		sel = curr = next;
457 465
		calcoffsets();
458 466
		break;
459 467
	case XK_Prior:
468 +
	case XK_KP_Prior:
460 469
		if (!prev)
461 470
			return;
462 471
		sel = curr = prev;
473 482
			sel->out = 1;
474 483
		break;
475 484
	case XK_Right:
485 +
	case XK_KP_Right:
476 486
		if (text[cursor] != '\0') {
477 487
			cursor = nextrune(+1);
478 488
			break;
481 491
			return;
482 492
		/* fallthrough */
483 493
	case XK_Down:
494 +
	case XK_KP_Down:
484 495
		if (sel && sel->right && (sel = sel->right) == next) {
485 496
			curr = next;
486 497
			calcoffsets();