View | Details | Raw Unified | Return to bug 7384
Collapse All | Expand All

(-)aterm-1.0.0/src/command.c (-8 / +32 lines)
Lines 253-259 Link Here
253
253
254
/*{{{ defines: */
254
/*{{{ defines: */
255
255
256
#define KBUFSZ		8	/* size of keyboard mapping buffer */
256
#define KBUFSZ		64	/* size of keyboard mapping buffer */
257
#define STRING_MAX	512	/* max string size for process_xterm_seq() */
257
#define STRING_MAX	512	/* max string size for process_xterm_seq() */
258
#define ESC_ARGS	32	/* max # of args for esc sequences */
258
#define ESC_ARGS	32	/* max # of args for esc sequences */
259
259
Lines 382-388 Link Here
382
#ifndef NO_XLOCALE
382
#ifndef NO_XLOCALE
383
static char    *rs_inputMethod = "";	/* XtNinputMethod */
383
static char    *rs_inputMethod = "";	/* XtNinputMethod */
384
static char    *rs_preeditType = NULL;	/* XtNpreeditType */
384
static char    *rs_preeditType = NULL;	/* XtNpreeditType */
385
static XIC      Input_Context;	/* input context */
385
static XIC      Input_Context  = NULL;	/* input context */
386
#endif				/* NO_XLOCALE */
386
#endif				/* NO_XLOCALE */
387
387
388
/* command input buffering */
388
/* command input buffering */
Lines 518-523 Link Here
518
    fprintf(stderr, "Restoring \"%s\" to mode %03o, uid %d, gid %d\n",
518
    fprintf(stderr, "Restoring \"%s\" to mode %03o, uid %d, gid %d\n",
519
	    ttydev, ttyfd_stat.st_mode, ttyfd_stat.st_uid, ttyfd_stat.st_gid);
519
	    ttydev, ttyfd_stat.st_mode, ttyfd_stat.st_uid, ttyfd_stat.st_gid);
520
#endif
520
#endif
521
#ifndef NO_XLOCALE
522
    XUnregisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
523
/*  XXX: Is it needed? If uncommet that then after killing aterm it cycles there;
524
    if (Input_Context != NULL) XDestroyIC(Input_Context);
525
*/
526
    Input_Context = NULL;
527
#endif
521
    scr_release();
528
    scr_release();
522
    privileges(RESTORE);
529
    privileges(RESTORE);
523
#ifndef __CYGWIN32__
530
#ifndef __CYGWIN32__
Lines 610-616 Link Here
610
    ttydev = tty_name;
617
    ttydev = tty_name;
