[Tux4kids-commits] r623 - in tuxtype/branches/tuxtype-1.5.17_soc1: . data data/images/hands data/images/keyboard src

sreyas-guest at alioth.debian.org sreyas-guest at alioth.debian.org
Thu Aug 14 05:39:03 UTC 2008


Author: sreyas-guest
Date: 2008-08-14 05:39:03 +0000 (Thu, 14 Aug 2008)
New Revision: 623

Added:
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/lshift.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/none.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/rshift.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_None.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C13.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D08.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D09.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D10.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D11.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D12.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E00.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E02.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E03.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E04.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E05.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E06.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E07.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_NA01.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_None.png
Modified:
   tuxtype/branches/tuxtype-1.5.17_soc1/ChangeLog
   tuxtype/branches/tuxtype-1.5.17_soc1/data/Makefile.am
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/0.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/1.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/2.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/3.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/4.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/5.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/6.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/7.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/8.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/9.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/Makefile.am
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/hands.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/Makefile.am
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard-us.png
   tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard.png
   tuxtype/branches/tuxtype-1.5.17_soc1/src/alphabet.c
   tuxtype/branches/tuxtype-1.5.17_soc1/src/funcs.h
   tuxtype/branches/tuxtype-1.5.17_soc1/src/practice.c
Log:


Modified: tuxtype/branches/tuxtype-1.5.17_soc1/ChangeLog
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/ChangeLog	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/ChangeLog	2008-08-14 05:39:03 UTC (rev 623)
@@ -1,4 +1,16 @@
+3 Aug 2008 - svn revision 599
+[ Sreyas Kurumanghat <k.sreyas at gmail.com ]
+	- Added keypress details for wrong key pressed in practice.
 
+3 Aug 2008 - svn revision 580
+[ Sreyas Kurumanghat <k.sreyas at gmail.com ]
+	- Added automatic keyboard layout generation in practice.c.
+	- Modified the keyboard.lst file format. The current format can be any of the three below:
+	- char
+	- finger|char
+	- finger|char|latin character
+	- Features added so that the information about the keyboard gets updated each time the game is run.
+
 13 Apr 2008 - svn revision 460
 [ David Bruce <dbruce at tampabay.rr.com> ]
        - fixed small typo bug in alphabet.c (thanks Patrick Winnertz)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/Makefile.am
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/data/Makefile.am	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/data/Makefile.am	2008-08-14 05:39:03 UTC (rev 623)
@@ -5,4 +5,5 @@
 
 tuxtypedatadir = $(pkgdatadir)/data
 
-dist_tuxtypedata_DATA = keyboard.lst
+dist_tuxtypedata_DATA = keyboard.lst \
+			phrases.txt

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/0.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/1.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/2.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/3.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/4.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/5.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/6.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/7.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/8.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/9.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/Makefile.am
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/Makefile.am	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/Makefile.am	2008-08-14 05:39:03 UTC (rev 623)
@@ -8,7 +8,11 @@
 6.png\
 7.png\
 8.png\
-9.png
+9.png\
+none.png\
+lshift.png\
+rshift.png\
+fishy1.png
 
 
 
@@ -25,9 +29,11 @@
 	$(INSTALL_DATA) $(srcdir)/7.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/7.png
 	$(INSTALL_DATA) $(srcdir)/8.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/8.png
 	$(INSTALL_DATA) $(srcdir)/9.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/9.png
+	$(INSTALL_DATA) $(srcdir)/lshift.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/lshift.png
+	$(INSTALL_DATA) $(srcdir)/rshift.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/rshift.png
+	$(INSTALL_DATA) $(srcdir)/none.png $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/none.png
 
 
-
 uninstall-local:
 	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/0.png
 	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/1.png
@@ -40,3 +46,6 @@
 	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/7.png
 	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/8.png
 	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/9.png
+	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/lshift.png
+	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/rshift.png
+	rm -f $(DESTDIR)$(prefix)/share/$(PACKAGE)/data/images/hands/none.png

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/hands.png
===================================================================
(Binary files differ)

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/lshift.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/lshift.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/none.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/none.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/rshift.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/hands/rshift.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/Makefile.am
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/Makefile.am	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/Makefile.am	2008-08-14 05:39:03 UTC (rev 623)
@@ -10,4 +10,68 @@
   esc.png \
   larrow.png \
   space.png \
-  rarrow.png
+  rarrow.png\
+	keyboard_B05.png \
+	keyboard_C11.png \
+	keyboard_E04.png \
+	keyboard_A00.png \
+	keyboard_B06.png \
+	keyboard_C12.png \
+	keyboard_E05.png \
+	keyboard_A01.png \
+	keyboard_B07.png \
+	keyboard_C13.png \
+	keyboard_E06.png \
+	keyboard_A02.png \
+	keyboard_B08.png \
+	keyboard_D00.png \
+	keyboard_E07.png \
+	keyboard_A03.png \
+	keyboard_B09.png \
+	keyboard_D01.png \
+	keyboard_A04.png \
+	keyboard_B10.png \
+	keyboard_D02.png \
+	keyboard_None.png \
+	keyboard_A05.png \
+	keyboard_B11.png \
+	keyboard_D03.png \
+	keyboard_A06.png \
+	keyboard_B12.png \
+	keyboard_D04.png \
+	keyboard_A07.png \
+	keyboard_B13.png \
+	keyboard_D05.png \
+	keyboard_A08.png \
+	keyboard_C00.png \
+	keyboard_D06.png \
+	keyboard_A09.png \
+	keyboard_C01.png \
+	keyboard_D07.png \
+	keyboard_A10.png \
+	keyboard_C02.png \
+	keyboard_D08.png \
+	keyboard_A11.png \
+	keyboard_C03.png \
+	keyboard_D09.png \
+	keyboard_A12.png \
+	keyboard_C04.png \
+	keyboard_D10.png \
+	keyboard_A13.png \
+	keyboard_C05.png \
+	keyboard_D11.png \
+	keyboard_B00.png \
+	keyboard_C06.png \
+	keyboard_D12.png \
+	keyboard_B01.png \
+	keyboard_C07.png \
+	keyboard_E00.png \
+	keyboard_B02.png \
+	keyboard_C08.png \
+	keyboard_E01.png \
+	keyboard_B03.png \
+	keyboard_C09.png \
+	keyboard_E02.png \
+	keyboard_B04.png \
+	keyboard_C10.png \
+	keyboard_E03.png

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard-us.png
===================================================================
(Binary files differ)

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard.png
===================================================================
(Binary files differ)

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_A13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_B13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_C13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_D12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_E07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_None.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboardN_None.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_A13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_B13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C13.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_C13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D08.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D08.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D09.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D09.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D10.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D11.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D12.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_D12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E00.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E00.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E02.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E02.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E03.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E03.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E04.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E04.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E05.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E05.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E06.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E06.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E07.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_E07.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_NA01.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_NA01.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_None.png
===================================================================
(Binary files differ)


Property changes on: tuxtype/branches/tuxtype-1.5.17_soc1/data/images/keyboard/keyboard_None.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/src/alphabet.c
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/src/alphabet.c	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/src/alphabet.c	2008-08-14 05:39:03 UTC (rev 623)
@@ -5,6 +5,8 @@
     begin                : Jan 6 2003
     copyright            : (C) 2003 by Jesse Andrews
     email                : jdandr2 at tux4kids.net
+Revised extensively: 2008
+Sreyas Kurumanghat <k.sreyas at gmail.com>
  ***************************************************************************/
 
 /***************************************************************************
@@ -55,14 +57,22 @@
 
 /* An individual item in the list of unicode characters in the keyboard setup.   */
 /* Basically, just the Unicode value for the key and the finger used to type it. */
+/*typedef struct keymap {
+	char keyname[5];
+	int shift;
+} keymap;*/
 typedef struct kbd_char {
   wchar_t unicode_value;
   char finger;
+	//keymap key;
+	char keyname[5];
+	int shift;
+	char latin_char;
 } kbd_char;
 
 /* List with one entry for each typable character in keyboard setup - has the */
 /* Unicode value of the key and the associated fingering.                     */
-static kbd_char keyboard_list[MAX_UNICODES] = {0, -1};
+static kbd_char keyboard_list[MAX_UNICODES] = {0, -1,0,0,-1};
 
 
 
@@ -84,6 +94,7 @@
 static void clear_keyboard(void);
 static int unicode_in_key_list(wchar_t uni_char);
 int check_needed_unicodes_str(const wchar_t* s);
+int map_keys(wchar_t wide_char,kbd_char* keyboard_entry);
 
 #ifndef WIN32
 #ifndef MACOSX
@@ -182,18 +193,57 @@
         {
           fprintf(stderr, "Adding key: Unicode char = '%C'\tUnicode value = %d\tfinger = %d\n",
                   wide_str[2], wide_str[2], wcstol(&wide_str[0], NULL, 0)); 
-        }
+	}
 
         /* Just plug values into array: */
         keyboard_list[k].unicode_value = wide_str[2];
         keyboard_list[k].finger = wcstol(&wide_str[0], NULL, 0);
