~ubuntu-branches/ubuntu/saucy/ng/saucy

« back to all changes in this revision

Viewing changes to kbd.c

  • Committer: Bazaar Package Importer
  • Author(s): Masayuki Hatta (mhatta)
  • Date: 2008-07-17 08:10:34 UTC
  • mfrom: (4.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080717081034-s7iitiihm9hl4jjg
Tags: 1.5~beta1-3
Bumped to Standards-Version: 3.8.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $Id: kbd.c,v 1.8 2000/11/04 13:44:58 amura Exp $ */
 
1
/* $Id: kbd.c,v 1.10 2001/02/18 17:07:26 amura Exp $ */
2
2
/*
3
3
 *              Terminal independent keyboard handling.
4
4
 */
5
5
 
6
6
/*
7
7
 * $Log: kbd.c,v $
 
8
 * Revision 1.10  2001/02/18 17:07:26  amura
 
9
 * append AUTOSAVE feature (but NOW not work)
 
10
 *
 
11
 * Revision 1.9  2001/01/05 14:07:04  amura
 
12
 * first implementation of Hojo Kanji support
 
13
 *
8
14
 * Revision 1.8  2000/11/04 13:44:58  amura
9
15
 * undo memory exception is more safety
10
16
 *
46
52
#include "macro.h"
47
53
#endif
48
54
 
49
 
#ifdef  DO_METAKEY
50
 
#ifndef METABIT
51
 
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
52
 
#define METABIT 0x100
53
 
#else   /* NOT KANJI */
54
 
#define METABIT 0x80
55
 
#endif  /* KANJI */
56
 
#endif  /* METABIT */
57
 
 
58
55
#ifdef CANNA
59
56
#include    <canna/jrkanji.h>
60
57
extern jrKanjiStatus ks;
61
58
int henkan( );
62
59
#endif
63
60
 
 
61
#ifdef MOUSE
 
62
int allow_mouse_event = FALSE; /* allow mouse event */
 
63
#endif
 
64
 
 
65
#ifdef  DO_METAKEY
64
66
int use_metakey = TRUE;
65
 
#ifdef MOUSE
66
 
int allow_mouse_event = FALSE; /* allow mouse event */
67
 
#endif
68
 
 
69
67
/*
70
68
 * Toggle the value of use_metakey
71
69
 */
138
136
                if(promptp > prompt) *(promptp-1) = ' ';
139
137
        }
140
138
#endif
 
139
#ifdef  AUTOSAVE
 
140
        autosave_check(TRUE);
 
141
#endif
141
142
        if(pushed) {
142
143
                c = pushedc;
143
144
                pushed = FALSE;
165
166
            *promptp = '\0';
166
167
        }
167
168
#endif
 
169
#ifdef  AUTOSAVE        /* 96.12.24 by M.Suzuki */
 
170
        autosave_check(FALSE);
 
171
#endif  /* AUTOSAVE */
168
172
        return c;
169
173
}
170
174
 
424
428
 * all inserted characters.
425
429
 */
426
430
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
427
 
int     no_k2nd = FALSE;                /* We have no KANJI 2nd byte    */
 
431
int     no_k2nd = 0;                    /* We have no KANJI 2nd byte    */
428
432
int     inkfill = FALSE;                /* Now we are in a fillword().  */
429
433
#endif  /* KANJI */
430
434
 
458
462
    /* a fillmap. But there are too many KANJI chars, so we use this    */
459
463
    /* easy way.                                                        */
