Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c	(revision 1158)
@@ -135,5 +135,4 @@
   if (width)  *width  = geometry[2];
   if (height) *height = geometry[3];
-  fprintf(stderr, "x=%d,y=%d,w=%d,h=%d\n",geometry[0],geometry[1],geometry[2],geometry[3]);
   
   XFree(geometry);
@@ -342,7 +341,7 @@
 	}
     }
-  if (mb_kbd_key_get_back_image(key))
-    {
-      MBKeyboardImage *img = mb_kbd_key_get_back_image(key);
+  if (mb_kbd_key_get_normal_image(key))
+    {
+      MBKeyboardImage *img = mb_kbd_key_get_normal_image(key);
 
       if (mb_kbd_image_width (img) > max_w)
@@ -438,7 +437,5 @@
 
       row_item = util_list_next(row_item);
-      fprintf(stderr, "the key_x=%d,key_y=%d\n", key_x, key_y);
-    }
-  fprintf(stderr, "max_row_key_height=%d,max_row_width=%d\n", max_row_key_height, max_row_width);
+    }
 
   *height = row_y; 
@@ -469,5 +466,4 @@
 
       free_space = max_row_width - mb_kbd_row_width(row);
-      fprintf(stderr, "free_space=%d, max_row_width=%d, mb_kbd_row_width(row)=%d\n", free_space, max_row_width, mb_kbd_row_width(row));
 
       mb_kbd_row_for_each_key(row, key_item)
@@ -525,4 +521,21 @@
   
   *width = max_row_width;
+
+  if (mb_kbd_layout_get_background(layout) != NULL)
+    {
+      MBKeyboardImage *img;
+      int             img_wid;
+      int             img_hei;
+
+      img = mb_kbd_layout_get_background(layout);
+      img_wid = mb_kbd_image_width(img);
+      img_hei = mb_kbd_image_height(img);
+
+      if (img_wid > *width)
+        *width = img_wid;
+
+      if (img_hei > *height)
+        *height = img_hei;
+    }
 }
 
@@ -668,6 +681,6 @@
     }
 
-  win_attr.override_redirect = True; /* Set to true for extreme case */
-  /*win_attr.override_redirect = False;*/ /* Set to true for extreme case */
+  /*win_attr.override_redirect = True;*/ /* Set to true for extreme case */
+  win_attr.override_redirect = False; /* Set to true for extreme case */
   win_attr.event_mask 
     = ButtonPressMask|ButtonReleaseMask|Button1MotionMask|StructureNotifyMask;
@@ -681,5 +694,4 @@
 			   CWOverrideRedirect|CWEventMask,
 			   &win_attr);
-  fprintf(stderr, "ui->xwin_width=%d,ui->xwin_height=%d\n", ui->xwin_width, ui->xwin_height);
 
 
@@ -1039,5 +1051,4 @@
   new_state = want_extended(ui);
    
-  fprintf(stderr, "########################################################\n");
   if (new_state == old_state) 	/* Not a rotation */
     {
@@ -1250,5 +1261,4 @@
   mb_kbd_ui_allocate_ui_layout(ui, 
 			       &ui->base_alloc_width, &ui->base_alloc_height);
-  fprintf(stderr, "ui->base_alloc_width=%d, ui->base_alloc_height=%d\n",ui->base_alloc_width, ui->base_alloc_height);
 
   ui->xwin_width  = ui->base_alloc_width;
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c	(revision 1158)
@@ -24,4 +24,5 @@
   MBKeyboard       *kbd;  
   char             *id;
+  MBKeyboardImage  *background;
   List             *rows;
 };
@@ -42,4 +43,17 @@
 
 void
+mb_kbd_layout_set_background(MBKeyboardLayout *layout,
+                             MBKeyboardImage  *background)
+{
+  layout->background = background;
+}
+
+MBKeyboardImage *
+mb_kbd_layout_get_background(MBKeyboardLayout *layout)
+{
+  return layout->background;
+}
+
+void
 mb_kbd_layout_append_row(MBKeyboardLayout *layout,
 			 MBKeyboardRow    *row)
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c	(revision 1158)
@@ -73,5 +73,6 @@
   boolean                extended;   /* only show in landscape */
 