+	if (wcslen(wide_str) <5)
+	{
+		if(!settings.use_english)
+		{
+			map_keys(-1,&keyboard_list[k]);
+			keyboard_list[k].latin_char=-1;
+			keyboard_list[k].finger = wcstol(&wide_str[0], NULL, 0);
+		}
+		else
+		{
+			map_keys(wide_str[2],&keyboard_list[k]);
+			keyboard_list[k].latin_char=wide_str[2];
+		}
+	}
+	else
+	{
+		map_keys(wide_str[4],&keyboard_list[k]);
+		keyboard_list[k].latin_char=wide_str[4];
+	}
         k++;
       }
+	else
+	{
+		if(wcslen(wide_str)==1)
+		{
+			if(!settings.use_english)
+			{
+				keyboard_list[k].unicode_value = wide_str[0];
+				map_keys(-1,&keyboard_list[k]);
+				keyboard_list[k].latin_char=-1;
+			}
+			else
+			{
+				keyboard_list[k].unicode_value = wide_str[0];
+				map_keys(-1,&keyboard_list[k]);
+				keyboard_list[k].latin_char=wide_str[0];
+			}
+			k++;
+		}
+		
+	}
+			
     } while (!feof(f));
 
 
     fclose(f);
-
     LOG("Leaving LoadKeyboard()\n");
     return 1;
   }
@@ -204,8 +254,31 @@
 /* Returns -1 if somehow no finger associated with a Unicode value    */
 /* in the list (shouldn't happen).                                    */
 /* Returns -2 if Unicode value not in list.                           */
-int GetFinger(wchar_t uni_char)
+int GetFinger(int i)
 {
+  if (i == -1)
+  {
+    fprintf(stderr, "GetFinger() - Unicode char '%C' not found in list.\n");
+    return -2;
+  }
+
+  if ((keyboard_list[i].finger < 0)
+   || (keyboard_list[i].finger > 9))
+  {
+    fprintf(stderr, "GetFinger() - Unicode char '%C' has no valid finger.\n");
+    return -1;
+  }  
+
+  return (int)keyboard_list[i].finger; /* Keep compiler from complaining */
+}
+
+int GetShift(int i)
+{
+	return keyboard_list[i].shift;
+}
+
+int GetIndex(wchar_t uni_char)
+{
   int i = 0;
 
   while ((i < MAX_UNICODES)
@@ -216,22 +289,40 @@
 
   if (i == MAX_UNICODES)
   {
-    fprintf(stderr, "GetFinger() - Unicode char '%C' not found in list.\n", uni_char);
-    return -2;
+    fprintf(stderr, "GeteKeypress() - Unicode char '%C' not found in list.\n", uni_char);
+    return -1;
   }
 
-  if ((keyboard_list[i].finger < 0)
-   || (keyboard_list[i].finger > 9))
-  {
-    fprintf(stderr, "GetFinger() - Unicode char '%C' has no valid finger.\n",uni_char);
-    return -1;
-  }  
+  return i;
+}
 
-  return (int)keyboard_list[i].finger; /* Keep compiler from complaining */
+void GetKeyPos(int index, char *buf)
+{
+	sprintf(buf,"keyboard/keyboard_%s.png", keyboard_list[index].keyname);	
 }
 
+void GetWrongKeyPos(int index, char *buf)
+{
+	sprintf(buf,"keyboard/keyboardN_%s.png", keyboard_list[index].keyname);
+}
 
-
+void GetKeyShift(int index, char *buf)
+{
+	if(keyboard_list[index].shift==0)
+		sprintf(buf,"keyboard/keyboard_None.png");
+		else
+		 	if(keyboard_list[index].shift==1)
+				sprintf(buf,"keyboard/keyboard_D00.png");
+				else
+							sprintf(buf,"keyboard/keyboard_D12.png", settings.default_data_path);			
+}
+wchar_t GetLastKey()
+{
+	if(!num_chars_used)
+		return -1;
+	else
+		return keyboard_list[num_chars_used-1].unicode_value;
+} 
 int unicode_in_key_list(wchar_t uni_char)
 {
   int i = 0;
@@ -257,50 +348,28 @@
   SDL_Surface* bg = NULL;
   SDL_Rect dstrect;
   Uint32 color_key;
-  /* To covert SDL_Colour to SDLPango_Matrix*/
-  SDLPango_Matrix* colour = NULL;
-  /* Create a context which contains Pango objects.*/
-  SDLPango_Context* context = NULL;
 
-  LOG("\nEntering BlackOutline()\n");
-  DEBUGCODE{ fprintf(stderr, "will attempt to render: %s\n", t); }
+  LOG("Entering BlackOutline()\n");
 
+/* Simply passthrough to SDLPango version if available (i.e. not under Windows):*/
+#ifndef WIN32
+#ifndef MACOSX
+return BlackOutline_SDLPango(t, font, c);
+#endif
+#endif
+
+
   if (!t || !font || !c)
   {
     fprintf(stderr, "BlackOutline(): invalid ptr parameter, returning.");
     return NULL;
   }
 
-  /* SDLPango crashes on 64 bit machines if passed empty string - Debian Bug#439071 */
-  if (*t == '\0')
-  {
-    fprintf(stderr, "BlackOutline(): empty string arg - must return to avoid segfault.");
-    return NULL;
-  }
+  black_letters = TTF_RenderUTF8_Blended((TTF_Font*)font, t, black);
 
-  colour = SDL_Colour_to_SDLPango_Matrix(c);
-  
-  /* Create the context */
-  context = SDLPango_CreateContext();	
-  SDLPango_SetDpi(context, 125.0, 125.0);
-  /* Set the color */
-  SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER );
-  SDLPango_SetBaseDirection(context, SDLPANGO_DIRECTION_LTR);
-  /* Set text to context*/  
-  SDLPango_SetMarkup(context, t, -1); 
-
-  if (!context)
-  {
-    fprintf (stderr, "In BlackOutline(), could not create context for %s", t);
-    return NULL;
-  }
-
-  black_letters = SDLPango_CreateSurfaceDraw(context);
-
   if (!black_letters)
   {
     fprintf (stderr, "Warning - BlackOutline() could not create image for %s\n", t);
-	SDLPango_FreeContext(context);
     return NULL;
   }
 
@@ -309,18 +378,7 @@
                             (black_letters->h) + 5,
                              32,
                              RMASK, GMASK, BMASK, AMASK);
-  if (!bg)
-  {
-    fprintf (stderr, "Warning - BlackOutline() - bg creation failed\n");
-    SDL_FreeSurface(black_letters);
-	SDLPango_FreeContext(context);
-    return NULL;
-  }
-
-  /* Draw text on a existing surface*/ 
-  SDLPango_Draw(context, bg, 0, 0);
-
-  /* Use color key for eventual transparency:*/ 
+  /* Use color key for eventual transparency: */
   color_key = SDL_MapRGB(bg->format, 10, 10, 10);
   SDL_FillRect(bg, NULL, color_key);
 
@@ -337,23 +395,19 @@
   SDL_FreeSurface(black_letters);
 
   /* --- Put the color version of the text on top! --- */
-  SDLPango_SetDefaultColor(context, colour);
-  white_letters = SDLPango_CreateSurfaceDraw(context);
+  /* NOTE we cast away the 'const-ness' to keep compliler from complaining: */
+  white_letters = TTF_RenderUTF8_Blended((TTF_Font*)font, t, *c);
   dstrect.x = 1;
   dstrect.y = 1;
   SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
   SDL_FreeSurface(white_letters);
 
-	/********************Free SDL_Pango context************/
-	SDLPango_FreeContext(context);
-
-  /* --- Convert to the screen format for quicker blits ---*/ 
+  /* --- Convert to the screen format for quicker blits --- */
   SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
   out = SDL_DisplayFormatAlpha(bg);
   SDL_FreeSurface(bg);
-	free(colour);
 
-  LOG("Leaving BlackOutline()\n\n");
+  LOG("Leaving BlackOutline()\n");
 
   return out;
 }
@@ -479,14 +533,10 @@
   SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
   SDL_FreeSurface(white_letters);
 
-	/********************Free SDL_Pango context************/
-	SDLPango_FreeContext(context);
-
   /* --- Convert to the screen format for quicker blits --- */
   SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
   out = SDL_DisplayFormatAlpha(bg);
   SDL_FreeSurface(bg);
-	free(colour);
 
   LOG("Leaving BlackOutline_SDLPango()\n\n");
 
@@ -561,163 +611,17 @@
 
   return out;
 }
-int convert_from_UTF32( char* UTF8_word, wchar_t* wide_word)
-{
-  int i = 0;
-  ConversionResult result;
-  UTF8 temp_UTF8[FNLEN];
-  UTF32 temp_UTF32[FNLEN];
-
-  UTF8* UTF8_Start = temp_UTF8;
-  UTF8* UTF8_End = &temp_UTF8[FNLEN-1];
-  const UTF32* UTF32_Start = temp_UTF32;
-  const UTF32* UTF32_End = &temp_UTF32[FNLEN-1];
-
-  wcsncpy(temp_UTF32, wide_word, FNLEN);
-
-  ConvertUTF32toUTF8(&UTF32_Start, UTF32_End, &UTF8_Start, UTF8_End, 0);
-
-  UTF8_word[0] = 0;
-
-  while ((i < FNLEN) && (temp_UTF8[i] != 0))
-  {
-    UTF8_word[i] = temp_UTF8[i];
-    i++; 
-  }
-
-  if (i >= FNLEN)
-  {
-    fprintf(stderr, "convert_from_UTF8(): buffer overflow\n");
-    return -1;
-  }
-  else  //need terminating null:
-  {
-	for(i;i<FNLEN;i++)
-	    UTF8_word[i] = 0;
-  }
-
-  DEBUGCODE {fprintf(stderr, "UTF8_word = %s\n", UTF8_word);}
-
-  return strlen(UTF8_word);
-}
-
 SDL_Surface* BlackOutline_w(wchar_t* t, const SDL_Color* c, int size)
 {
 	wchar_t wchar_tmp[512];
 	char tmp[512];
 	int i;
-  SDL_Surface* out = NULL;
-  SDL_Surface* black_letters = NULL;
-  SDL_Surface* white_letters = NULL;
-  SDL_Surface* bg = NULL;
-  SDL_Rect dstrect;
-  Uint32 color_key;
-  /* To covert SDL_Colour to SDLPango_Matrix*/
-  SDLPango_Matrix* colour = NULL;
-  /* Create a context which contains Pango objects.*/
-  SDLPango_Context* context = NULL;
-
-  LOG("\nEntering BlackOutline_w()\n");
-  DEBUGCODE{ fprintf(stderr, "will attempt to render: %s\n", t); }
-
-  if (!t || !c)
-  {
-    fprintf(stderr, "BlackOutline_w(): invalid ptr parameter, returning.");
-    return NULL;
-  }
-
-  wcsncpy( wchar_tmp, t, size);
-  wchar_tmp[size]=0;
-  i=convert_from_UTF32( tmp, wchar_tmp);
-  tmp[i]=0;
-
-  /* SDLPango crashes on 64 bit machines if passed empty string - Debian Bug#439071 */
-  if (*t == '\0')
-  {
-    fprintf(stderr, "BlackOutline_w(): empty string arg - must return to avoid segfault.");
-    return NULL;
-  }
-
-  colour = SDL_Colour_to_SDLPango_Matrix(c);
-  
-  /* Create the context */
-  context = SDLPango_CreateContext();	
-  SDLPango_SetDpi(context, 125.0, 125.0);
-  /* Set the color */
-  SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER );
-  SDLPango_SetBaseDirection(context, SDLPANGO_DIRECTION_LTR);
-  /* Set text to context*/  
-  SDLPango_SetMarkup(context, tmp, -1); 
-
-  if (!context)
-  {
-    fprintf (stderr, "In BlackOutline_w(), could not create context for %s", t);
-    return NULL;
-  }
-
-  black_letters = SDLPango_CreateSurfaceDraw(context);
-
-  if (!black_letters)
-  {
-    fprintf (stderr, "Warning - BlackOutline_w() could not create image for %s\n", t);
-	SDLPango_FreeContext(context);
-    return NULL;
-  }
-
-  bg = SDL_CreateRGBSurface(SDL_SWSURFACE,
-                            (black_letters->w) + 5,
-                            (black_letters->h) + 5,
-                             32,
-                             RMASK, GMASK, BMASK, AMASK);
-  if (!bg)
-  {
-    fprintf (stderr, "Warning - BlackOutline()_w - bg creation failed\n");
-    SDL_FreeSurface(black_letters);
-	SDLPango_FreeContext(context);
-    return NULL;
-  }
-
-  /* Draw text on a existing surface*/ 
-  SDLPango_Draw(context, bg, 0, 0);
-
-  /* Use color key for eventual transparency:*/ 
-  color_key = SDL_MapRGB(bg->format, 10, 10, 10);
-  SDL_FillRect(bg, NULL, color_key);
-
-  /* Now draw black outline/shadow 2 pixels on each side: */
-  dstrect.w = black_letters->w;
-  dstrect.h = black_letters->h;
-
-  /* NOTE: can make the "shadow" more or less pronounced by */
-  /* changing the parameters of these loops.                */
-  for (dstrect.x = 1; dstrect.x < 4; dstrect.x++)
-    for (dstrect.y = 1; dstrect.y < 3; dstrect.y++)
-      SDL_BlitSurface(black_letters , NULL, bg, &dstrect );
-
-  SDL_FreeSurface(black_letters);
-
-  /* --- Put the color version of the text on top! --- */
-  SDLPango_SetDefaultColor(context, colour);
-  white_letters = SDLPango_CreateSurfaceDraw(context);
-  dstrect.x = 1;
-  dstrect.y = 1;
-  SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
-  SDL_FreeSurface(white_letters);
-
-	/********************Free SDL_Pango context************/
-	SDLPango_FreeContext(context);
-
-  /* --- Convert to the screen format for quicker blits ---*/ 
-  SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
-  out = SDL_DisplayFormatAlpha(bg);
-  SDL_FreeSurface(bg);
-	free(colour);
-
-  LOG("Leaving BlackOutline_w()\n\n");
-
-  return out;
+	wcsncpy( wchar_tmp, t, size);
+	wchar_tmp[size]=0;
+	i=ConvertToUTF8( wchar_tmp, tmp);
+	tmp[i]=0;
+	return BlackOutline_c( tmp, c);
 }
-
 SDL_Surface* BlackOutline_c(const unsigned char* t, const SDL_Color* c)
 {
   SDL_Surface* out = NULL;
@@ -733,6 +637,7 @@
 
   LOG("\nEntering BlackOutline_c()\n");
   DEBUGCODE{ fprintf(stderr, "will attempt to render: %s\n", t); }
+printf("Test111:\n");
 
   if (!t || !c)
   {
@@ -746,33 +651,38 @@
     fprintf(stderr, "BlackOutline_c(): empty string arg - must return to avoid segfault.");
     return NULL;
   }
-
+printf("Test2222:\n");
   colour = SDL_Colour_to_SDLPango_Matrix(c);
   
   /* Create the context */
   context = SDLPango_CreateContext();	
+printf("Test3333\n");
   SDLPango_SetDpi(context, 125.0, 125.0);
+printf("Test4444\n");
   /* Set the color */
   SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER );
+printf("Test55555\n");
   SDLPango_SetBaseDirection(context, SDLPANGO_DIRECTION_LTR);
+printf("Test66666\n");
   /* Set text to context*/  
   SDLPango_SetMarkup(context, t, -1); 
+printf("Test77777\n");
 
   if (!context)
   {
     fprintf (stderr, "In BlackOutline_c(), could not create context for %s", t);
     return NULL;
   }
-
+printf("Test88888\n");
   black_letters = SDLPango_CreateSurfaceDraw(context);
-
+printf("Test99999\n");
   if (!black_letters)
   {
     fprintf (stderr, "Warning - BlackOutline_c() could not create image for %s\n", t);
 	SDLPango_FreeContext(context);
     return NULL;
   }
-
+printf("Test100000\n");
   bg = SDL_CreateRGBSurface(SDL_SWSURFACE,
                             (black_letters->w) + 5,
                             (black_letters->h) + 5,
@@ -785,14 +695,14 @@
 	SDLPango_FreeContext(context);
     return NULL;
   }
-
+printf("Test1222222222\n");
   /* Draw text on a existing surface*/ 
   SDLPango_Draw(context, bg, 0, 0);
-
+printf("Test133333333:\n");
   /* Use color key for eventual transparency:*/ 
   color_key = SDL_MapRGB(bg->format, 10, 10, 10);
   SDL_FillRect(bg, NULL, color_key);
-
+printf("Test1444444:\n");
   /* Now draw black outline/shadow 2 pixels on each side: */
   dstrect.w = black_letters->w;
   dstrect.h = black_letters->h;
@@ -802,9 +712,9 @@
   for (dstrect.x = 1; dstrect.x < 4; dstrect.x++)
     for (dstrect.y = 1; dstrect.y < 3; dstrect.y++)
       SDL_BlitSurface(black_letters , NULL, bg, &dstrect );
-
+printf("Test1555555555555\n");
   SDL_FreeSurface(black_letters);
-
+printf("Test1666666666\n");
   /* --- Put the color version of the text on top! --- */
   SDLPango_SetDefaultColor(context, colour);
   white_letters = SDLPango_CreateSurfaceDraw(context);
@@ -812,7 +722,7 @@
   dstrect.y = 1;
   SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
   SDL_FreeSurface(white_letters);
-
+printf("Test177777\n");
 	/********************Free SDL_Pango context************/
 	SDLPango_FreeContext(context);
 
@@ -821,14 +731,12 @@
   out = SDL_DisplayFormatAlpha(bg);
   SDL_FreeSurface(bg);
 	free(colour);
-
+printf("Test18888\n");
   LOG("Leaving BlackOutline_c()\n\n");
 
   return out;
 }
 
-
-
 /* FIXME dead code but could be useful*/
 static void show_letters(void)
 {
@@ -1283,6 +1191,595 @@
   return 1;
 }
 
