diff -c ../tm/kinput2/kinput2-v3.1-canna/lib/Canna.c kinput2-v3.1-canna/lib/Canna.c *** ../tm/kinput2/kinput2-v3.1-canna/lib/Canna.c 2003-01-30 00:20:21.000000000 +0900 --- kinput2-v3.1-canna/lib/Canna.c 2004-12-16 16:34:12.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) { *************** *** 265,271 **** if ( obj->canna.conv_end_key_list != NULL ) { cKeyList *listelem; for ( listelem=obj->canna.conv_end_key_list; listelem!=NULL; listelem=listelem->next ) { ! if (ks == listelem->ksym && event->xkey.state == listelem->mods) { void convend(); convend(obj); --- 268,275 ---- if ( obj->canna.conv_end_key_list != NULL ) { cKeyList *listelem; for ( listelem=obj->canna.conv_end_key_list; listelem!=NULL; listelem=listelem->next ) { ! if ( ks == listelem->ksym && ! (event->xkey.state & listelem->mods) == listelem->mods ) { void convend(); convend(obj); *************** *** 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: --- 1406,1415 ---- 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}, }; --- 1751,1757 ---- {(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}, };