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