add support for more keypad keys
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.main
							parent
							
								
									c585e8e498
								
							
						
					
					
						commit
						cd2133a5f6
					
				
							
								
								
									
										11
									
								
								dmenu.c
								
								
								
								
							
							
						
						
									
										11
									
								
								dmenu.c
								
								
								
								
							|  | @ -360,9 +360,11 @@ keypress(XKeyEvent *ev) | |||
| 			                  utf8, utf8, win, CurrentTime); | ||||
| 			return; | ||||
| 		case XK_Left: | ||||
| 		case XK_KP_Left: | ||||
| 			movewordedge(-1); | ||||
| 			goto draw; | ||||
| 		case XK_Right: | ||||
| 		case XK_KP_Right: | ||||
| 			movewordedge(+1); | ||||
| 			goto draw; | ||||
| 		case XK_Return: | ||||
|  | @ -400,6 +402,7 @@ insert: | |||
| 			insert(buf, len); | ||||
| 		break; | ||||
| 	case XK_Delete: | ||||
| 	case XK_KP_Delete: | ||||
| 		if (text[cursor] == '\0') | ||||
| 			return; | ||||
| 		cursor = nextrune(+1); | ||||
|  | @ -410,6 +413,7 @@ insert: | |||
| 		insert(NULL, nextrune(-1) - cursor); | ||||
| 		break; | ||||
| 	case XK_End: | ||||
| 	case XK_KP_End: | ||||
| 		if (text[cursor] != '\0') { | ||||
| 			cursor = strlen(text); | ||||
| 			break; | ||||
|  | @ -429,6 +433,7 @@ insert: | |||
| 		cleanup(); | ||||
| 		exit(1); | ||||
| 	case XK_Home: | ||||
| 	case XK_KP_Home: | ||||
| 		if (sel == matches) { | ||||
| 			cursor = 0; | ||||
| 			break; | ||||
|  | @ -437,6 +442,7 @@ insert: | |||
| 		calcoffsets(); | ||||
| 		break; | ||||
| 	case XK_Left: | ||||
| 	case XK_KP_Left: | ||||
| 		if (cursor > 0 && (!sel || !sel->left || lines > 0)) { | ||||
| 			cursor = nextrune(-1); | ||||
| 			break; | ||||
|  | @ -445,18 +451,21 @@ insert: | |||
| 			return; | ||||
| 		/* fallthrough */ | ||||
| 	case XK_Up: | ||||
| 	case XK_KP_Up: | ||||
| 		if (sel && sel->left && (sel = sel->left)->right == curr) { | ||||
| 			curr = prev; | ||||
| 			calcoffsets(); | ||||
| 		} | ||||
| 		break; | ||||
| 	case XK_Next: | ||||
| 	case XK_KP_Next: | ||||
| 		if (!next) | ||||
| 			return; | ||||
| 		sel = curr = next; | ||||
| 		calcoffsets(); | ||||
| 		break; | ||||
| 	case XK_Prior: | ||||
| 	case XK_KP_Prior: | ||||
| 		if (!prev) | ||||
| 			return; | ||||
| 		sel = curr = prev; | ||||
|  | @ -473,6 +482,7 @@ insert: | |||
| 			sel->out = 1; | ||||
| 		break; | ||||
| 	case XK_Right: | ||||
| 	case XK_KP_Right: | ||||
| 		if (text[cursor] != '\0') { | ||||
| 			cursor = nextrune(+1); | ||||
| 			break; | ||||
|  | @ -481,6 +491,7 @@ insert: | |||
| 			return; | ||||
| 		/* fallthrough */ | ||||
| 	case XK_Down: | ||||
| 	case XK_KP_Down: | ||||
| 		if (sel && sel->right && (sel = sel->right) == next) { | ||||
| 			curr = next; | ||||
| 			calcoffsets(); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue