diff --git a/nagisa/src/keybutton.cpp b/nagisa/src/keybutton.cpp
index ee53a05..f9cdc6b 100644
--- a/nagisa/src/keybutton.cpp
+++ b/nagisa/src/keybutton.cpp
@@ -48,6 +48,9 @@
 }
 
 
+int KeyButton::buttonSize = 20;
+
+
 KeyButton::KeyButton(QWidget *parent,
         unsigned int pos_x,unsigned int pos_y,
         unsigned int width, unsigned int height,const QColor &keycolor,
@@ -67,8 +70,8 @@
 //    QToolTip::add(this,l.replace('\n',' ') + "\n[" + event + "]");
 
     setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
-    setFixedHeight(h * 20);
-    setFixedWidth(w * 20);
+    setFixedHeight(h * buttonSize);
+    setFixedWidth(w * buttonSize);
     setPaletteBackgroundColor(color);
     
     if (isToggleButton()) {
@@ -92,8 +95,8 @@
 {
     QFont f = font();
     int s = (w > h ? h : w);
-    if (current.label.length() > 1) f.setPixelSize(6 * s);
-    else f.setPixelSize(12 * s);
+    if (current.label.length() > 1) f.setPixelSize(((buttonSize * 6) / 20) * s);
+    else f.setPixelSize(((buttonSize * 6) / 10) * s);
     setFont(f);
     setText(current.label);
     update();
@@ -239,3 +242,5 @@
         setPaletteBackgroundColor(QColor("red"));
     }
 }
+
+
diff --git a/nagisa/src/keybutton.h b/nagisa/src/keybutton.h
index 23dd518..1692dcd 100644
--- a/nagisa/src/keybutton.h
+++ b/nagisa/src/keybutton.h
@@ -72,6 +72,9 @@
     void updateLabel();
     void changeGroup(const QString &name);
 
+public:
+    static int buttonSize;
+
 protected:
     QTimer *timer;
     KeyGroupList list;
diff --git a/nagisa/src/nagisa.cpp b/nagisa/src/nagisa.cpp
index e7c65b2..546cd94 100644
--- a/nagisa/src/nagisa.cpp
+++ b/nagisa/src/nagisa.cpp
@@ -45,8 +45,8 @@
 //    : QWidget( 0, "nagisa",Qt::WStyle_Customize | Qt::WStyle_DialogBorder | Qt::WStyle_StaysOnTop)
     : QWidget( 0, "nagisa", Qt::WStyle_Customize | Qt::WX11BypassWM | Qt::WStyle_StaysOnTop)
 {
-    QString file = xml;
-    if (file == "") file = "jp109.xml";
+    keytable = xml;
+    if (keytable == "") keytable = "jp109.xml";
     id = -1;
     
     mousePress = false;
@@ -60,21 +60,17 @@
     menu = new QPopupMenu(scaleButton);
     menu_scale = menu->insertItem(tr("hide"),this,SLOT(scale()));
     menu_connect = menu->insertItem(tr("connect"),this,SLOT(connectToScim()));
+    QPopupMenu *resizeMenu = new QPopupMenu(menu);
+    resizeMenu->insertItem(tr("enlarge"),this,SLOT(enlarge()));
+    resizeMenu->insertItem(tr("shrink"),this,SLOT(shrink()));
+    menu->insertItem(tr("size"),resizeMenu);
     menu_exit = menu->insertItem(tr("exit"),this,SLOT(close()));
     scaleButton->setPopup(menu);
     connect(scaleButton,SIGNAL(clicked()),this,SLOT(scale()));
-    NagisaKeyboard *b = new NagisaKeyboard(file,this);
-    contents = b;
-    b->show();
     
-    status = new QLabel(this);
-    
+    createKeyboaed(keytable);
     show();
     
-    connect(b,SIGNAL(pressed(const QString& )),this,SLOT(sendKeyPressEvent(const QString& )));
-    connect(b,SIGNAL(released(const QString& )),this,SLOT(sendKeyReleaseEvent(const QString& )));
-    connect(b,SIGNAL(status(const QString& )),this,SLOT(updateStatus(const QString& )));
-    
     connectToScim();
 }
 
@@ -84,6 +80,21 @@
 }
 
 
