xmodmap
will not take you to your goal. The closest in its repertoire is this paragraph (reformatted to show the points):
keycode
NUMBER =
KEYSYMNAME ...
The list of keysyms is assigned to the indicated keycode (which may be specified in decimal, hex or octal and can be determined by running the xev program). Up to eight keysyms may be attached to a key, however the last four are not used in any major X server implementation.
- The first keysym is used when no modifier key is pressed in conjunction with this key,
- the second with
Shift
,
- the third when the
Mode_switch
key is used with this key and
- the fourth when both the
Mode_switch
and Shift
keys are used.
That is, you could use xmodmap to associate some existing key with the shift-modifier. However, you want that existing key to be controlspace which does not correspond to a key you are likely to find on your keyboard—nor is there an existing keysym for it. Rather, you may use controlspace on occasion to generate an ASCII NUL, but it is so rarely used that there is no standard key on the keyboard for this.
However - both xterm
and urxvt
can be configured, separately and with different methods to distinguish controlshiftspace. With xterm
, that would be the translations
resource, while urxvt
has a keysym.sym
resource.
If you are using xmodmap
, likely you are using either xterm
or rxvt
(perhaps urxvt
). With other terminals, people tend to wade into the xkb
morass. But reviewing the documentation, it seems to have the same limitation as xmodmap
(essentially more of the same thing, no genuinely new capability in this area).