whoops, there were a few '>=' signs where there should have been '==' signs.
diff -ur gtetrinet-0.7.11/src/config.c gtetrinet-0.7.11-new/src/config.c --- gtetrinet-0.7.11/src/config.c 2006-11-04 01:49:49.000000000 +1300 +++ gtetrinet-0.7.11-new/src/config.c 2009-12-31 18:29:29.000000000 +1300 @@ -62,6 +62,7 @@ GDK_Right, GDK_Left, GDK_Up, + GDK_x, GDK_Control_R, GDK_Down, GDK_space, @@ -72,7 +73,19 @@ GDK_3, GDK_4, GDK_5, - GDK_6 + GDK_6, + GDK_y, + GDK_h, + GDK_n, + GDK_u, + GDK_j, + GDK_m, + GDK_i, + GDK_k, + GDK_comma, + GDK_o, + GDK_l, + GDK_period, }; guint keys[K_NUM]; @@ -268,6 +281,15 @@ else keys[K_ROTRIGHT] = defaultkeys[K_ROTRIGHT]; + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rotate_up", NULL); + if (p) + { + keys[K_ROTUP] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_ROTUP] = defaultkeys[K_ROTUP]; + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rotate_left", NULL); if (p) { @@ -368,6 +390,114 @@ keys[K_SPECIAL6] = defaultkeys[K_SPECIAL6]; + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall0", NULL); + if (p) + { + keys[K_L0] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L0] = defaultkeys[K_L0]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall1", NULL); + if (p) + { + keys[K_L1] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L1] = defaultkeys[K_L1]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall2", NULL); + if (p) + { + keys[K_L2] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L2] = defaultkeys[K_L2]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall3", NULL); + if (p) + { + keys[K_L3] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L3] = defaultkeys[K_L3]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall4", NULL); + if (p) + { + keys[K_L4] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L4] = defaultkeys[K_L4]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/leftwall5", NULL); + if (p) + { + keys[K_L5] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_L5] = defaultkeys[K_L5]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall0", NULL); + if (p) + { + keys[K_R0] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R0] = defaultkeys[K_R0]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall1", NULL); + if (p) + { + keys[K_R1] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R1] = defaultkeys[K_R1]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall2", NULL); + if (p) + { + keys[K_R2] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R2] = defaultkeys[K_R2]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall3", NULL); + if (p) + { + keys[K_R3] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R3] = defaultkeys[K_R3]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall4", NULL); + if (p) + { + keys[K_R4] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R4] = defaultkeys[K_R4]; + + p = gconf_client_get_string (gconf_client, "/apps/gtetrinet/keys/rightwall5", NULL); + if (p) + { + keys[K_R5] = gdk_keyval_to_lower (gdk_keyval_from_name (p)); + g_free (p); + } + else + keys[K_R5] = defaultkeys[K_R5]; + /* Get the timestamp option. */ timestampsenable = gconf_client_get_bool (gconf_client, "/apps/gtetrinet/partyline/enable_timestamps", NULL); @@ -517,6 +647,18 @@ } void +keys_rotate_up_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; /* Suppress compile warnings */ + cnxn_id = cnxn_id; /* Suppress compile warnings */ + + keys[K_ROTUP] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void keys_rotate_right_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry) @@ -625,6 +767,150 @@ } void +keys_leftwall0_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L0] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_leftwall1_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L1] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_leftwall2_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L2] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_leftwall3_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L3] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_leftwall4_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L4] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_leftwall5_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_L5] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall0_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R0] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall1_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R1] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall2_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R2] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall3_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R3] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall4_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R4] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void +keys_rightwall5_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry) +{ + + client = client; + cnxn_id = cnxn_id; + + keys[K_R5] = gdk_keyval_to_lower (gdk_keyval_from_name (gconf_value_get_string (gconf_entry_get_value (entry)))); +} + +void partyline_enable_timestamps_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry) diff -ur gtetrinet-0.7.11/src/config.h gtetrinet-0.7.11-new/src/config.h --- gtetrinet-0.7.11/src/config.h 2005-03-19 10:19:17.000000000 +1300 +++ gtetrinet-0.7.11-new/src/config.h 2009-12-31 18:27:40.000000000 +1300 @@ -57,6 +57,11 @@ GConfEntry *entry); void +keys_rotate_up_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void keys_rotate_right_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry); @@ -102,6 +107,66 @@ GConfEntry *entry); void +keys_leftwall0_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_leftwall1_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_leftwall2_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_leftwall3_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_leftwall4_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_leftwall5_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall0_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall1_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall2_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall3_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall4_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void +keys_rightwall5_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry); + +void partyline_enable_timestamps_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry); @@ -118,8 +183,9 @@ typedef enum { K_RIGHT, - K_LEFT, + K_LEFT, K_ROTRIGHT, + K_ROTUP, K_ROTLEFT, K_DOWN, K_DROP, @@ -131,6 +197,18 @@ K_SPECIAL4, K_SPECIAL5, K_SPECIAL6, + K_L0, + K_L1, + K_L2, + K_L3, + K_L4, + K_L5, + K_R5, + K_R4, + K_R3, + K_R2, + K_R1, + K_R0, /* not a key but the number of configurable keys */ K_NUM } GTetrinetKeys; diff -ur gtetrinet-0.7.11/src/dialogs.c gtetrinet-0.7.11-new/src/dialogs.c --- gtetrinet-0.7.11/src/dialogs.c 2006-11-04 01:49:49.000000000 +1300 +++ gtetrinet-0.7.11-new/src/dialogs.c 2009-12-31 18:02:02.000000000 +1300 @@ -538,6 +538,7 @@ actions[K_LEFT] = _("Move left"); actions[K_DOWN] = _("Move down"); actions[K_ROTRIGHT] = _("Rotate right"); + actions[K_ROTUP] = _("Rotate 180"); actions[K_ROTLEFT] = _("Rotate left"); actions[K_DROP] = _("Drop piece"); actions[K_DISCARD] = _("Discard special"); @@ -548,11 +549,24 @@ actions[K_SPECIAL4] = _("Special to field 4"); actions[K_SPECIAL5] = _("Special to field 5"); actions[K_SPECIAL6] = _("Special to field 6"); + actions[K_L0] = _("Move to left wall"); + actions[K_L1] = _("Move 1 away from left wall"); + actions[K_L2] = _("Move 2 away from left wall"); + actions[K_L3] = _("Move 3 away from left wall"); + actions[K_L4] = _("Move 4 away from left wall"); + actions[K_L5] = _("Move 5 away from left wall"); + actions[K_R0] = _("Move to right wall"); + actions[K_R1] = _("Move 1 away from right wall"); + actions[K_R2] = _("Move 2 away from right wall"); + actions[K_R3] = _("Move 3 away from right wall"); + actions[K_R4] = _("Move 4 away from right wall"); + actions[K_R5] = _("Move 5 away from right wall"); gconf_keys[K_RIGHT] = g_strdup ("/apps/gtetrinet/keys/right"); gconf_keys[K_LEFT] = g_strdup ("/apps/gtetrinet/keys/left"); gconf_keys[K_DOWN] = g_strdup ("/apps/gtetrinet/keys/down"); gconf_keys[K_ROTRIGHT] = g_strdup ("/apps/gtetrinet/keys/rotate_right"); + gconf_keys[K_ROTUP] = g_strdup ("/apps/gtetrinet/keys/rotate_up"); gconf_keys[K_ROTLEFT] = g_strdup ("/apps/gtetrinet/keys/rotate_left"); gconf_keys[K_DROP] = g_strdup ("/apps/gtetrinet/keys/drop"); gconf_keys[K_DISCARD] = g_strdup ("/apps/gtetrinet/keys/discard"); @@ -563,6 +577,18 @@ gconf_keys[K_SPECIAL4] = g_strdup ("/apps/gtetrinet/keys/special4"); gconf_keys[K_SPECIAL5] = g_strdup ("/apps/gtetrinet/keys/special5"); gconf_keys[K_SPECIAL6] = g_strdup ("/apps/gtetrinet/keys/special6"); + gconf_keys[K_L0] = g_strdup ("/apps/gtetrinet/keys/leftwall0"); + gconf_keys[K_L1] = g_strdup ("/apps/gtetrinet/keys/leftwall1"); + gconf_keys[K_L2] = g_strdup ("/apps/gtetrinet/keys/leftwall2"); + gconf_keys[K_L3] = g_strdup ("/apps/gtetrinet/keys/leftwall3"); + gconf_keys[K_L4] = g_strdup ("/apps/gtetrinet/keys/leftwall4"); + gconf_keys[K_L5] = g_strdup ("/apps/gtetrinet/keys/leftwall5"); + gconf_keys[K_R0] = g_strdup ("/apps/gtetrinet/keys/rightwall0"); + gconf_keys[K_R1] = g_strdup ("/apps/gtetrinet/keys/rightwall1"); + gconf_keys[K_R2] = g_strdup ("/apps/gtetrinet/keys/rightwall2"); + gconf_keys[K_R3] = g_strdup ("/apps/gtetrinet/keys/rightwall3"); + gconf_keys[K_R4] = g_strdup ("/apps/gtetrinet/keys/rightwall4"); + gconf_keys[K_R5] = g_strdup ("/apps/gtetrinet/keys/rightwall5"); for (i = 0; i < K_NUM; i ++) { gtk_list_store_append (keys_store, &iter); diff -ur gtetrinet-0.7.11/src/gtetrinet.c gtetrinet-0.7.11-new/src/gtetrinet.c --- gtetrinet-0.7.11/src/gtetrinet.c 2005-03-19 10:19:18.000000000 +1300 +++ gtetrinet-0.7.11-new/src/gtetrinet.c 2009-12-31 18:14:27.000000000 +1300 @@ -170,6 +170,10 @@ (GConfClientNotifyFunc) keys_rotate_left_changed, NULL, NULL, NULL); + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rotate_up", + (GConfClientNotifyFunc) keys_rotate_up_changed, + NULL, NULL, NULL); + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rotate_right", (GConfClientNotifyFunc) keys_rotate_right_changed, NULL, NULL, NULL); @@ -210,6 +214,54 @@ (GConfClientNotifyFunc) keys_special6_changed, NULL, NULL, NULL); + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall0", + (GConfClientNotifyFunc) keys_leftwall0_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall1", + (GConfClientNotifyFunc) keys_leftwall1_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall2", + (GConfClientNotifyFunc) keys_leftwall2_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall3", + (GConfClientNotifyFunc) keys_leftwall3_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall4", + (GConfClientNotifyFunc) keys_leftwall4_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/leftwall5", + (GConfClientNotifyFunc) keys_leftwall5_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall0", + (GConfClientNotifyFunc) keys_rightwall0_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall1", + (GConfClientNotifyFunc) keys_rightwall1_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall2", + (GConfClientNotifyFunc) keys_rightwall2_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall3", + (GConfClientNotifyFunc) keys_rightwall3_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall4", + (GConfClientNotifyFunc) keys_rightwall4_changed, + NULL, NULL, NULL); + + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/keys/rightwall5", + (GConfClientNotifyFunc) keys_rightwall5_changed, + NULL, NULL, NULL); + gconf_client_notify_add (gconf_client, "/apps/gtetrinet/partyline/enable_timestamps", (GConfClientNotifyFunc) partyline_enable_timestamps_changed, NULL, NULL, NULL); diff -ur gtetrinet-0.7.11/src/tetrinet.c gtetrinet-0.7.11-new/src/tetrinet.c --- gtetrinet-0.7.11/src/tetrinet.c 2006-09-02 22:59:13.000000000 +1200 +++ gtetrinet-0.7.11-new/src/tetrinet.c 2009-12-31 19:01:07.000000000 +1300 @@ -1736,6 +1736,14 @@ tetris_drawcurrentblock (); return TRUE; } + else if (gdk_keyval_to_lower (keyval) == keys[K_ROTUP]) { + if (!nextblocktimeout) + sound_playsound (S_ROTATE); + tetris_blockrotate (-1); + tetris_blockrotate (-1); + tetris_drawcurrentblock (); + return TRUE; + } else if (gdk_keyval_to_lower (keyval) == keys[K_ROTLEFT]) { if (!nextblocktimeout) sound_playsound (S_ROTATE); @@ -1753,6 +1761,44 @@ tetris_drawcurrentblock (); return TRUE; } + else if ((gdk_keyval_to_lower (keyval) == keys[K_L0]) || + (gdk_keyval_to_lower (keyval) == keys[K_L1]) || + (gdk_keyval_to_lower (keyval) == keys[K_L2]) || + (gdk_keyval_to_lower (keyval) == keys[K_L3]) || + (gdk_keyval_to_lower (keyval) == keys[K_L4]) || + (gdk_keyval_to_lower (keyval) == keys[K_L5]) || + (gdk_keyval_to_lower (keyval) == keys[K_R5]) || + (gdk_keyval_to_lower (keyval) == keys[K_R4]) || + (gdk_keyval_to_lower (keyval) == keys[K_R3]) || + (gdk_keyval_to_lower (keyval) == keys[K_R2]) || + (gdk_keyval_to_lower (keyval) == keys[K_R1]) || + (gdk_keyval_to_lower (keyval) == keys[K_R0])){ + int i, keypos, gkv; + gkv = gdk_keyval_to_lower (keyval); + for(i = K_L0; i <= K_R0; i++){ + if(keys[i] == gkv){ + keypos = i; + } + } + if(keypos <= K_L5){ + for (i = 0; i < 12; i++){ + tetris_blockmove (-1); + } + for (i = keypos; i > K_L0; i--){ + tetris_blockmove (1); + } + } + else if(keypos > K_L5){ + for (i = 0; i < 12; i++){ + tetris_blockmove (1); + } + for (i = keypos; i < K_R0; i++){ + tetris_blockmove (-1); + } + } + tetris_drawcurrentblock (); + return TRUE; + } else if (gdk_keyval_to_lower (keyval) == keys[K_DOWN]) { if (!downpressed) { tetrinet_timeout ();