diff -Nrup compose-parse.org/compose-parse.py compose-parse/compose-parse.py
--- compose-parse.org/compose-parse.py	2011-07-07 08:32:39.821735949 +0200
+++ compose-parse/compose-parse.py	2011-07-08 08:28:42.308796071 +0200
@@ -203,11 +203,11 @@ def uniq(*args) :
 	""" Performs a uniq operation on a list or lists """
     	theInputList = []
     	for theList in args:
-    	   theInputList += theList
+		theInputList += theList
     	theFinalList = []
     	for elem in theInputList:
 		if elem not in theFinalList:
-          		theFinalList.append(elem)
+			theFinalList.append(elem)
     	return theFinalList
 
 
@@ -216,12 +216,12 @@ def all_permutations(seq):
 	""" Borrowed from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252178 """
 	""" Produces all permutations of the items of a list """
     	if len(seq) <=1:
-    	    yield seq
+		yield seq
     	else:
-    	    for perm in all_permutations(seq[1:]):
-    	        for i in range(len(perm)+1):
-    	            #nb str[0:1] works in both string and list contexts
-        	        yield perm[:i] + seq[0:1] + perm[i:]
+		for perm in all_permutations(seq[1:]):
+			for i in range(len(perm)+1):
+				#nb str[0:1] works in both string and list contexts
+				yield perm[:i] + seq[0:1] + perm[i:]
 
 def usage():
 	print """compose-parse available parameters:
@@ -229,15 +229,15 @@ def usage():
 	-e, --gtk-expanded	when used with --gtk, create file that repeats first column; not usable in GTK+
 	-g, --gtk		show entries that go to GTK+
 	-h, --help		this craft
-        -m, --multiple		shows compose sequences that result to >1 unicode characters
+	-m, --multiple		shows compose sequences that result to >1 unicode characters
 	-n, --numeric		when used with --gtk, create file with numeric values only
-        -p, --plane1		show plane1 compose sequences
-	-q, --quiet   	 	do not show verbose output (default is verbose)
-        -r, --regression	shows compose sequences that used to exist in pre-update, but are not found in Xorg's Compose.
+	-p, --plane1		show plane1 compose sequences
+	-q, --quiet		do not show verbose output (default is verbose)
+	-r, --regression	shows compose sequences that used to exist in pre-update, but are not found in Xorg's Compose.
 	-s, --statistics	show overall statistics (both algorithmic, non-algorithmic)
 	-u, --unicodedatatxt	show compose sequences derived from UnicodeData.txt (from unicode.org)
 	-w, --warnings		show some non-fatal warnings (useful for maintainer)
-            --win32             process gtk-win32-sequences.txt and produce gtkimcontextsimplewin32seqs.h
+	    --win32		process gtk-win32-sequences.txt and produce gtkimcontextsimplewin32seqs.h
 
 	Default is to show statistics.
 	"""
@@ -325,7 +325,7 @@ def download_file(url):
 	""" Downloads a file provided a URL. Returns the filename. """
 	""" Borks on failure """
 	localfilename = url.split('/')[-1]
-        if not isfile(localfilename) or getsize(localfilename) <= 0:
+	if not isfile(localfilename) or getsize(localfilename) <= 0:
 		if not opt_quiet:
 			print "Downloading ", url, "..."
 		try: 
@@ -337,9 +337,9 @@ def download_file(url):
 			print "Unexpected error: ", sys.exc_info()[0]
 			sys.exit(-1)
 		print " done."
-        else:
+	else:
 		if not opt_quiet:
-                	print "Using cached file for ", url
+			print "Using cached file for ", url
 	return localfilename
 
 def process_gdkkeysymsh():
@@ -401,21 +401,21 @@ def process_gdkkeysymsh():
 	keysymdb['dead_belowmacron'] 	= 0x331
 	"""
 	keysymdb['KP_Multiply']   	= 0x02a
-	keysymdb['KP_Add']        	= 0x02b
+	keysymdb['KP_Add']		= 0x02b
 	keysymdb['KP_Separator']  	= 0x02c
 	keysymdb['KP_Subtract']   	= 0x02d
 	keysymdb['KP_Decimal']    	= 0x02e
 	keysymdb['KP_Divide']     	= 0x02f
-	keysymdb['KP_0']          	= 0x030
-	keysymdb['KP_1']          	= 0x031
-	keysymdb['KP_2']          	= 0x032
-	keysymdb['KP_3']          	= 0x033
-	keysymdb['KP_4']          	= 0x034
-	keysymdb['KP_5']          	= 0x035
-	keysymdb['KP_6']          	= 0x036
-	keysymdb['KP_7']          	= 0x037
-	keysymdb['KP_8']          	= 0x038
-	keysymdb['KP_9']          	= 0x039
+	keysymdb['KP_0']		= 0x030
+	keysymdb['KP_1']		= 0x031
+	keysymdb['KP_2']		= 0x032
+	keysymdb['KP_3']		= 0x033
+	keysymdb['KP_4']		= 0x034
+	keysymdb['KP_5']		= 0x035
+	keysymdb['KP_6']		= 0x036
+	keysymdb['KP_7']		= 0x037
+	keysymdb['KP_8']		= 0x038
+	keysymdb['KP_9']		= 0x039
 	keysymdb['KP_Equal']      	= 0x03d
 	"""
 	""" This is^Wwas preferential treatment for Greek """
@@ -473,21 +473,21 @@ def process_keysymstxt():
 	keysymdb['dead_belowmacron'] 	= 0x331
 	"""
 	keysymdb['KP_Multiply']   	= 0x02a
-	keysymdb['KP_Add']        	= 0x02b
+	keysymdb['KP_Add']		= 0x02b
 	keysymdb['KP_Separator']  	= 0x02c
 	keysymdb['KP_Subtract']   	= 0x02d
 	keysymdb['KP_Decimal']    	= 0x02e
 	keysymdb['KP_Divide']     	= 0x02f
-	keysymdb['KP_0']          	= 0x030
-	keysymdb['KP_1']          	= 0x031
-	keysymdb['KP_2']          	= 0x032
-	keysymdb['KP_3']          	= 0x033
-	keysymdb['KP_4']          	= 0x034
-	keysymdb['KP_5']          	= 0x035
-	keysymdb['KP_6']          	= 0x036
-	keysymdb['KP_7']          	= 0x037
-	keysymdb['KP_8']          	= 0x038
-	keysymdb['KP_9']          	= 0x039
+	keysymdb['KP_0']		= 0x030
+	keysymdb['KP_1']		= 0x031
+	keysymdb['KP_2']		= 0x032
+	keysymdb['KP_3']		= 0x033
+	keysymdb['KP_4']		= 0x034
+	keysymdb['KP_5']		= 0x035
+	keysymdb['KP_6']		= 0x036
+	keysymdb['KP_7']		= 0x037
+	keysymdb['KP_8']		= 0x038
+	keysymdb['KP_9']		= 0x039
 	keysymdb['KP_Equal']      	= 0x03d
 	"""
 	""" This is preferential treatment for Greek """
@@ -563,15 +563,15 @@ def keysymvalue(keysym, file = "n/a", li
 	""" Use file and linenum to when reporting errors """
 	if keysym == "":
 		return 0
-       	if keysymdatabase.has_key(keysym):
-               	return keysymdatabase[keysym]
-       	elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]):
-               	return atoi(keysym[1:], 16)
-       	elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]):
+	if keysymdatabase.has_key(keysym):
+		return keysymdatabase[keysym]
+	elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]):
+		return atoi(keysym[1:], 16)
+	elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]):
 		return atoi(keysym[2:], 16)
 	else:
-        	print 'keysymvalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym }
-               	sys.exit(-1)
+		print 'keysymvalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym }
+		sys.exit(-1)
 
 def keysymunicodevalue(keysym, file = "n/a", linenum = 0):
 	""" Extracts a value from the keysym """
@@ -579,15 +579,15 @@ def keysymunicodevalue(keysym, file = "n
 	""" Use file and linenum to when reporting errors """
 	if keysym == "":
 		return 0
-       	if keysymunicodedatabase.has_key(keysym):
-               	return keysymunicodedatabase[keysym]
-       	elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]):
-               	return atoi(keysym[1:], 16)
-       	elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]):
+	if keysymunicodedatabase.has_key(keysym):
+		return keysymunicodedatabase[keysym]
+	elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]):
+		return atoi(keysym[1:], 16)
+	elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]):
 		return atoi(keysym[2:], 16)
 	else:
-        	print 'keysymunicodevalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym }
-               	sys.exit(-1)
+		print 'keysymunicodevalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym }
+		sys.exit(-1)
 
 def rename_combining(seq):
 	filtered_sequence = []
@@ -625,8 +625,8 @@ if opt_win32:
 			print "I/O error(%s): %s" % (errno, strerror)
 			print "Did not find the win32 compose file %s. Exiting..." % (FILENAME_COMPOSE_WIN32)
 	except:
-	        print "Unexpected error: ", sys.exc_info()[0]
-	        sys.exit(-1)
+		print "Unexpected error: ", sys.exc_info()[0]
+		sys.exit(-1)
 
 	""" Parse the compose file in xorg_compose_sequences_win32 """
 	xorg_compose_sequences_win32 = []
@@ -766,8 +766,8 @@ except IOError, (errno, strerror):
 		print "I/O error(%s): %s" % (errno, strerror)
 		print "Did not find the lookaside compose file %s. Continuing..." % (FILENAME_LOOKASIDE)
 except:
-        print "Unexpected error: ", sys.exc_info()[0]
-        sys.exit(-1)
+	print "Unexpected error: ", sys.exc_info()[0]
+	sys.exit(-1)
 
 
 xorg_compose_sequences_raw = []
@@ -780,10 +780,19 @@ for seq in composefile_lookaside.readlin
 xorg_compose_sequences = []
 xorg_compose_sequences_algorithmic = []
 linenum_compose = 0
+inside_comments = False
 for line in xorg_compose_sequences_raw:
 	linenum_compose += 1
 	line = line.strip()
-	if line is "" or match("^XCOMM", line) or match("^#", line):
+	if line is "" or match("^XCOMM", line) or match("^#", line) or (match("^\/\*", line.strip()) and match("\*\/$", line.strip())):
+		continue
+	if match("^\/\*", line.strip()):
+		inside_comments = True
+		continue
+	if inside_comments:
+		continue
+	if match("\*\/$", line.strip()):
+		inside_comments = False
 		continue
 
 	components = split(':', line)
diff -Nrup compose-parse.org/gdkkeysyms.h compose-parse/gdkkeysyms.h
--- compose-parse.org/gdkkeysyms.h	2011-07-07 08:33:18.761735948 +0200
+++ compose-parse/gdkkeysyms.h	2011-07-08 08:05:49.328796074 +0200
@@ -689,6 +689,7 @@
 #define GDK_OE 0x13bc
 #define GDK_oe 0x13bd
 #define GDK_Ydiaeresis 0x13be
+#define GDK_Ssharp 0x1e9
 #define GDK_overline 0x47e
 #define GDK_kana_fullstop 0x4a1
 #define GDK_kana_openingbracket 0x4a2
diff -Nrup compose-parse.org/keysyms.txt compose-parse/keysyms.txt
--- compose-parse.org/keysyms.txt	2011-07-07 08:33:13.301735945 +0200
+++ compose-parse/keysyms.txt	2011-07-08 08:04:10.948796072 +0200
@@ -1094,6 +1094,7 @@
 0x13bc   U0152   .   # OE                  
 0x13bd   U0153   .   # oe                  
 0x13be   U0178   .   # Ydiaeresis          
+0x1e9e   U1e9e   .   # Ssharp
 0x20a0   U20a0   u   # EcuSign                                      
 0x20a1   U20a1   u   # ColonSign                                    
 0x20a2   U20a2   u   # CruzeiroSign                                 
