As I seem to be on a spree of patches improving the attractivity of XBoard for ICS play, now seems a good time to also ddress the 'bughouse problem', i.e. being able to view the partner game. It is essental that this can be done through a single ICS connection, as ICC does not allow guest logins. Fortunately this is possible; I tried (using a plain telnet client, to be sure I would see all communication) to observe a game while I was playing one, and this worked without any problems. You just will get the boards of both games intermixed. You have to start observing after strting your on game, though, as starting a game seems to clear your observer list. But this is no problem.
So the first step would be to let XBoard automatically send an observe command for the partner game as soon as you start a bughouse game, and then have it suppress the display of all boards of that game that come in (recognizable by the game number), but save it in a separate location from your own game. I am not sure if it makes sense to try to store the entire game, like you store your own game; initially I just want it to remember the latest board it received of that game, without displaying it. This already raises some questions: How do you know which game is your partner's game? Are you informed when your partner starts his game, do the games start simultaneously? I never have played bughouse on an ICS, and it is not that easy to arrange. I suppose both games must be created simultaneously, because if one starts later, what would the server have t do with pieces that are captured in the other? Step 2 would be to display the board somewhere. A quick initial solution would be to display it 'on demand' in stead of your own board. For instance, pressing the right mouse button could replace the board of your own game by the curren partner-game position, (in a similar way that pressing the left Ctrl key would show you the previous position of your own game), and releasing it would switch back to your own game. That way you could have a quick peek at what is going on over there. This is really trivial to implement. Of course a keyboard key could be used for this as well, e.g. right Ctrl. That would not overload the mouse so much. On the other hand, using Ctrl, Shift or Alt keys alone to do something might be a practice we have to abandon, as they are needed as a first step of combination keystrokes Ctrl-Something or capital typing, used as key bindings. Currently all XBoard key bindings are normal letters, but we cannot continue to do that after we implemented move type-in: Every letter or digit must be considered the first character of a Chess move or move number, popping up the move type-in, and being displayed there as first character, like in WinBoard. So for menu commands, we will be thrown back to Ctrl, Alt, Ctrl+Alt and Shift+Alt combinations as key bindings. Of course we could use combinations like Alt+P for peeking at the partner game, but this seems a bit less convenient. An alternative is to use clicking the area between board and holdings. Or requisition some Function key. Any ideas here?