+/* This function just tidies up all the ptr args needed for      */
+/* ConvertUTF8toUTF32() from Unicode, Inc. into a neat wrapper.  */
+/* It returns -1 on error, otherwise returns the length of the   */
+/* converted, null-terminated wchar_t* string now stored in the  */
+/* location of the 'wide_word' pointer.                          */
+int ConvertFromUTF8(wchar_t* wide_word, const unsigned char* UTF8_word)
+{
+  int i = 0;
+  ConversionResult result;
+  UTF8 temp_UTF8[FNLEN];
+  UTF32 temp_UTF32[FNLEN];
+
+  const UTF8* UTF8_Start = temp_UTF8;
+  const UTF8* UTF8_End = &temp_UTF8[FNLEN-1];
+  UTF32* UTF32_Start = temp_UTF32;
+  UTF32* UTF32_End = &temp_UTF32[FNLEN-1];
+
+  strncpy(temp_UTF8, UTF8_word, FNLEN);
+
+  ConvertUTF8toUTF32(&UTF8_Start, UTF8_End,
+                     &UTF32_Start, UTF32_End, 0);
+
+  wide_word[0] = '\0';
+
+  while ((i < FNLEN) && (temp_UTF32[i] != '\0'))
+  {
+    wide_word[i] = temp_UTF32[i];
+    i++; 
+  }
+
+  if (i >= FNLEN)
+  {
+    fprintf(stderr, "convert_from_UTF8(): buffer overflow\n");
+    return -1;
+  }
+  else  //need terminating null:
+  {
+    wide_word[i] = '\0';
+  }
+
+  DEBUGCODE {fprintf(stderr, "wide_word = %ls\n", wide_word);}
+
+  return wcslen(wide_word);
+}
+
+/******************To be used for savekeyboard*************/
+/*****************Converts wchar_t string to char string***/
+int ConvertToUTF8(wchar_t* wide_word, char* UTF8_word)
+{
+  int i = 0;
+  ConversionResult result;
+  UTF8 temp_UTF8[FNLEN];
+  UTF32 temp_UTF32[FNLEN];
+
+  UTF8* UTF8_Start = temp_UTF8;
+  UTF8* UTF8_End = &temp_UTF8[FNLEN-1];
+  const UTF32* UTF32_Start = temp_UTF32;
+  const UTF32* UTF32_End = &temp_UTF32[FNLEN-1];
+
+  wcsncpy(temp_UTF32, wide_word, FNLEN);
+
+  ConvertUTF32toUTF8(&UTF32_Start, UTF32_End, &UTF8_Start, UTF8_End, 0);
+
+  UTF8_word[0] = 0;
+
+  while ((i < FNLEN) && (temp_UTF8[i] != 0))
+  {
+    UTF8_word[i] = temp_UTF8[i];
+    i++; 
+  }
+
+  if (i >= FNLEN)
+  {
+    fprintf(stderr, "convert_from_UTF8(): buffer overflow\n");
+    return -1;
+  }
+  else  //need terminating null:
+  {
+	for(i;i<FNLEN;i++)
+	    UTF8_word[i] = 0;
+  }
+
+  DEBUGCODE {fprintf(stderr, "UTF8_word = %s\n", UTF8_word);}
+
+  return strlen(UTF8_word);
+}
+
+/***Converts wchar_t string to char string******************/
+/******************************************************************/
+int map_keys(wchar_t wide_char,kbd_char* keyboard_entry)
+{
+	switch(wide_char)
+	{
+		case '`':strcpy(keyboard_entry->keyname,"A00");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=0;
+			break;
+		case '~':strcpy(keyboard_entry->keyname,"A00");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=0;
+			break;
+		case '1':strcpy(keyboard_entry->keyname,"A01");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=0;
+			break;
+		case '!':strcpy(keyboard_entry->keyname,"A01");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=0;
+			break;
+		case '2':strcpy(keyboard_entry->keyname,"A02");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=1;
+			break;
+		case '@':strcpy(keyboard_entry->keyname,"A02");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=1;
+			break;
+		case '3':strcpy(keyboard_entry->keyname,"A03");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=2;
+			break;
+		case '#':strcpy(keyboard_entry->keyname,"A03");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=2;
+			break;
+		case '4':strcpy(keyboard_entry->keyname,"A04");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=3;
+			break;
+		case '$':strcpy(keyboard_entry->keyname,"A04");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=3;
+			break;
+		case '5':strcpy(keyboard_entry->keyname,"A05");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=4;
+			break;
+		case '%':strcpy(keyboard_entry->keyname,"A05");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=4;
+			break;
+		case '6':strcpy(keyboard_entry->keyname,"A06");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=5;
+			break;
+		case '^':strcpy(keyboard_entry->keyname,"A06");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=5;
+			break;
+		case '7':strcpy(keyboard_entry->keyname,"A07");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=7;
+			break;
+		case '&':strcpy(keyboard_entry->keyname,"A07");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=6;
+			break;
+		case '8':strcpy(keyboard_entry->keyname,"A08");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=7;
+			break;
+		case '*':strcpy(keyboard_entry->keyname,"A08");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=7;
+			break;
+		case '9':strcpy(keyboard_entry->keyname,"A09");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=8;
+			break;
+		case '(':strcpy(keyboard_entry->keyname,"A09");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=8;
+			break;
+		case '0':strcpy(keyboard_entry->keyname,"A10");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case ')':strcpy(keyboard_entry->keyname,"A10");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case '-':strcpy(keyboard_entry->keyname,"A11");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '_':strcpy(keyboard_entry->keyname,"A11");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case '=':strcpy(keyboard_entry->keyname,"A12");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '+':strcpy(keyboard_entry->keyname,"A12");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case '\\':strcpy(keyboard_entry->keyname,"A13");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '|':strcpy(keyboard_entry->keyname,"A13");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case 'q':strcpy(keyboard_entry->keyname,"B01");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=0;
+			break;
+		case 'Q':strcpy(keyboard_entry->keyname,"B01");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=0;
+			break;
+		case 'w':strcpy(keyboard_entry->keyname,"B02");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=1;
+			break;
+		case 'W':strcpy(keyboard_entry->keyname,"B02");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=1;
+			break;
+		case 'e':strcpy(keyboard_entry->keyname,"B03");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=2;
+			break;
+		case 'E':strcpy(keyboard_entry->keyname,"B03");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=3;
+			break;
+		case 'r':strcpy(keyboard_entry->keyname,"B04");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=3;
+			break;
+		case 'R':strcpy(keyboard_entry->keyname,"B04");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=3;
+			break;
+		case 't':strcpy(keyboard_entry->keyname,"B05");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=4;
+			break;
+		case 'T':strcpy(keyboard_entry->keyname,"B05");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=4;
+			break;
+		case 'y':strcpy(keyboard_entry->keyname,"B06");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=5;
+			break;
+		case 'Y':strcpy(keyboard_entry->keyname,"B06");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=5;
+			break;
+		case 'u':strcpy(keyboard_entry->keyname,"B07");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=6;
+			break;
+		case 'U':strcpy(keyboard_entry->keyname,"B07");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=6;
+			break;
+		case 'i':strcpy(keyboard_entry->keyname,"B08");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=7;
+			break;
+		case 'I':strcpy(keyboard_entry->keyname,"B08");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=7;
+			break;
+		case 'o':strcpy(keyboard_entry->keyname,"B09");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=8;
+			break;
+		case 'O':strcpy(keyboard_entry->keyname,"B09");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=8;
+			break;
+		case 'p':strcpy(keyboard_entry->keyname,"B10");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case 'P':strcpy(keyboard_entry->keyname,"B10");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case '[':strcpy(keyboard_entry->keyname,"B11");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '{':strcpy(keyboard_entry->keyname,"B11");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case ']':strcpy(keyboard_entry->keyname,"B12");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '}':strcpy(keyboard_entry->keyname,"B12");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case 'a':strcpy(keyboard_entry->keyname,"C01");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=0;
+			break;
+		case 'A':strcpy(keyboard_entry->keyname,"C01");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=0;
+			break;
+		case 's':strcpy(keyboard_entry->keyname,"C02");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=1;
+			break;
+		case 'S':strcpy(keyboard_entry->keyname,"C02");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=1;
+			break;
+		case 'd':strcpy(keyboard_entry->keyname,"C03");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=2;
+			break;
+		case 'D':strcpy(keyboard_entry->keyname,"C03");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=2;
+			break;
+		case 'f':strcpy(keyboard_entry->keyname,"C04");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=3;
+			break;
+		case 'F':strcpy(keyboard_entry->keyname,"C04");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=3;
+			break;
+		case 'g':strcpy(keyboard_entry->keyname,"C05");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=4;
+			break;
+		case 'G':strcpy(keyboard_entry->keyname,"C05");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=4;
+			break;
+		case 'h':strcpy(keyboard_entry->keyname,"C06");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=5;
+			break;
+		case 'H':strcpy(keyboard_entry->keyname,"C06");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=5;
+			break;
+		case 'j':strcpy(keyboard_entry->keyname,"C07");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=6;
+			break;
+		case 'J':strcpy(keyboard_entry->keyname,"C07");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=6;
+			break;
+		case 'k':strcpy(keyboard_entry->keyname,"C08");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=7;
+			break;
+		case 'K':strcpy(keyboard_entry->keyname,"C08");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=7;
+			break;
+		case 'l':strcpy(keyboard_entry->keyname,"C09");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=8;
+			break;
+		case 'L':strcpy(keyboard_entry->keyname,"C09");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=8;
+			break;
+		case ';':strcpy(keyboard_entry->keyname,"C10");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case ':':strcpy(keyboard_entry->keyname,"C10");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;			
+		case '\'':strcpy(keyboard_entry->keyname,"C11");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '"':strcpy(keyboard_entry->keyname,"C11");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case 'z':strcpy(keyboard_entry->keyname,"D01");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=0;
+			break;
+		case 'Z':strcpy(keyboard_entry->keyname,"D01");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=0;
+			break;
+		case 'x':strcpy(keyboard_entry->keyname,"D02");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=1;
+			break;
+		case 'X':strcpy(keyboard_entry->keyname,"D02");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=1;
+			break;
+		case 'c':strcpy(keyboard_entry->keyname,"D03");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=2;
+			break;
+		case 'C':strcpy(keyboard_entry->keyname,"D03");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=2;
+			break;
+		case 'v':strcpy(keyboard_entry->keyname,"D04");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=3;
+			break;
+		case 'V':strcpy(keyboard_entry->keyname,"D04");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=3;
+			break;
+		case 'b':strcpy(keyboard_entry->keyname,"D05");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=4;
+			break;
+		case 'B':strcpy(keyboard_entry->keyname,"D05");
+			keyboard_entry->shift=2;
+			keyboard_entry->finger=4;
+			break;
+		case 'n':strcpy(keyboard_entry->keyname,"D06");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=5;
+			break;
+		case 'N':strcpy(keyboard_entry->keyname,"D06");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=5;
+			break;
+		case 'm':strcpy(keyboard_entry->keyname,"D07");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=6;
+			break;
+		case 'M':strcpy(keyboard_entry->keyname,"D07");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=6;
+			break;
+		case ',':strcpy(keyboard_entry->keyname,"D08");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=7;
+			break;
+		case '<':strcpy(keyboard_entry->keyname,"D08");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=7;
+			break;
+		case '.':strcpy(keyboard_entry->keyname,"D09");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=8;
+			break;
+		case '>':strcpy(keyboard_entry->keyname,"D09");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=8;
+			break;
+		case '/':strcpy(keyboard_entry->keyname,"D10");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=9;
+			break;
+		case '?':strcpy(keyboard_entry->keyname,"D10");
+			keyboard_entry->shift=1;
+			keyboard_entry->finger=9;
+			break;
+		case ' ':strcpy(keyboard_entry->keyname,"E03");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=5;
+			break;
+		default:strcpy(keyboard_entry->keyname,"None");
+			keyboard_entry->shift=0;
+			keyboard_entry->finger=-1;
+			break;
+	}
+}
+
+void GenerateKeyboard(SDL_Surface* keyboard)
+{
+	SDL_Surface* tmp = NULL;
+	SDL_Rect new;
+	int i;
+	int col;
+	char row;
+	int render=1;
+	Uint16 t[2];
+	TTF_Font* smallfont = NULL;
+	DEBUGCODE { printf("Entering GenerateKeyboard\n"); }
+	t[1] = '\0';
+	smallfont = LoadFont(settings.theme_font_name, 15);
+	if(!smallfont)
+	{
+		DEBUGCODE { printf("Error loading font\n"); }
+		return;
+	}
+	for(i=0;i < num_chars_used;i++)
+	{
+		render=1;
+		new.x=0;
+		new.y=0;
+		new.w=5;
+		new.h=5;
+		t[0]=keyboard_list[i].unicode_value;
+		sscanf(keyboard_list[i].keyname,"%c%d",&row,&col);
+		switch(row)
+		{
+			case 'A':new.y+=6;new.x+=13;break;
+			case 'B':new.y+=36;new.x+=23;break;
+			case 'C':new.y+=66;new.x+=33;break;
+			case 'D':new.y+=96;new.x+=23;break;
+			case 'E':new.y+126;break;
+			default: render=0;break;
+		}
+		if(!render)
+			continue;
+		new.x+=30*col;
+		if(keyboard_list[i].shift>0)
+		{
+					new.x-=9;
+					if(new.y<9)
+						new.y-=5;
+					else
+						new.y-=9;
+		}
+		DEBUGCODE { printf("Making %d : %C\n",i,keyboard_list[i].unicode_value); }
+		//tmp=BlackOutline_Unicode(t, smallfont, &black);
+		tmp=TTF_RenderUNICODE_Blended((TTF_Font*)smallfont, t, black);
+		if(tmp==NULL)
+		{
+			DEBUGCODE { printf("Error Making %d : %C\n",i,keyboard_list[i].unicode_value); }
+		}
+		SDL_BlitSurface(tmp, NULL, keyboard, &new);
+	}	
+	TTF_CloseFont(smallfont);
+	DEBUGCODE { printf("Leaving GenerateKeyboard\n"); }
+}
+void updatekeylist(int key,char ch)
+{
+	keyboard_list[key].latin_char=ch;
+	wchar_t wtmp=ch;
+	map_keys(wtmp,&keyboard_list[key]);
+}
+void savekeyboard()
+{
+	unsigned char fn[FNLEN];
+	FILE *fp;
+	int i,j=0;
+	wchar_t tmp[2];
+	char buf[FNLEN];
+	DEBUGCODE { printf("Entering savekeyboard()\n"); }
+	tmp[1]=0;
+	if(!settings.use_english)
+		sprintf(fn , "%s/keyboard.lst", settings.theme_data_path);
+	else
+		sprintf(fn , "%s/keyboard.lst", settings.default_data_path);
+	fp=fopen(fn,"w");
+	if (fp == NULL)
+	{
+		LOG("savekeyboard() - could not open keyboard.lst\n");
+		return;
+	}
+	for(i=0;i<num_chars_used;i++)
+	{
+		tmp[0]=keyboard_list[i].unicode_value;
+		/**********fprintf(fp,"%d|%C\n",keyboard_list[i].finger,keyboard_list[i].unicode_value); doesnt work, so the unicode value is converted into a char string*/
+		j=ConvertToUTF8(tmp, buf);
+		buf[j]=0;
+		if(keyboard_list[i].finger==-1)
+		{
+			fprintf(fp,"%s\n",buf);
+		}
+		else
+		if(keyboard_list[i].latin_char==-1)
+		{
+				fprintf(fp,"%d|%s\n",keyboard_list[i].finger,buf);
+		}
+		else
+		{
+			fprintf(fp,"%d|%s|%c\n",keyboard_list[i].finger,buf,keyboard_list[i].latin_char);
+		}
+	}
+	fclose(fp);
+	DEBUGCODE { printf("Leaving savekeyboard()\n"); }
+}
+/****************************************************************/
+
 /****************************************************/
 /*                                                  */
 /*       Local ("private") functions:               */