460
464
    if(curbp->b_flag & BFAUTOFILL &&            /* Autofill mode and    */
461
 
       !inkfill && no_k2nd) {                   /* KANJI 2nd byte.      */
 
465
       !inkfill && no_k2nd!=0) {                /* KANJI 2nd byte.      */
462
466
            int s;
463
467
#ifdef  UNDO
464
468
            if (isundo()) {
480
484
            inkfill = FALSE;
481
485
            return (s);
482
486
    }                                   /* End of autofill mode add routine. */
483
 
    if (no_k2nd) {                      /* If there is only KANJI 1st byte, */
484
 
            no_k2nd = FALSE;            /* we believe 'c' is KANJI 2nd byte.*/
 
487
    if (no_k2nd != 0) {                 /* If there is only KANJI 1st byte, */
 
488
            no_k2nd--;                  /* we believe 'c' is KANJI 2nd byte.*/
485
489
    } else if (ISKANJI(c)) {
486
490
            if ((n % 2) == 0) {         /* This is easy bug fix. */
487
491
                    n |= 0x01;
488
492
            }
489
 
            no_k2nd = TRUE;             /* When there is no KANJI 2nd   */
 
493
#ifdef  HOJO_KANJI
 
494
            if (ISHOJO(c))      no_k2nd = 2;
 
495
            else
 
496
#endif      
 
497
            no_k2nd = 1;                /* When there is no KANJI 2nd   */
490
498
                                        /* byte, we don't do update().  */
491
499
    }
492
500
#endif  /* KANJI */
567
575
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
568
576
            if (undo->u_code[0]) {
569
577
                lputc(curwp->w_dotp, curwp->w_doto, undo->u_code[0]);
570
 
                lkanji2nd = TRUE;
 
578
                lkanji2nd = 1;
571
579
            } else
572
 
                lkanji2nd = FALSE;
 
580
                lkanji2nd = 0;
573
581
#endif  /* KANJI */
574
582
            count = undo->u_used;
575
583
            while(curwp->w_doto < llength(curwp->w_dotp) && n--) {
576
584
                undo->u_buffer[count] =
577
585
                    lgetc(curwp->w_dotp, curwp->w_doto);
578
586
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
579
 
                if (lkanji2nd) {
580
 
                    lkanji2nd = FALSE;
 
587
                if (lkanji2nd != 0) {
 
588
                    lkanji2nd--;
581
589
                } else if (ISKANJI(undo->u_buffer[count])){
582
 
                    lkanji2nd = TRUE;
 
590
#ifdef  HOJO_KANJI
 
591
                    if (ISHOJO(undo->u_buffer[count])) lkanji2nd = 2;
 
592
                    else
 
593
#endif
 
594
                    lkanji2nd = 1;
583
595
                }
584
596
#endif  /* KANJI */
585
597
                lputc(curwp->w_dotp, curwp->w_doto++, c);
587
599
            }
588
600
            undo->u_used = count;
589
601
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
590
 
            if (lkanji2nd && curwp->w_doto < llength(curwp->w_dotp)) {
 
602
            if (lkanji2nd!=0 && curwp->w_doto < llength(curwp->w_dotp)) {
591
603
                undo->u_code[0] = lgetc(curwp->w_dotp, curwp->w_doto);
592
604
                lputc(curwp->w_dotp, curwp->w_doto, ' ');
593
605
            } else
624
636
    if(curbp->b_flag & BFOVERWRITE) {           /* Overwrite mode       */
625
637
        lchange(WFEDIT);
626
638
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
627
 
        lkanji2nd = FALSE;
 
639
        lkanji2nd = 0;
628
640
#endif  /* KANJI */
629
641
        while(curwp->w_doto < llength(curwp->w_dotp) && n--) {
630
642
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
631
 
            if (lkanji2nd) {
632
 
                lkanji2nd = FALSE;
 
643
            if (lkanji2nd != 0) {
 
644
                lkanji2nd--;
633
645
            } else if (ISKANJI(lgetc(curwp->w_dotp, curwp->w_doto))) {
634
 
                lkanji2nd = TRUE;
 
646
#ifdef  HOJO_KANJI
 
647
                if (ISHOJO(lgetc(curwp->w_dotp, curwp->w_doto)))
 
648
                    lkanji2nd = 2;
 
649
                else
 
650
#endif
 
651
                lkanji2nd = 1;
635
652
            }
636
653
#endif  /* KANJI */
637
654
            lputc(curwp->w_dotp, curwp->w_doto++, c);
638
655
        }
639
656
#ifdef  KANJI   /* 90.01.29  by S.Yoshida */
640
 
        if (lkanji2nd && curwp->w_doto < llength(curwp->w_dotp)) {
 
657
        if (lkanji2nd!=0 && curwp->w_doto < llength(curwp->w_dotp)) {
641
658
            lputc(curwp->w_dotp, curwp->w_doto, ' ');
642
659
        }
643
660
#endif  /* KANJI */