diff --git a/Lib/lib-stdwin/Split.py b/Lib/lib-stdwin/Split.py
index 63f5d5f..ef0f2fc 100644
--- a/Lib/lib-stdwin/Split.py
+++ b/Lib/lib-stdwin/Split.py
@@ -18,7 +18,9 @@
 		self.parent = parent
 		self.children = []
 		self.mouse_interest = []
+		self.keybd_interest = []
 		self.timer_interest = []
+		self.altdraw_interest = []
 		self.mouse_focus = 0
 		return self
 	#
@@ -30,18 +32,28 @@
 			child.destroy()
 		del self.children[:]
 		del self.mouse_interest[:]
+		del self.keybd_interest[:]
 		del self.timer_interest[:]
+		del self.altdraw_interest[:]
 		self.mouse_focus = None
 	#
-	def minsize(self, m): return unimpl()
+	def minsize(self, m): return unimpl()	# Should ask children
 	def getbounds(self): return unimpl()
-	def setbounds(self, bounds): unimpl()
+	def setbounds(self, bounds): unimpl()	# Should tell children
+	#
+	def realize(self):
+		for child in self.children:
+			child.realize()
 	#
 	def draw(self, d_detail):
 		# (Could avoid calls to children outside the area)
 		for child in self.children:
 			child.draw(d_detail)
 	#
+	def altdraw(self, detail):
+		for child in self.altdraw_interest:
+			child.altdraw(detail)
+	#
 	# Downcalls only made after certain upcalls
 	#
 	def mouse_down(self, detail):
@@ -60,6 +72,10 @@
 			self.mouse_focus.mouse_up(detail)
 			self.mouse_focus = 0
 	#
+	def keybd(self, type_detail):
+		for child in self.keybd_interest:
+			child.keybd(type_detail)
+	#
 	def timer(self):
 		for child in self.timer_interest:
 			child.timer()
@@ -76,8 +92,12 @@
 		remove(child, self.children)
 		if child in self.mouse_interest:
 			remove(child, self.mouse_interest)
+		if child in self.keybd_interest:
+			remove(child, self.keybd_interest)
 		if child in self.timer_interest:
 			remove(child, self.timer_interest)
+		if child in self.altdraw_interest:
+			remove(child, self.altdraw_interest)
 		if child = self.mouse_focus:
 			self.mouse_focus = 0
 	#
@@ -91,6 +111,16 @@
 			if not self.mouse_interest:
 				self.parent.no_mouse(self)
 	#
+	def need_keybd(self, child):
+		if child not in self.keybd_interest:
+			self.keybd_interest.append(child)
+			self.parent.need_keybd(self)
+	def no_keybd(self, child):
+		if child in self.keybd_interest:
+			remove(child, self.keybd_interest)
+			if not self.keybd_interest:
+				self.parent.no_keybd(self)
+	#
 	def need_timer(self, child):
 		if child not in self.timer_interest:
 			self.timer_interest.append(child)
@@ -101,12 +131,24 @@
 			if not self.timer_interest:
 				self.parent.no_timer(self)
 	#
+	def need_altdraw(self, child):
+		if child not in self.altdraw_interest:
+			self.altdraw_interest.append(child)
+			self.parent.need_altdraw(self)
+	def no_altdraw(self, child):
+		if child in self.altdraw_interest:
+			remove(child, self.altdraw_interest)
+			if not self.altdraw_interest:
+				self.parent.no_altdraw(self)
+	#
 	# The rest are transparent:
 	#
 	def begindrawing(self):
 		return self.parent.begindrawing()
 	def beginmeasuring(self):
 		return self.parent.beginmeasuring()
+	def getwindow(self):
+		return self.parent.getwindow()
 	#
 	def change(self, area):
 		self.parent.change(area)