@@ -1426,48 +1923,4 @@
 }
 
 
-/* This function just tidies up all the ptr args needed for      */
-/* ConvertUTF8toUTF32() from Unicode, Inc. into a neat wrapper.  */
-/* It returns -1 on error, otherwise returns the length of the   */
-/* converted, null-terminated wchar_t* string now stored in the  */
-/* location of the 'wide_word' pointer.                          */
-int ConvertFromUTF8(wchar_t* wide_word, const unsigned char* UTF8_word)
-{
-  int i = 0;
-  ConversionResult result;
-  UTF8 temp_UTF8[FNLEN];
-  UTF32 temp_UTF32[FNLEN];
 
-  const UTF8* UTF8_Start = temp_UTF8;
-  const UTF8* UTF8_End = &temp_UTF8[FNLEN-1];
-  UTF32* UTF32_Start = temp_UTF32;
-  UTF32* UTF32_End = &temp_UTF32[FNLEN-1];
-
-  strncpy(temp_UTF8, UTF8_word, FNLEN);
-
-  ConvertUTF8toUTF32(&UTF8_Start, UTF8_End,
-                     &UTF32_Start, UTF32_End, 0);
-
-  wide_word[0] = '\0';
-
-  while ((i < FNLEN) && (temp_UTF32[i] != '\0'))
-  {
-    wide_word[i] = temp_UTF32[i];
-    i++; 
-  }
-
-  if (i >= FNLEN)
-  {
-    fprintf(stderr, "convert_from_UTF8(): buffer overflow\n");
-    return -1;
-  }
-  else  //need terminating null:
-  {
-    wide_word[i] = '\0';
-  }
-
-  DEBUGCODE {fprintf(stderr, "wide_word = %ls\n", wide_word);}
-
-  return wcslen(wide_word);
-}
-

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/src/funcs.h
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/src/funcs.h	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/src/funcs.h	2008-08-14 05:39:03 UTC (rev 623)
@@ -28,8 +28,6 @@
 /* In alphabet.c */
 SDL_Surface* BlackOutline(const unsigned char* t, const TTF_Font* font, const SDL_Color* c);
 SDL_Surface* BlackOutline_Unicode(const Uint16* t, const TTF_Font* font, const SDL_Color* c);
