> Now the next question. If the Ctrl, Alt or Graphic key(s) were down > while the user mashed that F1... > > A> how do I know this? e.state picks up Shift, but how do I detect the > others? > > B> how, modulo DIY, do I stringify them? str='' if e.state & Gdk::SHIFT_MASK != 0 then str << "Shift"; end if e.state & Gdk::CONTROL_MASK != 0 then str << "Control"; end etc... or { Gdk::SHIFT_MASK => 'shift', Gdk::CONTROL_MASK => 'control', ... }.each { |m. s| str << s + "-" if e.state & m != 0 } or something like that.