611
618
612
# define PTYCHAR1	"pqrstuvwxyz"
619
# define PTYCHAR1	"pqrstuvwxyz"
613
# define PTYCHAR2	"0123456789abcdef"
620
# define PTYCHAR2     "0123456789abcdefghijklmnopqrstuvwxyz"
614
    for (c1 = PTYCHAR1; *c1; c1++) {
621
    for (c1 = PTYCHAR1; *c1; c1++) {
615
	ptydev[len - 2] = ttydev[len - 2] = *c1;
622
	ptydev[len - 2] = ttydev[len - 2] = *c1;
616
	for (c2 = PTYCHAR2; *c2; c2++) {
623
	for (c2 = PTYCHAR2; *c2; c2++) {
Lines 1233-1239 Link Here
1233
    DndSelection = XInternAtom(Xdisplay, "DndSelection", False);
1240
    DndSelection = XInternAtom(Xdisplay, "DndSelection", False);
1234
#endif				/* OFFIX_DND */
1241
#endif				/* OFFIX_DND */
1235
1242
1236
    init_xlocale();
1243
    XRegisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
1237
1244
1238
/* get number of available file descriptors */
1245
/* get number of available file descriptors */
1239
#ifdef _POSIX_VERSION
1246
#ifdef _POSIX_VERSION
Lines 1294-1299 Link Here
1294
}
1301
}
1295
/*}}} */
1302
/*}}} */
1296
1303
1304
/*{{{ XIM_destroy_callback() */
1305
/* PROTO */
1306
void
1307
IMDestroyCallback(XIM xim, XPointer client_data, XPointer call_data)
1308
{
1309
    XUnregisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
1310
    if (Input_Context != NULL ) XDestroyIC(Input_Context);
1311
    Input_Context = NULL;
1312
    XRegisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
1313
}
1314
1297
/*{{{ Xlocale */
1315
/*{{{ Xlocale */
1298
/*
1316
/*
1299
 * This is more or less stolen straight from XFree86 xterm.
1317
 * This is more or less stolen straight from XFree86 xterm.
Lines 1301-1307 Link Here
1301
 */
1319
 */
1302
/* PROTO */
1320
/* PROTO */
1303
void
1321
void
1304
init_xlocale(void)
1322
IMInstantiateCallback(Display *display, XPointer client_data, XPointer call_data)
1305
{
1323
{
1306
#ifndef NO_XLOCALE
1324
#ifndef NO_XLOCALE
1307
    char           *p, *s, buf[32], tmp[1024];
1325
    char           *p, *s, buf[32], tmp[1024];
Lines 1309-1317 Link Here
1309
    XIMStyle        input_style = 0;
1327
    XIMStyle        input_style = 0;
1310
    XIMStyles      *xim_styles = NULL;
1328
    XIMStyles      *xim_styles = NULL;
1311
    int             found;
1329
    int             found;
1330
    XIMCallback     ximcallback;
1312
1331
1313
    Input_Context = NULL;
1332
    Input_Context = NULL;
1314
1333
1334
    ximcallback.callback = IMDestroyCallback;
1335
    ximcallback.client_data = NULL;
1336
1315
# ifndef NO_SETLOCALE
1337
# ifndef NO_SETLOCALE
1316
   /* setlocale(LC_CTYPE, ""); */	/* XXX: should we do this? */
1338
   /* setlocale(LC_CTYPE, ""); */	/* XXX: should we do this? */
1317
# endif
1339
# endif
Lines 1351-1356 Link Here
1351
	print_error("Failed to open input method");
1373
	print_error("Failed to open input method");
1352
	return;
1374
	return;
1353
    }
1375
    }
1376
    XSetIMValues(xim, XNDestroyCallback, &ximcallback, NULL);
1354
    if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles) {
1377
    if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles) {
1355
	print_error("input method doesn't support any style");
1378
	print_error("input method doesn't support any style");
1356
	XCloseIM(xim);
1379
	XCloseIM(xim);
Lines 1405-1410 Link Here
1405
    Input_Context = XCreateIC(xim, XNInputStyle, input_style,
1428
    Input_Context = XCreateIC(xim, XNInputStyle, input_style,
1406
			      XNClientWindow, TermWin.parent,
1429
			      XNClientWindow, TermWin.parent,
1407
			      XNFocusWindow, TermWin.parent,
1430
			      XNFocusWindow, TermWin.parent,
1431
			      XNDestroyCallback, &ximcallback,
1408
			      NULL);
1432
			      NULL);
1409
1433
1410
    if (Input_Context == NULL) {
1434
    if (Input_Context == NULL) {
Lines 1480-1489 Link Here
1480
	PrivMode((!numlock_state), PrivMode_aplKP);
1504
	PrivMode((!numlock_state), PrivMode_aplKP);
1481
    }
1505
    }
1482
#ifndef NO_XLOCALE
1506
#ifndef NO_XLOCALE
1483
    if (!XFilterEvent(ev, *(&ev->xkey.window))) {
1507
    len = 0;
1484
	if (Input_Context != NULL) {
1508
	if (Input_Context != NULL) {
1485
	    Status          status_return;
1509
	    Status          status_return;
1486
1510
1511
	    kbuf[0] = '\0';
1487
	    len = XmbLookupString(Input_Context, &ev->xkey, kbuf,
1512
	    len = XmbLookupString(Input_Context, &ev->xkey, kbuf,
1488
				  sizeof(kbuf), &keysym,
1513
				  sizeof(kbuf), &keysym,
1489
				  &status_return);
1514
				  &status_return);
Lines 1492-1499 Link Here
1492
				sizeof(kbuf), &keysym,
1517
				sizeof(kbuf), &keysym,
1493
				&compose);
1518
				&compose);
1494
	}
1519
	}
1495
    } else
1496
	len = 0;
1497
#else				/* NO_XLOCALE */
1520
#else				/* NO_XLOCALE */
1498
    len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(kbuf), &keysym, &compose);
1521
    len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(kbuf), &keysym, &compose);
1499
/*
1522
/*
Lines 2084-2089 Link Here
2084
	    refreshed = 0;
2107
	    refreshed = 0;
2085
		XNextEvent(Xdisplay, &ev);
2108
		XNextEvent(Xdisplay, &ev);
2086
/*fprintf( stderr, "%s:%d Received event %d\n", __FUNCTION__, __LINE__, ev.type );*/
2109
/*fprintf( stderr, "%s:%d Received event %d\n", __FUNCTION__, __LINE__, ev.type );*/
2110
	    if( !XFilterEvent( &ev, ev.xany.window ) )
2087
	    process_x_event(&ev);
2111
	    process_x_event(&ev);
2088
2112
2089
	/* in case button actions pushed chars to cmdbuf */
2113
	/* in case button actions pushed chars to cmdbuf */

Return to bug 7384