Это все еще ошибка в Shoes on Windows на момент написания. Если вам удастся выполнить очистку и перерисовку всего, что вы можете снова вернуть события нажатия клавиш, например:
Shoes.app do
def drawbutton
@holder.clear do
button "foo" do
drawbutton
end
end
end
@holder = stack
drawbutton
keypress do |k|
if k==:f1
alert("Foo bar")
end
end
end
Хотя этот трюк подходит для примера в вашем вопросе, я не уверен, что он бы хорошо подошел для реального приложения.