~ubuntu-branches/ubuntu/lucid/sawfish/lucid-updates

« back to all changes in this revision

Viewing changes to src/keys.c

  • Committer: Bazaar Package Importer
  • Author(s): Christian Marillat
  • Date: 2005-02-23 16:16:46 UTC
  • mfrom: (1.2.1 upstream) (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050223161646-4id6qyw4h9lkvb0v
Tags: 1:1.3+cvs20050222-1
* New cvs release.
* Add an emacs initialisation script to load sawfish.el (Closes: #295290)
* Updated sawfish.el to 1.32

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* keys.c -- Key binding and evaluating (this should be called events.c)
2
 
   $Id: keys.c,v 1.84 2001/05/23 20:43:09 jsh Exp $
 
2
   $Id: keys.c,v 1.88 2004/11/15 18:29:19 jsh Exp $
3
3
 
4
4
   Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk>
5
5
 
97
97
static void grab_keymap_event (repv km, long code, long mods, bool grab);
98
98
static void grab_all_keylist_events (repv map, bool grab);
99
99
 
100
 
static int all_buttons[7] = { Button1, Button2, Button3, Button4, Button5, Button6, Button7 };
 
100
static int all_buttons[9] = { Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9 };
101
101
 
102
102
/* locks: currently LockMask, num_lock, and scroll_lock */
103
103
static int total_lock_combs, all_lock_mask;
269
269
        case Button7:
270
270
            *mods |= Button7Mask;
271
271
            break;
 
272
        case Button8:
 
273
            *mods |= Button8Mask;
 
274
            break;
 
275
        case Button9:
 
276
            *mods |= Button9Mask;
 
277
            break;
272
278
        }
273
279
        ret = TRUE;
274
280
        break;
342
348
            { Button5, Button5Mask },
343
349
            { Button6, Button6Mask },
344
350
            { Button7, Button7Mask },
 
351
            { Button8, Button8Mask },
 
352
            { Button9, Button9Mask },
345
353
            { 0, 0 }
346
354
        };
347
355
        int i;
667
675
    { "Button5",  Button5Mask },
668
676
    { "Button6",  Button6Mask },
669
677
    { "Button7",  Button7Mask },
 
678
    { "Button8",  Button8Mask },
 
679
    { "Button9",  Button9Mask },
670
680
    { "Any",      EV_MOD_ANY },
671
681
    { "Release",  EV_MOD_RELEASE },
672
682
    { 0, 0 }
1103
1113
        long e_mask = (rep_INTP(mask) ? rep_INT(mask)
1104
1114
                       : get_event_mask (current_x_event->type));
1105
1115
        if (current_x_event->type == ButtonPress)
1106
 
            XUngrabPointer (dpy, last_event_time);
 
1116
            ungrab_pointer ();
1107
1117
        XSendEvent (dpy, w, prop == Qnil ? False : True,
1108
1118
                    e_mask, current_x_event);
1109
1119
        return Qt;
1459
1469
DEFSTRING(super_r, "Super_R");
1460
1470
 
1461
1471
static void
 
1472
nconc (repv x, repv y)
 
1473
{
 
1474
    repv *ptr = &x;
 
1475
 
 
1476
    while (rep_CONSP (*ptr))
 
1477
        ptr = rep_CDRLOC (*ptr);
 
1478
 
 
1479
    *ptr = y;
 
1480
}
 
1481
 
 
1482
static void
1462
1483
find_meta(void)
1463
1484
{
1464
1485
    int min_code, max_code;
1475
1496
    max_code = dpy->max_keycode;
1476
1497
#endif
1477
1498
 
 
1499
    /* reset to default values. */
 
1500
    meta_mod = alt_mod = hyper_mod = super_mod = 0;
 
1501
    num_lock_mod = scroll_lock_mod = 0;
 
1502
 
1478
1503
    Fset (Qmeta_keysyms, Qnil);
1479
1504
    Fset (Qalt_keysyms, Qnil);
1480
1505
    Fset (Qhyper_keysyms, Qnil);
1556
1581
 
1557
1582
    if (meta_mod == alt_mod)
1558
1583
    {
1559
 
        meta_syms = Fnconc (rep_list_2 (meta_syms, alt_syms));
 
1584
        nconc (meta_syms, alt_syms);
1560
1585
        alt_syms = meta_syms;
1561
1586
    }
1562
1587
    if (meta_mod == hyper_mod)
1563
1588
    {
1564
 
        meta_syms = Fnconc (rep_list_2 (meta_syms, hyper_syms));
 
1589
        nconc (meta_syms, hyper_syms);
1565
1590
        hyper_syms = meta_syms;
1566
1591
    }
1567
1592
    if (meta_mod == super_mod)
1568
1593
    {
1569
 
        meta_syms = Fnconc (rep_list_2 (meta_syms, super_syms));
 
1594
        nconc (meta_syms, super_syms);
1570
1595
        super_syms = meta_syms;
1571
1596
    }
1572
1597
 
1581
1606
{
1582
1607
    int i;
1583
1608
    total_lock_combs = 2 * (num_lock_mod ? 2 : 1) * (scroll_lock_mod ? 2 : 1);
 
1609
    memset (all_lock_combs, 0, sizeof (all_lock_combs));
1584
1610
    for (i = 0; i < total_lock_combs; i++)
1585
1611
    {
1586
1612
        if (i & 1)
1681
1707
            {
1682
1708
                /* sawmill treats mouse buttons as modifiers, not as
1683
1709
                   codes, so for us AnyModifier includes all buttons.. */
1684
 
                for (i = 0; i < 7; i++)
 
1710
                for (i = 0; i < 9; i++)
1685
1711
                {
1686
1712
                    XGrabButton (dpy, all_buttons[i], AnyModifier,
1687
1713
                                 grab_win, False, POINTER_GRAB_EVENTS,
1733
1759
            }
1734
1760
            else
1735
1761
            {
1736
 
                for (i = 0; i < 7; i++)
 
1762
                for (i = 0; i < 9; i++)
1737
1763
                    XUngrabButton (dpy, all_buttons[i], AnyModifier, grab_win);
1738
1764
            }
1739
1765
        }