def self.keysym_to_keycode k
case k
when :down then Curses::KEY_DOWN
when :up then Curses::KEY_UP
when :left then Curses::KEY_LEFT
when :right then Curses::KEY_RIGHT
when :page_down then Curses::KEY_NPAGE
when :page_up then Curses::KEY_PPAGE
when :backspace then Curses::KEY_BACKSPACE
when :home then Curses::KEY_HOME
when :end then Curses::KEY_END
when :ctrl_l then "\f".ord
when :ctrl_g then "\a".ord
when :tab then "\t".ord
when :enter, :return then 10
else
if k.is_a?(String) && k.length == 1
k.ord
else
raise ArgumentError, "unknown key name '#{k}'"
end
end
end