# File lib/eventmachine.rb, line 1031
1031:         def EventMachine::open_keyboard handler=nil, *args
1032:                 klass = if (handler and handler.is_a?(Class))
1033:                         handler
1034:                 else
1035:                         Class.new( Connection ) {handler and include handler}
1036:                 end
1037: 
1038:                 arity = klass.instance_method(:initialize).arity
1039:                 expected = arity >= 0 ? arity : -(arity + 1)
1040:                 if (arity >= 0 and args.size != expected) or (arity < 0 and args.size < expected)
1041:                         raise ArgumentError, "wrong number of arguments for #{klass}#initialize (#{args.size} for #{expected})"
1042:                 end
1043: 
1044:                 s = read_keyboard
1045:                 c = klass.new s, *args
1046:                 @conns[s] = c
1047:                 block_given? and yield c
1048:                 c
1049:         end