-SDL_Surface* BlackOutline_w(wchar_t* t, const SDL_Color* c, int size);
-SDL_Surface* BlackOutline_c(const unsigned char* t, const SDL_Color* c);
 
 #ifndef WIN32
 SDL_Surface* BlackOutline_SDLPango(const unsigned char* t, const TTF_Font* font, const SDL_Color* c);
@@ -48,9 +46,20 @@
 SDL_Surface* GetWhiteGlyph(wchar_t t);
 SDL_Surface* GetRedGlyph(wchar_t t);
 int LoadKeyboard(void);
-int GetFinger(wchar_t uni_char);
+int GetFinger(int i);
 int RenderLetters(const TTF_Font* letter_font);
-int convert_from_UTF32( char* UTF8_word, wchar_t* wide_word);
+int GetIndex(wchar_t uni_char);
+void GetKeyShift(int index, char *buf);
+void GetKeyPos(int index, char *buf);
+void GetWrongKeyPos(int index, char *buf);
+//int map_keys(wchar_t *wide_str,keymap key);
+void GenerateKeyboard(SDL_Surface* keyboard);
+void updatekeylist(int key,char ch);
+void savekeyboard(void);
+wchar_t GetLastKey(void);
+SDL_Surface* BlackOutline_w(wchar_t* t, const SDL_Color* c, int size);
+SDL_Surface* BlackOutline_c(const unsigned char* t, const SDL_Color* c);
+int ConvertToUTF8(wchar_t* UTF32_word, char* word);
 
 //void UseAlphabet(void);
 

Modified: tuxtype/branches/tuxtype-1.5.17_soc1/src/practice.c
===================================================================
--- tuxtype/branches/tuxtype-1.5.17_soc1/src/practice.c	2008-08-14 05:30:20 UTC (rev 622)
+++ tuxtype/branches/tuxtype-1.5.17_soc1/src/practice.c	2008-08-14 05:39:03 UTC (rev 623)
@@ -8,6 +8,8 @@
 
 Revised extensively: 2007
 David Bruce <dbruce at tampabay.rr.com>
+Revised extensively: 2008
+Sreyas Kurumanghat <k.sreyas at gmail.com>
 ***************************************************************************/
 
 /***************************************************************************
@@ -23,9 +25,13 @@
 #include "funcs.h"
 
 static SDL_Surface* bg = NULL;
-static SDL_Surface* hands = NULL; 
+static SDL_Surface* hands = NULL;
+static SDL_Surface* hand_shift[3] = {NULL};
+static SDL_Surface* keyboard = NULL;
+static SDL_Surface* keypress1 = NULL;
+static SDL_Surface* keypress2 = NULL;
 static SDL_Surface* hand[11] = {NULL};
-static SDL_Rect hand_loc, letter_loc;
+static SDL_Rect hand_loc, letter_loc,keyboard_loc;
 static TTF_Font* font = NULL;
 static wchar_t phrase[255][FNLEN];
 
@@ -37,6 +43,9 @@
 static void practice_unload_media(void);
 static void print_at(const wchar_t* pphrase, int wrap, int x, int y);
 static void show(unsigned char t);
+SDL_Surface* GetKeypress1(int index);
+SDL_Surface* GetKeypress2(int index);
+SDL_Surface* GetWrongKeypress(int index);
 
 
 /************************************************************************/
@@ -65,15 +74,16 @@
       z = 0,
       total = 0,
       state = 0;
-	int next_line=0;
   int key[100] = {0};
-  SDL_Rect dst, dst2, dst3, dst4, dst5;
+  int next_line=0;
+  SDL_Rect dst, dst2, dst4, mydest;
   char keytime[20],
        totaltime[20];
-  SDL_Surface* tmp = NULL;
   SDL_Surface* srfc = NULL;
+  SDL_Surface* tmpsurf = NULL;
   
   
+
   if (!practice_load_media())
   {
     fprintf(stderr, "Phrases() - practice_load_media() failed, returning.\n");
@@ -81,6 +91,8 @@
   }
 
   SDL_BlitSurface(bg, NULL, screen, NULL);
+  SDL_BlitSurface(keyboard, NULL, screen, &keyboard_loc);
+  SDL_BlitSurface(screen, NULL, bg, NULL);
   SDL_BlitSurface(hands, NULL, screen, &hand_loc);
   SDL_Flip(screen);
 
@@ -89,11 +101,11 @@
   if (!wcsncmp(phrase[0], (wchar_t*)"", 1))
     wcsncpy(pphrase, phrase[0], 80);
 
-  srfc = GetWhiteGlyph(65);
+  srfc = GetWhiteGlyph(GetLastKey());
 
   if (!srfc)
   {
-    fprintf(stderr, "Phrases() - GetWhiteGlyph(65) not defined - bailing out.\n");
+    fprintf(stderr, "Phrases() - GetWhiteGlyph(GetLastKey()) not defined - bailing out.\n");
     return 0;
   }
 
@@ -107,23 +119,20 @@
   dst2.w = srfc->w;
   dst2.h = srfc->h;
 
-  dst3.x = 50;
-  dst3.y = 400;
-  dst3.w = 160;
-  dst3.h = 50;
 
   dst4.x = 480;
   dst4.y = 400;
   dst4.w = 240;
   dst4.h = 50;
 
-  dst5.x = 480;
-  dst5.y = 400;
-  dst5.w = 240;
-  dst5.h = 50;
+  dst.x = 40;
 
-  dst.x = 40;
-	SDL_FreeSurface(srfc);
+  mydest.x = 0;
+  mydest.y = dst.y;
+  mydest.w = screen->w;
+  mydest.h = screen->h-80;
+
+
   start = SDL_GetTicks();
 
   do
@@ -133,6 +142,7 @@
       case 0:
         start = SDL_GetTicks();
         SDL_BlitSurface(hands, NULL, screen, &hand_loc);
+        SDL_BlitSurface(keyboard, NULL, screen, &keyboard_loc);
         state = 1;
         break;
 
@@ -142,9 +152,29 @@
           /* Show finger hint, if available. Note that GetFinger() */
           /* returns negative values on error and never returns a  */
           /* value greater than 9.                                 */
-          int fing = GetFinger(pphrase[c]);
+          int key = GetIndex(pphrase[c]);
+          int fing = GetFinger(key);
+          int shift = GetShift(key);
+          keypress1= GetKeypress1(key);
+          keypress2= GetKeypress2(key);
+          if (!keypress1)
+          {
+				fprintf(stderr, "Phrases() - GetKeypress1 failed, returning.\n");
+				return 0;
+          }
+          if(!keypress2)
+          {
+				fprintf(stderr, "Phrases() - GetKeypress2 failed, returning.\n");
+				return 0;
+          }
+          SDL_BlitSurface(hands, NULL, screen, &hand_loc);
           if (fing >= 0) 
             SDL_BlitSurface(hand[fing], NULL, screen, &hand_loc);
+          SDL_BlitSurface(hand_shift[shift], NULL, screen, &hand_loc);
+          SDL_BlitSurface(keypress1, NULL, screen, &keyboard_loc);
+          SDL_BlitSurface(keypress2, NULL, screen, &keyboard_loc);
+          SDL_FreeSurface(keypress1);
+          SDL_FreeSurface(keypress2);
           state = 2;
         }
         break;
@@ -158,14 +188,35 @@
 
       case 3:
        SDL_BlitSurface(hands, NULL, screen, &hand_loc);
+       SDL_BlitSurface(keyboard, NULL, screen, &keyboard_loc);
        state = 12;
        break;  
 
       case 4:
         {
-          int fing = GetFinger(pphrase[c]);
+          int key = GetIndex(pphrase[c]);
+          int fing = GetFinger(key);
+          int shift = GetShift(key);
+          keypress1= GetKeypress1(key);
+          keypress2= GetKeypress2(key);
+                    if (!keypress1)
+          {
+				fprintf(stderr, "Phrases() - GetKeypress1 failed, returning.\n");
+				return 0;
+          }
+          if(!keypress2)
+          {
+				fprintf(stderr, "Phrases() - GetKeypress2 failed, returning.\n");
+				return 0;
+          }
+          SDL_BlitSurface(hands, NULL, screen, &hand_loc);
           if (fing >= 0) 
             SDL_BlitSurface(hand[fing], NULL, screen, &hand_loc);
+          SDL_BlitSurface(hand_shift[shift], NULL, screen, &hand_loc);
+          SDL_BlitSurface(keypress1, NULL, screen, &keyboard_loc);
+          SDL_BlitSurface(keypress2, NULL, screen, &keyboard_loc);
+          SDL_FreeSurface(keypress1);
+          SDL_FreeSurface(keypress2);
           state = 11;
           break;
         }