-  MBKeyboardImage        *back_image;   /* The background image */
+  MBKeyboardImage        *normal_image;   /* The normal image */
+  MBKeyboardImage        *push_image;   /* The push down image */
 
   MBKeyboardStateType    sets_kbdstate; /* needed */
@@ -101,13 +102,25 @@
 
 void
-mb_kbd_key_set_back_image(MBKeyboardKey *key, MBKeyboardImage *image)
-{
-  key->back_image = image;
+mb_kbd_key_set_normal_image(MBKeyboardKey *key, MBKeyboardImage *image)
+{
+  key->normal_image = image;
 }
 
 MBKeyboardImage *
-mb_kbd_key_get_back_image(MBKeyboardKey *key)
-{
-  return key->back_image;
+mb_kbd_key_get_normal_image(MBKeyboardKey *key)
+{
+  return key->normal_image;
+}
+
+void
+mb_kbd_key_set_push_image(MBKeyboardKey *key, MBKeyboardImage *image)
+{
+  key->push_image = image;
+}
+
+MBKeyboardImage *
+mb_kbd_key_get_push_image(MBKeyboardKey *key)
+{
+  return key->push_image;
 }
 
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c	(revision 1158)
@@ -316,8 +316,22 @@
   const char *val;
   char  buf[512];
+  Bool  pushimage;
+
+  if (streq(tag, "normalimage"))
+    {
+      pushimage = False;
+    }
+  else if (streq(tag, "pushimage"))
+    {
+      pushimage = True;
+    }
+  else
+    {
+      set_error(state, "Unknown background image");
+      return;
+    }
 
   if ((val = attr_get_val("image", attr)) == NULL)
     {
-      fprintf(stderr, "image=%s\n", val);
       set_error(state, "Attribute 'image' is required");
       return;
@@ -340,5 +354,8 @@
     fprintf(stderr, "load img fail\n");
 
-  mb_kbd_key_set_back_image(state->current_key, img);
+  if (pushimage)
+    mb_kbd_key_set_normal_image(state->current_key, img);
+  else
+    mb_kbd_key_set_push_image(state->current_key, img);
 }
 
@@ -557,11 +574,40 @@
     }
 
-  /*FIXME: It is only temporary code */
-  //img = mb_kbd_image_new(state->keyboard, "/root/.matchbox/match.png");
-  //if(!img)
-    //fprintf(stderr, "can not find /root/.matchbox/match.png\n");
-  //mb_kbd_key_set_back_image(state->current_key, img);
-
   mb_kbd_row_append_key(state->current_row, state->current_key);
+}
+
+static void
+config_handle_layout_background(MBKeyboardConfigState *state,
+                                const char **attr)
+{
+  MBKeyboardImage *img;
+  const char *val;
+  char  buf[512];
+
+  if ((val = attr_get_val("image", attr)) == NULL)
+    {
+      set_error(state, "Backgroud Attribute 'image' is required");
+      return;
+    }
+
+  if (val[0] != '/')
+    {
+      snprintf(buf, 512, "%s/%s", PKGDATADIR, val);
+
+      if (!util_file_readable(buf))
+        snprintf(buf, 512, "%s/.matchbox/%s", getenv("HOME"), val);
+
+      img = mb_kbd_image_new (state->keyboard, buf);
+    }
+  else
+    {
+      img = mb_kbd_image_new (state->keyboard, val);
+    }
+
+  if (img == NULL)
+    fprintf(stderr, "load img fail\n");
+
+  mb_kbd_layout_set_background(state->current_layout, img);
+
 }
 
@@ -588,5 +634,6 @@
       mb_kbd_key_set_blank(state->current_key, True);
     }
