OSDN Git Service

日本語版
[nazghul-jp/nazghul-jp.git] / src / cmdwin.c
index 118549f..56eb1f7 100644 (file)
@@ -66,6 +66,8 @@ static struct {
 static FILE *log = NULL;
 #endif
 
+struct dictionary *dictionary = NULL;
+
 static inline void cmdwin_clear_no_repaint()
 {
        memset(cmdwin.buf, 0, cmdwin.blen);
@@ -298,3 +300,365 @@ void cmdwin_flush(void)
         log_msg("%s\n", cmdwin.buf);
         cmdwin_clear();
 }
+
+int kana_to_english(char *kana, char *english, char *kanji)
+{
+       int i;
+       
+       for (i = 0; dictionary[i].kana != NULL; i++) {
+               if (!strcmp(kana, dictionary[i].kana)) {
+                       if (english) {
+                               strcpy(english, dictionary[i].english);
+                       }
+                       if (kanji) {
+                               strcpy(kanji, dictionary[i].kanji);
+                       }
+                       return true;
+               }
+       }
+
+       if (english) {
+               strcpy(english, kana);
+       }
+       if (kanji) {
+               strcpy(kanji, kana);
+       }
+       return false;
+}
+
+int alpha_to_kana(int key, char *buf)
+{
+       const static struct {
+               const char *alpha;
+               const char *kana;
+       } kana[] = {
+               { "ayb", "¥Ó¥ã" },
+               { "iyb", "¥Ó¥£" },
+               { "uyb", "¥Ó¥å" },
+               { "eyb", "¥Ó¥§" },
+               { "oyb", "¥Ó¥ç" },
+               { "ayc", "¥Á¥ã" },
+               { "iyc", "¥Á¥£" },
+               { "uyc", "¥Á¥å" },
+               { "eyc", "¥Á¥§" },
+               { "oyc", "¥Á¥ç" },
+               { "ayd", "¥Â¥ã" },
+               { "iyd", "¥Â¥£" },
+               { "uyd", "¥Â¥å" },
+               { "eyd", "¥Â¥§" },
+               { "oyd", "¥Â¥ç" },
+               { "ayf", "¥Õ¥ã" },
+               { "iyf", "¥Õ¥£" },
+               { "uyf", "¥Õ¥å" },
+               { "eyf", "¥Õ¥§" },
+               { "oyf", "¥Õ¥ç" },
+               { "ayg", "¥®¥ã" },
+               { "iyg", "¥®¥£" },
+               { "uyg", "¥®¥å" },
+               { "eyg", "¥®¥§" },
+               { "oyg", "¥®¥ç" },
+               { "ayh", "¥Ò¥ã" },
+               { "iyh", "¥Ò¥£" },
+               { "uyh", "¥Ò¥å" },
+               { "eyh", "¥Ò¥§" },
+               { "oyh", "¥Ò¥ç" },
+               { "ayj", "¥¸¥ã" },
+               { "iyj", "¥¸¥£" },
+               { "uyj", "¥¸¥å" },
+               { "eyj", "¥¸¥§" },
+               { "oyj", "¥¸¥ç" },
+               { "ayk", "¥­¥ã" },
+               { "iyk", "¥­¥£" },
+               { "uyk", "¥­¥å" },
+               { "eyk", "¥­¥§" },
+               { "oyk", "¥­¥ç" },
+               { "aym", "¥ß¥ã" },
+               { "iym", "¥ß¥£" },
+               { "uym", "¥ß¥å" },
+               { "eym", "¥ß¥§" },
+               { "oym", "¥ß¥ç" },
+               { "ayn", "¥Ë¥ã" },
+               { "iyn", "¥Ë¥£" },
+               { "uyn", "¥Ë¥å" },
+               { "eyn", "¥Ë¥§" },
+               { "oyn", "¥Ë¥ç" },
+               { "ayp", "¥Ô¥ã" },
+               { "iyp", "¥Ô¥£" },
+               { "uyp", "¥Ô¥å" },
+               { "eyp", "¥Ô¥§" },
+               { "oyp", "¥Ô¥ç" },
+               { "ayq", "¥¯¥¡" },
+               { "iyq", "¥¯¥£" },
+               { "uyq", "¥¯¥¥" },
+               { "eyq", "¥¯¥§" },
+               { "oyq", "¥¯¥©" },
+               { "ayr", "¥ê¥ã" },
+               { "iyr", "¥ê¥£" },
+               { "uyr", "¥ê¥å" },
+               { "eyr", "¥ê¥§" },
+               { "oyr", "¥ê¥ç" },
+               { "ays", "¥·¥ã" },
+               { "iys", "¥·¥£" },
+               { "uys", "¥·¥å" },
+               { "eys", "¥·¥§" },
+               { "oys", "¥·¥ç" },
+               { "ayt", "¥Á¥ã" },
+               { "iyt", "¥Á¥£" },
+               { "uyt", "¥Á¥å" },
+               { "eyt", "¥Á¥§" },
+               { "oyt", "¥Á¥ç" },
+               { "ayv", "¥ô¥ã" },
+               { "iyv", "¥ô¥£" },
+               { "uyv", "¥ô¥å" },
+               { "eyv", "¥ô¥§" },
+               { "oyv", "¥ô¥ç" },
+               { "ayx", "¥ã" },
+               { "iyx", "¥£" },
+               { "uyx", "¥å" },
+               { "eyx", "¥§" },
+               { "oyx", "¥ç" },
+               { "ayz", "¥¸¥ã" },
+               { "iyz", "¥¸¥£" },
+               { "uyz", "¥¸¥å" },
+               { "eyz", "¥¸¥§" },
+               { "oyz", "¥¸¥ç" },
+               { "ahc", "¥Á¥ã" },
+               { "ihc", "¥Á" },
+               { "uhc", "¥Á¥å" },
+               { "ehc", "¥Á¥§" },
+               { "ohc", "¥Á¥ç" },
+               { "ahd", "¥Ç¥ã" },
+               { "ihd", "¥Ç¥£" },
+               { "uhd", "¥Ç¥å" },
+               { "ehd", "¥Ç¥§" },
+               { "ohd", "¥Ç¥ç" },
+               { "ahp", "¥Õ¥¡" },
+               { "ihp", "¥Õ¥£" },
+               { "uhp", "¥Õ" },
+               { "ehp", "¥Õ¥§" },
+               { "ohp", "¥Õ¥©" },
+               { "ahs", "¥·¥ã" },
+               { "ihs", "¥·" },
+               { "uhs", "¥·¥å" },
+               { "ehs", "¥·¥§" },
+               { "ohs", "¥·¥ç" },
+               { "aht", "¥Æ¥ã" },
+               { "iht", "¥Æ¥£" },
+               { "uht", "¥Æ¥å" },
+               { "eht", "¥Æ¥§" },
+               { "oht", "¥Æ¥ç" },
+               { "ahw", "¥¦¥¡" },
+               { "ihw", "¥¦¥£" },
+               { "uhw", "¥¦" },
+               { "ehw", "¥¦¥§" },
+               { "ohw", "¥¦¥©" },
+               { "ast", "¥Ä¥¡" },
+               { "ist", "¥Ä¥£" },
+               { "ust", "¥Ä" },
+               { "est", "¥Ä¥§" },
+               { "ost", "¥Ä¥©" },
+               { "ab", "¥Ð" },
+               { "ib", "¥Ó" },
+               { "ub", "¥Ö" },
+               { "eb", "¥Ù" },
+               { "ob", "¥Ü" },
+               { "ac", "¥«" },
+               { "ic", "¥­" },
+               { "uc", "¥¯" },
+               { "ec", "¥±" },
+               { "oc", "¥³" },
+               { "ad", "¥À" },
+               { "id", "¥Â" },
+               { "ud", "¥Å" },
+               { "ed", "¥Ç" },
+               { "od", "¥É" },
+               { "af", "¥Õ¥¡" },
+               { "if", "¥Õ¥£" },
+               { "uf", "¥Õ" },
+               { "ef", "¥Õ¥§" },
+               { "of", "¥Õ¥©" },
+               { "ag", "¥¬" },
+               { "ig", "¥®" },
+               { "ug", "¥°" },
+               { "eg", "¥²" },
+               { "og", "¥´" },
+               { "ah", "¥Ï" },
+               { "ih", "¥Ò" },
+               { "uh", "¥Õ" },
+               { "eh", "¥Ø" },
+               { "oh", "¥Û" },
+               { "aj", "¥¸¥ã" },
+               { "ij", "¥¸" },
+               { "uj", "¥¸¥å" },
+               { "ej", "¥¸¥§" },
+               { "oj", "¥¸¥ç" },
+               { "ak", "¥«" },
+               { "ik", "¥­" },
+               { "uk", "¥¯" },
+               { "ek", "¥±" },
+               { "ok", "¥³" },
+               { "al", "¥¡" },
+               { "il", "¥£" },
+               { "ul", "¥¥" },
+               { "el", "¥§" },
+               { "ol", "¥©" },
+               { "am", "¥Þ" },
+               { "im", "¥ß" },
+               { "um", "¥à" },
+               { "em", "¥á" },
+               { "om", "¥â" },
+               { "an", "¥Ê" },
+               { "in", "¥Ë" },
+               { "un", "¥Ì" },
+               { "en", "¥Í" },
+               { "on", "¥Î" },
+               { "nn", "¥ó" },
+               { "ap", "¥Ñ" },
+               { "ip", "¥Ô" },
+               { "up", "¥×" },
+               { "ep", "¥Ú" },
+               { "op", "¥Ý" },
+               { "aq", "¥¯¥¡" },
+               { "iq", "¥¯¥£" },
+               { "uq", "¥¯¥¥" },
+               { "eq", "¥¯¥§" },
+               { "oq", "¥¯¥©" },
+               { "ar", "¥é" },
+               { "ir", "¥ê" },
+               { "ur", "¥ë" },
+               { "er", "¥ì" },
+               { "or", "¥í" },
+               { "as", "¥µ" },
+               { "is", "¥·" },
+               { "us", "¥¹" },
+               { "es", "¥»" },
+               { "os", "¥½" },
+               { "at", "¥¿" },
+               { "it", "¥Á" },
+               { "ut", "¥Ä" },
+               { "et", "¥Æ" },
+               { "ot", "¥È" },
+               { "av", "¥ô¥¡" },
+               { "iv", "¥ô¥£" },
+               { "uv", "¥ô" },
+               { "ev", "¥ô¥§" },
+               { "ov", "¥ô¥©" },
+               { "aw", "¥ï" },
+               { "iw", "¥ð" },
+               { "uw", "¥¦" },
+               { "ew", "¥¦¥§" },
+               { "ow", "¥ò" },
+               { "ax", "¥¡" },
+               { "ix", "¥£" },
+               { "ux", "¥¥" },
+               { "ex", "¥§" },
+               { "ox", "¥©" },
+               { "ay", "¥ä" },
+               { "iy", "¥¤" },
+               { "uy", "¥æ" },
+               { "ey", "¥¤¥§" },
+               { "oy", "¥è" },
+               { "az", "¥¶" },
+               { "iz", "¥¸" },
+               { "uz", "¥º" },
+               { "ez", "¥¼" },
+               { "oz", "¥¾" },
+               { "'n", "¥ó" },
+               { "a", "¥¢" },
+               { "i", "¥¤" },
+               { "u", "¥¦" },
+               { "e", "¥¨" },
+               { "o", "¥ª" },
+               { " ", "¡¡" },
+               { "!", "¡ª" },
+               { "\"", "¡É" },
+               { "#", "¡ô" },
+               { "$", "¡ð" },
+               { "%", "¡ó" },
+               { "&", "¡õ" },
+               { "'", "¡Ç" },
+               { "(", "¡Ê" },
+               { ")", "¡Ë" },
+               { "*", "¡ö" },
+               { "+", "¡Ü" },
+               { ",", "¡¢" },
+               { "-", "¡¼" },
+               { ".", "¡£" },
+               { "/", "¡¦" },
+               { "0", "£°" },
+               { "1", "£±" },
+               { "2", "£²" },
+               { "3", "£³" },
+               { "4", "£´" },
+               { "5", "£µ" },
+               { "6", "£¶" },
+               { "7", "£·" },
+               { "8", "£¸" },
+               { "9", "£¹" },
+               { ":", "¡§" },
+               { ";", "¡¨" },
+               { "<", "¡ã" },
+               { "=", "¡á" },
+               { ">", "¡ä" },
+               { "?", "¡©" },
+               { "@", "¡÷" },
+               { "[", "¡Ö" },
+               { "\\", "¡ï" },
+               { "]", "¡×" },
+               { "^", "¡°" },
+               { "_", "¡²" },
+               { "`", "¡Æ" },
+               { "{", "¡Ð" },
+               { "|", "¡Ã" },
+               { "}", "¡Ñ" },
+               { "~", "¡Á" },
+               { NULL, NULL }
+       };
+       static int roman = true;
+       static char roman_buf[] = { "\0\0\0\0\0" };
+       int i;
+       int len;
+       int n;
+       int soku;
+
+       if (key == 0) { /* Clear roman buffer */
+               memset(roman_buf, 0, sizeof(roman_buf));
+               return 0;
+       }
+       if (key == -1) { /* Roman mode off */
+               roman = false;
+               return 0;
+       }
+       if (key == '\t') { /* Toggle roman mode */
+               roman = !roman;
+               memset(roman_buf, 0, sizeof(roman_buf));
+               return 0;
+       }
+
+       if (!roman || (key & 0x80) || !isprint(key)) {
+               memset(roman_buf, 0, sizeof(roman_buf));
+               return 0;
+       }
+
+       memmove(roman_buf + 1, roman_buf, sizeof (roman_buf) - 1);
+       roman_buf[0] = key;
+
+       for (i = 0; kana[i].alpha != NULL; i++) {
+               len = strlen(kana[i].alpha);
+
+               if (!strncasecmp(roman_buf, kana[i].alpha, len)) {
+                       soku = (roman_buf[len - 1] == roman_buf[len]);
+
+                       if(soku)
+                               n = (roman_buf[len + 1] == 'n');
+                       else
+                               n = (roman_buf[len] == 'n');
+
+                       sprintf (buf, "%.*s%s%s%s", len + n + soku, "\b\b\b\b\b", (n ? "¥ó": ""), (soku ? "¥Ã": ""), kana[i].kana);
+
+                       memset(roman_buf, 0, sizeof (roman_buf));
+                       return strlen(buf);
+               }
+       }
+       return 0;
+}