@@ -196,69 +247,258 @@
         }
         else
         {
-/******************************************************/
-		if (pphrase[c]==event.key.keysym.unicode){
+/**************************************************/
+		int key=GetIndex((wchar_t)event.key.keysym.unicode);
+		char tmp=-1;
+		switch(event.key.keysym.sym)
+		{
+			case  SDLK_BACKQUOTE:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='~';
+				else
+					tmp='`';
+				break;
+			case SDLK_COMMA:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='<';
+				else
+					tmp=',';
+				break;
+			case SDLK_MINUS:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='_';
+				else
+					tmp='-';
+				break;
+			case SDLK_PERIOD:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='>';
+				else
+					tmp='.';
+				break;
+			case SDLK_SLASH:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='?';
+				else
+					tmp='/';
+				break;
+			case SDLK_0:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp=')';
+				else
+					tmp='0';
+				break;
+			case SDLK_1:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='!';
+				else
+					tmp='1';
+				break;
+			case SDLK_2:
+					if(event.key.keysym.mod&KMOD_SHIFT)
+						tmp='@';
+					else
+						tmp='2';
+				break;
+			case SDLK_3:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='#';
+				else
+					tmp='3';
+				break;
+			case SDLK_4:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='$';
+				else
+					tmp='4';
+				break;
+			case SDLK_5:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='%';
+				else
+					tmp='5';
+				break;
+			case SDLK_6:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='^';
+				else
+					tmp='6';
+				break;
+			case SDLK_7:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='&';
+				else
+					tmp='7';
+				break;
+			case SDLK_8:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='*';
+				else
+					tmp='8';
+				break;
+			case SDLK_9:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='(';
+				else
+					tmp='9';
+				break;
+			case SDLK_SEMICOLON:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp=':';
+				else
+					tmp=';';
+				break;
+			case SDLK_EQUALS:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='+';
+				else
+					tmp='=';
+				break;
+			case SDLK_LEFTBRACKET:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='{';
+				else
+					tmp='[';
+				break;
+			case SDLK_BACKSLASH:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='|';
+				else
+					tmp='\\';
+				break;
+			case SDLK_RIGHTBRACKET:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='}';
+				else
+					tmp=']';
+				break;
+			case SDLK_QUOTE:
+				if(event.key.keysym.mod&KMOD_SHIFT)
+					tmp='"';
+				else
+					tmp='\'';
+				break;
+			case SDLK_a:tmp='a';
+				break;
+			case SDLK_b:tmp='b';
+				break;
+			case SDLK_c:tmp='c';
+				break;
+			case SDLK_d:tmp='d';
+				break;
+			case SDLK_e:tmp='e';
+				break;
+			case SDLK_f:tmp='f';
+				break;
+			case SDLK_g:tmp='g';
+				break;
+			case SDLK_h:tmp='h';
+				break;
+			case SDLK_i:tmp='i';
+				break;
+			case SDLK_j:tmp='j';
+				break;
+			case SDLK_k:tmp='k';
+				break;
+			case SDLK_l:tmp='l';
+				break;
+			case SDLK_m:tmp='m';
+				break;
+			case SDLK_n:tmp='n';
+				break;
+			case SDLK_o:tmp='o';
+				break;
+			case SDLK_p:tmp='p';
+				break;
+			case SDLK_q:tmp='q';
+				break;
+			case SDLK_r:tmp='r';
+				break;
+			case SDLK_s:tmp='s';
+				break;
+			case SDLK_t:tmp='t';
+				break;
+			case SDLK_u:tmp='u';
+				break;
+			case SDLK_v:tmp='v';
+				break;
+			case SDLK_w:tmp='w';
+				break;
+			case SDLK_x:tmp='x';
+				break;
+			case SDLK_y:tmp='y';
+				break;
+			case SDLK_z:tmp='z';
+				break;
+		}
+		if(event.key.keysym.mod&KMOD_SHIFT)
+			tmp=toupper(tmp);
+		updatekeylist(key,tmp);
+/****************************************************/
+          if (pphrase[c]==event.key.keysym.unicode)
+          {
+		state = 0;
+		dst2.x = 40;
+		dst4.x = 480;
+		SDL_BlitSurface(bg, &mydest, screen, &mydest);
+		SDL_Flip(screen);
+		tmpsurf = BlackOutline_w(pphrase+((wp)*next_line), &white, (c)%wp+1);
+		SDL_BlitSurface(tmpsurf, NULL, screen, &dst);
+		SDL_FreeSurface(tmpsurf);
+		tmpsurf = NULL;
+		tmpsurf=BlackOutline_c(keytime, &white);
+		SDL_BlitSurface(tmpsurf, NULL, screen, &dst2);
+		SDL_FreeSurface(tmpsurf);
+		tmpsurf = NULL;	
+		tmpsurf=BlackOutline_c(totaltime, &white);
+		SDL_BlitSurface(tmpsurf, NULL, screen, &dst4);
+		SDL_FreeSurface(tmpsurf);
+		tmpsurf = NULL;
+		if (c==(wcslen(pphrase)-1)){
+				wchar_t buf[10];
+				ConvertFromUTF8(buf, _("Great!"));
+				print_at(buf, wcslen(buf), 275, 200);
+				SDL_Flip(screen);
+				SDL_Delay(2500);
+				next_line=0;
+				quit=1;
+		}
+		if (c==wp){
+			//c++;
+			dst.x=40;
+			dst.y=140;
+			mydest.y+=40;
+			next_line=1;
+		}
+		c++;
+	}
+	else
+	{
+		int key = GetIndex((wchar_t)event.key.keysym.unicode);
+		keypress1= GetWrongKeypress(key);
+		SDL_BlitSurface(keypress1, NULL, screen, &keyboard_loc);
+		SDL_FreeSurface(keypress1);
+		state=0;
+		
+            if (event.key.keysym.sym != SDLK_RSHIFT
+             && event.key.keysym.sym != SDLK_LSHIFT)
+             PlaySound(wrong);
+          }
+        }
+      }
+    }
+    SDL_Flip(screen);
+    SDL_Delay(30);
 
-						state=0;
-						dst2.x=40;
-						dst4.x=480;
-						SDL_BlitSurface(bg, &dst3, screen, &dst2);
-						SDL_BlitSurface(bg, &dst5, screen, &dst4);
-						SDL_Flip(screen);
+  }while (!quit);
 
+  practice_unload_media();
+  savekeyboard();
+  return 1;
+}
 
-						tmp = BlackOutline_w(pphrase+((wp)*next_line), &white, (c)%wp+1);
-						SDL_BlitSurface(tmp, NULL, screen, &dst);
-						SDL_FreeSurface(tmp);
-						
 
-/*
-						print_at(keytime,wcslen(keytime),dst2.x,dst2.y);			
-						print_at(totaltime,wcslen(keytime),dst4.x,dst4.y);					
 
-*/
-						tmp=BlackOutline_c(keytime, &white);
-						SDL_BlitSurface(tmp, NULL, screen, &dst2);
-						SDL_FreeSurface(tmp);
-						
-						tmp=BlackOutline_c(totaltime, &white);
-						SDL_BlitSurface(tmp, NULL, screen, &dst4);
-						SDL_FreeSurface(tmp);
-
-
-						if (c==(wcslen(pphrase)-1)){
-							wchar_t buf[10];
-							ConvertFromUTF8(buf, _("Great!"));
-							print_at(buf, wcslen(buf), 275, 200);
-							SDL_Flip(screen);
-							SDL_Delay(2500);
-							next_line=0;
-							quit=1;
-							
-						}
-						if (c==wp){
-						//c++;
-							dst.x=40;
-							dst.y=140;
-							next_line=1;
-						}
-						c++;
-					} else {
-							if ( event.key.keysym.sym != SDLK_RSHIFT && event.key.keysym.sym != SDLK_LSHIFT )
-								PlaySound(wrong);
-						}
-					}
-				}
-		}
-	SDL_Flip(screen);
-	SDL_Delay(30);
-	}while (!quit);
-	practice_unload_media();
-	return 1;
-}
-         
-
-
 /************************************************************************/
 /*                                                                      */ 
 /*       "Private" functions (local to practice.c)                      */
@@ -272,12 +512,16 @@
   unsigned char fn[FNLEN];
   unsigned char let[5];
   int load_failed = 0;
-
+  DEBUGCODE { printf("Entering practice_load_media\n"); }
   LOG("Loading practice media\n");
 
 
   hands = LoadImage("hands/hands.png", IMG_ALPHA);
-  bg = LoadImage("main_bkg.png", IMG_ALPHA);
+	hand_shift[0] = LoadImage("hands/none.png", IMG_ALPHA);
+	hand_shift[1] = LoadImage("hands/lshift.png", IMG_ALPHA);
+	hand_shift[2] = LoadImage("hands/rshift.png", IMG_ALPHA);
+	keyboard = LoadImage("keyboard/keyboard.png", IMG_ALPHA);
+	bg = LoadImage("main_bkg.png", IMG_ALPHA);
   wrong = LoadSound("tock.wav");
   font = LoadFont(settings.theme_font_name, 30);
 
@@ -294,10 +538,14 @@
     ||!hands
     ||!bg
     ||!wrong