-  else  if (streq(tag, "background"))
+  else  if (streq(tag, "normalimage")
+	   || streq(tag, "pushimage"))
     {
       config_handle_key_background_tag(state, tag, attr);
@@ -600,4 +647,8 @@
     {
       config_handle_key_subtag(state, tag, attr);
+    }
+  else if (streq(tag, "background"))
+    {
+      config_handle_layout_background(state, attr);
     }
 
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c	(revision 1158)
@@ -148,11 +148,8 @@
     rect.height  = mb_kbd_ui_x_win_height(ui) - rect.y - 1;
 
-  /* clear it */
-
-  XSetForeground(xdpy, xft_backend->xgc, WhitePixel(xdpy, xscreen));
-
-  XFillRectangles(xdpy, backbuffer, xft_backend->xgc, &rect, 1);
-
-  image = mb_kbd_key_get_back_image(key);
+  if (mb_kbd_key_is_held(kbd, key))
+    image = mb_kbd_key_get_push_image(key);
+  else
+    image = mb_kbd_key_get_normal_image(key);
   if(image)
     {
@@ -170,4 +167,10 @@
   else                   
     {
+      /* clear it */
+
+      XSetForeground(xdpy, xft_backend->xgc, WhitePixel(xdpy, xscreen));
+
+      XFillRectangles(xdpy, backbuffer, xft_backend->xgc, &rect, 1);
+
       /* draw 'main border' */
       
@@ -246,4 +249,5 @@
     }
 
+/*
   if (mb_kbd_key_get_face_type(key, state) == MBKeyboardKeyFaceGlyph)
     {
@@ -294,4 +298,5 @@
 		       0, 0, 0, 0, x, y, w, h);
     }
+*/
 }
 
@@ -300,23 +305,42 @@
 {
   MBKeyboardUIBackendXft *xft_backend = NULL;
-
-  xft_backend = (MBKeyboardUIBackendXft*)mb_kbd_ui_backend(ui);
+  MBKeyboardImage        *image;
+
+  xft_backend = (MBKeyboardUIBackendXft*)mb_kbd_ui_backend(ui);
+
+  image = mb_kbd_layout_get_background(mb_kbd_get_selected_layout(mb_kbd_ui_kbd(ui)));
 
   /* Background */
-  XSetForeground(mb_kbd_ui_x_display(ui), 
-		 xft_backend->xgc, xft_backend->xcol_f4f4f4.pixel);
-
-  XFillRectangle(mb_kbd_ui_x_display(ui), 
-		 mb_kbd_ui_backbuffer(ui), 
-		 xft_backend->xgc,
-		 0, 0, 
-		 mb_kbd_ui_x_win_width(ui),
-		 mb_kbd_ui_x_win_height(ui));
-
-  XSetForeground(mb_kbd_ui_x_display(ui), 
-		 xft_backend->xgc, 
-		 BlackPixel(mb_kbd_ui_x_display(ui), 
-			    mb_kbd_ui_x_screen(ui)));
-
+  if (image == NULL)
+    {
+      XSetForeground(mb_kbd_ui_x_display(ui), 
+                     xft_backend->xgc, xft_backend->xcol_f4f4f4.pixel);
+
+      XFillRectangle(mb_kbd_ui_x_display(ui), 
+                     mb_kbd_ui_backbuffer(ui), 
+                     xft_backend->xgc,
+                     0, 0, 
+                     mb_kbd_ui_x_win_width(ui),
+                     mb_kbd_ui_x_win_height(ui));
+
+      XSetForeground(mb_kbd_ui_x_display(ui), 
+                     xft_backend->xgc, 
+                     BlackPixel(mb_kbd_ui_x_display(ui), 
+                                mb_kbd_ui_x_screen(ui)));
+    }
+  else
+    {
+      int w, h;
+
+      w = mb_kbd_image_width (image);
+      h = mb_kbd_image_height (image);
+
+      XRenderComposite(mb_kbd_ui_x_display(ui),
+                       PictOpOver,
+                       mb_kbd_image_render_picture(image),
+                       None,
+                       XftDrawPicture(xft_backend->xft_backbuffer),
+                       0, 0, 0, 0, 0, 0, w, h);
+    }
 
 }
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.c	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.c	(revision 1158)
@@ -90,9 +90,9 @@
   if (want_small)
     {
-      kb->key_border   = 1;
+      kb->key_border   = 0;
       kb->key_pad      = 0;
       kb->col_spacing  = 0;
       kb->row_spacing  = 0;
-      kb->font_pt_size = 10;
+      kb->font_pt_size = 12;
     }
 
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h	(revision 1158)
@@ -342,4 +342,11 @@
 
 void
+mb_kbd_layout_set_background(MBKeyboardLayout *layout,
+                             MBKeyboardImage  *background);
+
+MBKeyboardImage *
+mb_kbd_layout_get_background(MBKeyboardLayout *layout);
+
+void
 mb_kbd_layout_append_row(MBKeyboardLayout *layout,
 			 MBKeyboardRow    *row);
@@ -393,8 +400,14 @@
 
 void
-mb_kbd_key_set_back_image(MBKeyboardKey *key, MBKeyboardImage *image);
+mb_kbd_key_set_normal_image(MBKeyboardKey *key, MBKeyboardImage *image);
 
 MBKeyboardImage *
-mb_kbd_key_get_back_image(MBKeyboardKey *key);
+mb_kbd_key_get_normal_image(MBKeyboardKey *key);
+
+void
+mb_kbd_key_set_push_image(MBKeyboardKey *key, MBKeyboardImage *image);
+
+MBKeyboardImage *
+mb_kbd_key_get_push_image(MBKeyboardKey *key);
 
 void
Index: /trunk/src/target/OM-2007/applications/openmoko-keyboard/layouts/keyboard.xml
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-keyboard/layouts/keyboard.xml	(revision 1157)
+++ /trunk/src/target/OM-2007/applications/openmoko-keyboard/layouts/keyboard.xml	(revision 1158)
@@ -1,3 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
+﻿<?xml version="1.0" encoding="UTF-8"?>
 <keyboard>
 
@@ -7,105 +7,57 @@
 
 <layout id="defualt keyboard">
-
-<!--
-  <row>
-     <key>
-	  <default display="ã" />                
-    </key>
-    <key>
-	  <default display="Óª" />                
-    </key>
-    <key width="1500">
-	  <default display="Î©" />                
-    </key>
-    <space width="1500" />
-    <key fill="true">
-	  <default display="â ¿" />                
-    </key>
-  </row>
--->
+  <background image="bg_keypad.png" />
 
   <row>
 
-    <space width="500" extended="true"/>
-
-    <key fill="true">
-	  <default display="Esc" action="escape" />
-	  <background image="testkey.png"/>
-    </key>
-<!--
     <key>
-      <default display="image:/usr/share/pixmaps/sync_icon.png" action="a"/>
-    </key>  
--->
-    <key>
-	  <default display="`" />
-	  <background image="testkey.png"/>
+      <default display="Q" />
+      <normalimage image="key_cap_Q.png"/>
+      <pushimage image="key_cap_Q_p.png"/>
     </key>
     <key>
-	  <default display="1" />                
-	  <shifted display="!" />
-	  <background image="testkey.png"/>
+      <default display="W" />
+      <normalimage image="key_cap_W.png"/>
+      <pushimage image="key_cap_W_p.png"/>
     </key>
     <key>
-	  <default display="2" />                
-	  <shifted display='"' />
-          <mod1    display="Âœ" />
-	  <background image="testkey.png"/>
+      <default display="E" />
+      <normalimage image="key_cap_E.png"/>
+      <pushimage image="key_cap_E_p.png"/>
     </key>
     <key>
-	  <default display="3" />
-	  <shifted display="Â£" />
-          <mod1    display="ÂŸ" />               
-	  <background image="testkey.png"/>
+      <default display="R" />
+      <normalimage image="key_cap_R.png"/>
+      <pushimage image="key_cap_R_p.png"/>
     </key>
     <key>
-	  <default display="4" />
-	  <shifted display="$" />                
-	  <background image="testkey.png"/>
+      <default display="T" />
+      <normalimage image="key_cap_T.png"/>
+      <pushimage image="key_cap_T_p.png"/>
     </key>
     <key>
-	  <default display="5" />
-	  <shifted display="%" />                
-	  <background image="testkey.png"/>
+      <default display="Y" />
+      <normalimage image="key_cap_Y.png"/>
+      <pushimage image="key_cap_Y_p.png"/>
     </key>
     <key>
-	  <default display="6" />
-	  <shifted display="^" />                
-	  <background image="testkey.png"/>
+      <default display="U" />
+      <normalimage image="key_cap_U.png"/>
+      <pushimage image="key_cap_U_p.png"/>
     </key>
     <key>
-	  <default display="7" />
-	  <shifted display="&amp;" />                
-	  <background image="testkey.png"/>
+      <default display="I" />
+      <normalimage image="key_cap_I.png"/>
+      <pushimage image="key_cap_I_p.png"/>
     </key>
     <key>
-	  <default display="8" />
-	  <shifted display="*" />                
-	  <background image="testkey.png"/>
+      <default display="O" />
+      <normalimage image="key_cap_O.png"/>
+      <pushimage image="key_cap_O_p.png"/>
     </key>
     <key>
-	  <default display="9" />
-	  <shifted display="(" />                
-	  <background image="testkey.png"/>
-    </key>
-    <key>
-	  <default display="0" />
-	  <shifted display=")" />                
-	  <background image="testkey.png"/>
-    </key>
-    <key>
-	  <default display="-" />
-	  <shifted display="_" />                
-	  <background image="testkey.png"/>
-    </key>
-    <key>
-	  <default display="=" />
-	  <shifted display="+" />                
-	  <background image="testkey.png"/>
-    </key>
-
-    <key fill="true">
-	  <default display="Bksp" action="backspace"/>
+      <default display="P" />
+      <normalimage image="key_cap_P.png"/>
+      <pushimage image="key_cap_P_p.png"/>
     </key>
 
@@ -114,74 +66,48 @@
   <row>
 
-    <space width="500" extended="true"/>
-
-    <key fill="true">
-	  <default display="Tab" action="tab"/>                
-    </key>
-    <key obey-caps='true'>
-	  <default display="q" />                
-	  <shifted display="Q" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="w" />                
-	  <shifted display="W" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <mod1 display="Ã«" />
-	  <default    display="e" />                
-	  <shifted display="E" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="r" />                
-	  <shifted display="R" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="t" />                
-	  <shifted display="T" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="y" />                
-	  <shifted display="Y" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="u" />                
-	  <shifted display="U" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="i" />                
-	  <shifted display="I" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="o" />                
-	  <shifted display="O" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="p" />                
-	  <shifted display="P" />
-	  <background image="testkey.png"/>
+    <key>
+      <default display="A" />
+      <normalimage image="key_cap_A.png"/>
+      <pushimage image="key_cap_A_p.png"/>
     </key>
     <key>
-	  <default display="{" />                
-	  <shifted display="[" />
-	  <background image="testkey.png"/>
+      <default display="S" />
+      <normalimage image="key_cap_S.png"/>
+      <pushimage image="key_cap_S_p.png"/>
     </key>
     <key>
-	  <default display="}" />                
-	  <shifted display="]" />
-	  <background image="testkey.png"/>
+      <default display="D" />
+      <normalimage image="key_cap_D.png"/>
+      <pushimage image="key_cap_D_p.png"/>
     </key>
-    <key fill="true">
-	  <default display="\" />                
-	  <shifted display="|" />
-	  <background image="testkey.png"/>
+    <key>
+      <default display="F" />
+      <normalimage image="key_cap_F.png"/>
+      <pushimage image="key_cap_F_p.png"/>
+    </key>
+    <key>
+      <default display="G" />
+      <normalimage image="key_cap_G.png"/>
+      <pushimage image="key_cap_G_p.png"/>
+    </key>
+    <key>
+      <default display="H" />
+      <normalimage image="key_cap_H.png"/>
+      <pushimage image="key_cap_H_p.png"/>
+    </key>
+    <key>
+      <default display="J" />
+      <normalimage image="key_cap_J.png"/>
+      <pushimage image="key_cap_J_p.png"/>
+    </key>
+    <key>
+      <default display="K" />
+      <normalimage image="key_cap_K.png"/>
+      <pushimage image="key_cap_K_p.png"/>
+    </key>
+    <key>
+      <default display="L" />
+      <normalimage image="key_cap_L.png"/>
+      <pushimage image="key_cap_L_p.png"/>
     </key>
 
@@ -189,182 +115,61 @@
   <row>
 
-    <space width="500" extended="true"/>
-
-    <key fill="true">
-	  <default display="Caps" action="modifier:caps"/>                
-    </key>
-    <key obey-caps='true'>
-	  <default display="a" />                
-	  <shifted display="A" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="s" />                
-	  <shifted display="S" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="d" />                
-	  <shifted display="D" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="f" />                
-	  <shifted display="F" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="g" />                
-	  <shifted display="G" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="h" />                
-	  <shifted display="H" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="j" />                
-	  <shifted display="J" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="k" />                
-	  <shifted display="K" />
-	  <background image="testkey.png"/>
-    </key>
-    <key obey-caps='true'>
-	  <default display="l" />                
-	  <shifted display="L" />
-	  <background image="testkey.png"/>
+    <key>
+      <default display="Z" />
+      <normalimage image="key_cap_Z.png"/>
+      <pushimage image="key_cap_Z_p.png"/>
     </key>
     <key>
-	  <default display=";" />                
-	  <shifted display=":" />
-	  <background image="testkey.png"/>
+      <default display="X" />
+      <normalimage image="key_cap_X.png"/>
+      <pushimage image="key_cap_X_p.png"/>
     </key>
     <key>
-	  <default display="#" />                
-	  <shifted display="~" />
-	  <background image="testkey.png"/>
+      <default display="C" />
+      <normalimage image="key_cap_C.png"/>
+      <pushimage image="key_cap_C_p.png"/>
     </key>
-    <key fill="true">
-	  <default display="Ret" action="return"/>
+    <key>
+      <default display="V" />
+      <normalimage image="key_cap_V.png"/>
+      <pushimage image="key_cap_V_p.png"/>
+    </key>
+    <key>
+      <default display="B" />
+      <normalimage image="key_cap_B.png"/>
+      <pushimage image="key_cap_B_p.png"/>
+    </key>
+    <key>
+      <default display="N" />
+      <normalimage image="key_cap_N.png"/>
+      <pushimage image="key_cap_N_p.png"/>
+    </key>
+    <key>
+      <default display="M" />
+      <normalimage image="key_cap_M.png"/>
+      <pushimage image="key_cap_M_p.png"/>
     </key>
 
   </row>
+
   <row>
-
-    <space width="500" extended="true"/>
-
-    <key fill="true">
-	  <default display="Shift" action="modifier:shift"/>                
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="z" />                
-	  <shifted display="Z" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="x" />                
-	  <shifted display="X" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="c" />                
-	  <shifted display="C" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="v" />                
-	  <shifted display="V" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="b" />                
-	  <shifted display="B" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="n" />                
-	  <shifted display="N" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key obey-caps='true'>
-	  <default display="m" />                
-	  <shifted display="M" />
-	  <background image="testkey.png"/>
-    </key>
-
-    <key>
-	  <default display="," />                
-	  <shifted display="&lt;" />
-	  <background image="testkey.png"/>
-    </key>
-    <key>
-	  <default display="." />                
-	  <shifted display="&gt;" />
-	  <background image="testkey.png"/>
-    </key>
-    <key>
-	  <default display="/" />                
-	  <shifted display="?" />
-	  <background image="testkey.png"/>
-    </key>
-
-
-    <key fill="true">
-	  <default display="Shift" action="modifier:shift"/>                
-    </key>
-
- </row>
-  <row>
-
-    <space width="500" extended="true"/>
-
-    <key>
-	  <default display="Ã€Ã«Ã¶" action="modifier:mod1"/>                
-    </key>
-
-    <key fill="true">
-	  <default display="Ctrl" action="modifier:ctrl"/>                
-    </key>
-
-    <key>
-	  <default display="Alt" action="modifier:alt"/>                
-    </key>
 
 
     <key>
-	  <default display=" " action="space" />                
-	  <background image="spacekey.png"/>
-    </key>
-
-    <key>
-	  <default display="@" />                
-	  <shifted display="'" />
-    </key>
-
-    <key>
-	  <default display="^" action="up" />                
+      <default display=" " action="space" />
+      <normalimage image="key_comm_space.png"/>
+      <pushimage image="key_comm_space_p.png"/>
     </key>
     <key>
-	  <default display="V" action="down" />                
+      <default display=" " action="backspace" />
+      <normalimage image="key_comm_backspace.png"/>
+      <pushimage image="key_comm_backspace_p.png"/>
     </key>
     <key>
-	  <default display="&lt;" action="left" />                
+      <default display=" " action="return" />
+      <normalimage image="key_comm_enter.png"/>
+      <pushimage image="key_comm_enter_p.png"/>
     </key>
-    <key>
-	  <default display="&gt;" action="right" />                
-    </key>
-
-</row>
+  </row>
 
 </layout>