+/*!
+    \fn nagisa::createKeyboaed(const QString &xml)
+ */
+void nagisa::createKeyboaed(const QString &xml)
+{
+    NagisaKeyboard *b = new NagisaKeyboard(xml,this);
+    contents = b;
+    connect(b,SIGNAL(pressed(const QString& )),this,SLOT(sendKeyPressEvent(const QString& )));
+    connect(b,SIGNAL(released(const QString& )),this,SLOT(sendKeyReleaseEvent(const QString& )));
+    connect(b,SIGNAL(status(const QString& )),this,SLOT(updateStatus(const QString& )));
+    b->show();
+    status = new QLabel(this);
+    status->show();
+}
+
 
 
 /*!
@@ -197,3 +208,34 @@
 {
     status->setText(s);
 }
+
+
+
+
+/*!
+    \fn nagisa::enlarge()
+ */
+void nagisa::enlarge()
+{
+    delete(contents);
+    delete(status);
+    KeyButton::buttonSize += 5;
+    createKeyboaed(keytable);
+    adjustSize();
+}
+
+
+/*!
+    \fn nagisa::shrink()
+ */
+void nagisa::shrink()
+{
+    if ((KeyButton::buttonSize - 5) <= 0) return;
+    size -= 5;
+    delete(contents);
+    delete(status);
+    KeyButton::buttonSize -= 5;
+    createKeyboaed(keytable);
+    adjustSize();
+}
+
diff --git a/nagisa/src/nagisa.h b/nagisa/src/nagisa.h
index 40f04d4..c37b243 100644
--- a/nagisa/src/nagisa.h
+++ b/nagisa/src/nagisa.h
@@ -34,6 +34,7 @@
 public:
     nagisa(const QString &xml = 0);
     ~nagisa();
+    void createKeyboaed(const QString &xml);
 
 public slots:
     void sendKeyPressEvent(const QString &e);
@@ -54,11 +55,15 @@
     int menu_connect;
     int menu_exit;
     int id;
+    int size;
+    QString keytable;
 
 protected slots:
     void scale();
     void connectToScim();
     void updateStatus(const QString &s);
+    void enlarge();
+    void shrink();
 };
 
 
diff --git a/nagisa/src/nagisa_ja_JP.qm b/nagisa/src/nagisa_ja_JP.qm
index a7db524..e153bc0 100644
--- a/nagisa/src/nagisa_ja_JP.qm
+++ b/nagisa/src/nagisa_ja_JP.qm
Binary files differ
diff --git a/nagisa/src/nagisa_ja_JP.ts b/nagisa/src/nagisa_ja_JP.ts
index cf0de5e..9360a36 100644
--- a/nagisa/src/nagisa_ja_JP.ts
+++ b/nagisa/src/nagisa_ja_JP.ts
@@ -33,5 +33,17 @@
         <source>Nagisa Keypad</source>
         <translation type="unfinished">なぎさたんキーボード</translation>
     </message>
+    <message>
+        <source>enlarge</source>
+        <translation type="unfinished">でかく</translation>
+    </message>
+    <message>
+        <source>shrink</source>
+        <translation type="unfinished">ちっさく</translation>
+    </message>
+    <message>
+        <source>size</source>
+        <translation type="unfinished">サイズ</translation>
+    </message>
 </context>
 </TS>
diff --git a/nagisa/src/nagisakeyboard.cpp b/nagisa/src/nagisakeyboard.cpp
index 17f2703..6cfa257 100644
--- a/nagisa/src/nagisakeyboard.cpp
+++ b/nagisa/src/nagisakeyboard.cpp
@@ -35,7 +35,7 @@
 
 void NagisaKeyboard::init()
 {
-    grid = new QGridLayout(this,1,1,0,20);
+    grid = new QGridLayout(this,1,1,0,KeyButton::buttonSize);
 }
 
 
@@ -52,6 +52,7 @@
 void NagisaKeyboard::layout()
 {
     for(unsigned int i = 0;i < keys.count();i ++) {
+        grid->remove(keys[i]);
         grid->addMultiCellWidget(keys[i],
             keys[i]->getY(),keys[i]->getY() + keys[i]->getH(),
             keys[i]->getX(),keys[i]->getX() + keys[i]->getW());
@@ -181,3 +182,4 @@
     }
     return res;
 }
+
diff --git a/nagisa/src/nagisakeyboard.h b/nagisa/src/nagisakeyboard.h
index b59fcef..4e8f9e7 100644
--- a/nagisa/src/nagisakeyboard.h
+++ b/nagisa/src/nagisakeyboard.h
@@ -37,7 +37,6 @@
     NagisaKeyboard(const QString &xml, QWidget *parent = 0, const char *name = 0);
     ~NagisaKeyboard();
     static const QStringList uniq(const QStringList &list);
-
 protected:
     QGridLayout *grid;
     QValueList<KeyButton *> keys;
diff --git a/nagisa/src/src.pro b/nagisa/src/src.pro
index a29e24d..ef2cbca 100644
--- a/nagisa/src/src.pro
+++ b/nagisa/src/src.pro
@@ -2,12 +2,14 @@
 # ------------------------------------------- 
 # Subdir relative project main directory: ./src
 # Target is ????????: ../bin/nagisa
-PREFIX = /usr/local
+isEmpty(PREFIX) {
+  PREFIX = /usr/local
+}
+
 TRANSLATIONS += nagisa_ja_JP.ts 
 HEADERS += nagisa.h \
            nagisakeyboard.h \
-           keybutton.h \
-           nagisakeytable.h 
+           keybutton.h 
 SOURCES += nagisa.cpp \
            main.cpp \
            nagisakeyboard.cpp \