-    ||!font)
+    ||!font
+    ||!keyboard
+    ||!hand_shift[0]
+    ||!hand_shift[1]
+    ||!hand_shift[2])
   {
     fprintf(stderr, "practice_load_media() - failed to load needed media \n");
-    practice_unload_media;
+    practice_unload_media();
     return 0;
   }
 
@@ -307,12 +555,20 @@
   hand_loc.w = (hand[0]->w);
   hand_loc.h = (hand[0]->h);
 
+	/********Position of keyboard image*/
+  keyboard_loc.x = screen->w/2 -keyboard->w/2; 
+  keyboard_loc.y = screen->h/2;
+  keyboard_loc.w = screen->w/8;
+  keyboard_loc.h = screen->h/8;
+
   /* Now render letters for glyphs in alphabet: */
   RenderLetters(font);
   TTF_CloseFont(font);  /* Don't need it after rendering done */
   font = NULL;
+  GenerateKeyboard(keyboard);
 
   LOG("DONE - Loading practice media\n");
+  DEBUGCODE { printf("Leaving practice_load_media\n"); }
   return 1;
 }
 
@@ -321,12 +577,19 @@
 static void practice_unload_media(void)
 {
 	int i;
+	DEBUGCODE { printf("Entering practice_unload_media\n"); }
 	SDL_FreeSurface(bg);
         bg = NULL;
 	SDL_FreeSurface(hands);
         hands = NULL;
+	for(i=0;i<3;i++)
+	{
+		SDL_FreeSurface(hand_shift[i]);
+	        hand_shift[i] = NULL;
+	}
+	SDL_FreeSurface(keyboard);
+        keyboard = NULL;
 	//TTF_CloseFont(font);
-
 	for (i=0; i<10; i++) 
         {
           SDL_FreeSurface(hand[i]);
@@ -335,6 +598,8 @@
 
 	Mix_FreeChunk(wrong);
 	wrong = NULL;
+	DEBUGCODE { printf("Leaving practice_unload_media()\n"); }
+
 }
 
 
@@ -354,93 +619,47 @@
 	SDL_BlitSurface(s, NULL, screen, &dst);
 }
 
+static void print_at(const wchar_t *pphrase, int wrap, int x, int y)
+{
+	int z=0;
+	SDL_Surface *tmp;
+	letter_loc.x = x;
+	letter_loc.y = y;
+	//font = LoadFont(settings.theme_font_name, 30);
+	DEBUGCODE { printf("\n\n\nEntering print_at with : %S\n",pphrase); }
+	if ( wrap == wcslen(pphrase) ){
+		tmp = BlackOutline_w(pphrase, &white, wrap);
+		letter_loc.w = tmp->w+5;
+		letter_loc.h = tmp->h+5;
+		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
+		SDL_FreeSurface(tmp);
+	}else{
+		tmp = BlackOutline_w(pphrase, &white, wrap+1);
+		letter_loc.w = tmp->w+5;
+		letter_loc.h = tmp->h+5;
+		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
+		SDL_FreeSurface(tmp);
+		letter_loc.x = 40;
+                // - (letter_loc.h/4) to account for free space at top and bottom of rendered letters
+		//SDL_FreeSurface(tmp);
+		letter_loc.y = letter_loc.y + letter_loc.h - (letter_loc.h/4);
+		tmp = BlackOutline_w(pphrase+wrap+2, &white, wcslen(pphrase));
+		letter_loc.w = tmp->w+5;
+		letter_loc.h = tmp->h+5;
+		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
+		SDL_FreeSurface(tmp);
+	}
+	//TTF_CloseFont(font);
+	// DEBUGCODE { exit(-1); }
+	DEBUGCODE { printf("Leaving print_at \n\n\n"); }
+}
 
-
 static int get_phrase(const wchar_t* wphrase)
 {	int pc=0,
 	    pw[256] = { 0 },
 	    wp=0,
 	    i=0,
-//	    c=0
 	    z=0;
-//	char fn[FNLEN];
-
-	/* If we didn't receive a phrase get the first one from the file...*/
-	
-//	if (strncmp("", phr, 40)==0){
-//	FILE *pf;
-//	/* set the phrases directory/file */
-/*	#ifdef WIN32
-		snprintf( fn, FNLEN-1, "userdata/phrases.txt" );
-	#else
-		snprintf( fn, FNLEN-1, (const char*)"%s/.tuxtype/phrases.txt", getenv("HOME") );
-	#endif
-
-	DEBUGCODE { printf("get_phrases(): phrases file is '%s'\n", fn ); }
-	LOG("get_phrases(): trying to open phrases file\n");
-	pf = fopen( fn, "r" );
-	if (pf == NULL) 
-		return(wp);
-	while (!feof(pf)) {
-		fscanf( pf, "%[^\n]\n", phrase[pc] );
-		pc++;
-		DEBUGCODE { printf( "%s", phrase[pc] ); }
-	}
-	fclose( pf );
-	pc--;
-	} else {
-		pc=1;
-		strncpy(phrase[0], phr, 80);
-	}
-
-	//Calculate and record pixel width of phrases
- 		for (c=0;c<=pc;c++){
- 			for(i=0; i<strlen(phrase[c]); i++){
-				if (letters[(int)phrase[c][i]] == NULL){
-					LOG("no letter defined in keyboard.lst\n");
-				}
-				else
- 					pw[c]+= letters[(int)phrase[c][i]]->w-5;
- 			}
- 		}
-
-	//Find wrapping point
-	for ( c=0; c<=pc; c++ ){
-			if (pw[c]<598){
-				if ( c==0 ){
-					wp=strlen(phrase[c]);
-					print_at( phrase[0], wp, 40, 10 );
-				}
-			}else{
-				z=0;
-				wp=0;
-				for (i=0;i<strlen(phrase[c]);i++)
-				{
-					z += letters[(int)phrase[c][i]]->w-5;
-					if (wp == 0 && z > 598){
-					wp = i-1;
-					break;
-					}
-				}
-				for (i=wp;i>=0;i--){
-					if ( strncmp( " ", &phrase[c][i], 1 ) == 0 ){
-					wp=i-1;
-					break;
-					}
-				}
-				if ( c==0 ){
-				print_at( phrase[0], wp, 40, 10 );
-				}
-			}
-	}
-	LOG("Leaving get_phrase()\n");
-	return(wp);
-}
-*/
-
-
-
-
 //Calculate and record pixel width of phrases
 	//Find wrapping point
 	if (wcslen(wphrase)<50)
@@ -476,49 +695,34 @@
 	return(wp);
 }
 
-static void print_at(const wchar_t *pphrase, int wrap, int x, int y)
-{
-	int z=0;
-	SDL_Surface *tmp;
-	letter_loc.x = x;
-	letter_loc.y = y;
-	//font = LoadFont(settings.theme_font_name, 30);
-	DEBUGCODE { printf("\n\n\nEntering print_at with : %S\n",pphrase); }
-	if ( wrap == wcslen(pphrase) ){
-		tmp = BlackOutline_w(pphrase, &white, wrap);
-		letter_loc.w = tmp->w+5;
-		letter_loc.h = tmp->h+5;
-		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
-		SDL_FreeSurface(tmp);
-	}else{
-		tmp = BlackOutline_w(pphrase, &white, wrap+1);
-		letter_loc.w = tmp->w+5;
-		letter_loc.h = tmp->h+5;
-		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
-		SDL_FreeSurface(tmp);
-		letter_loc.x = 40;
-                // - (letter_loc.h/4) to account for free space at top and bottom of rendered letters
-		//SDL_FreeSurface(tmp);
-		letter_loc.y = letter_loc.y + letter_loc.h - (letter_loc.h/4);
-		tmp = BlackOutline_w(pphrase+wrap+2, &white, wcslen(pphrase));
-		letter_loc.w = tmp->w+5;
-		letter_loc.h = tmp->h+5;
-		SDL_BlitSurface(tmp, NULL, screen, &letter_loc);
-		SDL_FreeSurface(tmp);
-	}
-	//TTF_CloseFont(font);
-	// DEBUGCODE { exit(-1); }
-	DEBUGCODE { printf("Leaving print_at \n\n\n"); }
-}
 
-
 static void next_letter(wchar_t *t, int c)
 {
 	int i;
 	wchar_t buf[30];
-        i=ConvertFromUTF8(buf, _("Next letter :    "));
+        i=ConvertFromUTF8(buf, _("Next letter "));
 	buf[i]=t[c];
 	buf[i+1]=0;
-        print_at(buf,wcslen(buf),230 ,400);
+        print_at(buf,wcslen(buf),215 ,420);
+}
 
+SDL_Surface* GetKeypress1(int index)
+{
+	char buf[50];
+	GetKeyPos(index,buf);
+	return (LoadImage(buf, IMG_ALPHA));
 }
+
+SDL_Surface* GetWrongKeypress(int index)
+{
+	char buf[50];
+	GetWrongKeyPos(index,buf);
+	return (LoadImage(buf, IMG_ALPHA));
+}
+
+SDL_Surface* GetKeypress2(int index)
+{
+	char buf[50];
+	GetKeyShift(index,buf);
+	return (LoadImage(buf, IMG_ALPHA));
+}




More information about the Tux4kids-commits mailing list