*** kinput2-v3.1-canna/lib/Canna.c._patched_2_ 2003-01-30 00:20:21.000000000 +0900 --- kinput2-v3.1-canna/lib/Canna.c 2003-11-14 20:11:36.000000000 +0900 *************** *** 226,233 **** keysym, status_return); if ( res == 1 && bs_flag ) { /* かな入力で「ー」が入力できるように */ ! if ( *keysym == XK_backslash && event_struct->keycode == 123 ) { ! buffer_return[0] = '_'; } } if (!res && XK_overline <= *keysym && *keysym <= XK_semivoicedsound) { --- 226,236 ---- keysym, status_return); if ( res == 1 && bs_flag ) { /* かな入力で「ー」が入力できるように */ ! if ( *keysym == XK_backslash ) { ! KeySym shifted_keysym; ! shifted_keysym=XKeycodeToKeysym(event_struct->display,event_struct->keycode,1); ! if( shifted_keysym == XK_underscore ) ! buffer_return[0] = '_'; } } if (!res && XK_overline <= *keysym && *keysym <= XK_semivoicedsound) { *************** *** 1402,1412 **** functionalChar = 1; break; case XK_Hiragana_Katakana: ! *buffer_return = CANNA_KEY_HIRAGANA; ! functionalChar = 1; ! break; ! case XK_Romaji: ! *buffer_return = CANNA_KEY_KATAKANA; functionalChar = 1; break; case XK_Zenkaku_Hankaku: --- 1405,1414 ---- functionalChar = 1; break; case XK_Hiragana_Katakana: ! if (event_struct->state & 1 /* shifted */) ! *buffer_return = CANNA_KEY_KATAKANA; ! else ! *buffer_return = CANNA_KEY_HIRAGANA; functionalChar = 1; break; case XK_Zenkaku_Hankaku: *************** *** 1748,1754 **** {(unsigned char)CANNA_KEY_PF9, XK_F19, 0}, {(unsigned char)CANNA_KEY_PF10, XK_F20, 0}, {(unsigned char)CANNA_KEY_HIRAGANA, XK_Hiragana_Katakana, 0}, ! {(unsigned char)CANNA_KEY_KATAKANA, XK_Romaji, 0}, {(unsigned char)CANNA_KEY_HANKAKUZENKAKU, XK_Zenkaku_Hankaku, 0}, }; --- 1750,1756 ---- {(unsigned char)CANNA_KEY_PF9, XK_F19, 0}, {(unsigned char)CANNA_KEY_PF10, XK_F20, 0}, {(unsigned char)CANNA_KEY_HIRAGANA, XK_Hiragana_Katakana, 0}, ! {(unsigned char)CANNA_KEY_KATAKANA, XK_Hiragana_Katakana, ShiftMask}, {(unsigned char)CANNA_KEY_HANKAKUZENKAKU, XK_Zenkaku_Hankaku, 0}, };