Этот код работал для меня, используя Ruby 2.2.5 (с Tk 8.5.12) в Windows 7:
# coding: utf-8
require 'tk'
def lambda_keypress
@lambda_keypress ||= Kernel.lambda do |key_code, key_symbol|
puts "lambda_keypress invoked with keycode #{key_code} and keysym #{key_symbol}."
end
end
def root
$root ||= begin
Tk::Encoding.encoding = ''.encoding
TkRoot.new
end
end
root.bind :KeyPress, lambda_keypress, '%k %K'
Tk.mainloop