| 186 | #endif |
| 187 | |
| 188 | void |
| 189 | ghack_handle_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) |
| 190 | { |
| 191 | static int was_pound = 0; |
| 192 | int key = 0; |
| 193 | int ctl = GDK_CONTROL_MASK; |
| 194 | int alt = GDK_MOD1_MASK; |
| 195 | |
| 196 | /* Turn this on to debug key events */ |
| 197 | #if 0 |
| 198 | g_message("I got a \"%s\" key (%d) %s%s", |
| 199 | gdk_keyval_name (event->keyval), event->keyval, |
| 200 | (event->state&ctl)? "+CONTROL":"", (event->state&alt)? "+ALT":""); |
| 201 | #endif |
| 202 | |
| 203 | switch (event->keyval) { |
| 204 | /* special keys to do stuff with */ |
| 205 | |
| 206 | /* Set up the direction keys */ |
| 207 | |
| 208 | /* First handle the arrow keys -- these always mean move */ |
| 209 | case GDK_Right: |
| 210 | case GDK_rightarrow: |
| 211 | key = Cmd.move_E; |
| 212 | break; |
| 213 | case GDK_Left: |
| 214 | case GDK_leftarrow: |
| 215 | key = Cmd.move_W; |
| 216 | break; |
| 217 | case GDK_Up: |
| 218 | case GDK_uparrow: |
| 219 | key = Cmd.move_N; |
| 220 | break; |
| 221 | case GDK_Down: |
| 222 | case GDK_downarrow: |
| 223 | key = Cmd.move_S; |
| 224 | break; |
| 225 | case GDK_Home: |
| 226 | key = Cmd.move_NW; |
| 227 | break; |
| 228 | case GDK_End: |
| 229 | key = Cmd.move_SW; |
| 230 | break; |
| 231 | case GDK_Page_Down: |
| 232 | key = Cmd.move_SE; |
| 233 | break; |
| 234 | case GDK_Page_Up: |
| 235 | key = Cmd.move_NE; |
| 236 | break; |
| 237 | case ' ': |
| 238 | key = '.'; |
| 239 | break; |
| 240 | |
| 241 | /* Now, handle the numberpad (move or numbers) */ |
| 242 | case GDK_KP_Right: |
| 243 | case GDK_KP_6: |
| 244 | if (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK) |
| 245 | && iflags.num_pad) |
no test coverage detected