Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /************************************************************ |
2 | Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. | |
3 | ||
4 | Permission to use, copy, modify, and distribute this | |
5 | software and its documentation for any purpose and without | |
6 | fee is hereby granted, provided that the above copyright | |
7 | notice appear in all copies and that both that copyright | |
8 | notice and this permission notice appear in supporting | |
9 | documentation, and that the name of Silicon Graphics not be | |
10 | used in advertising or publicity pertaining to distribution | |
11 | of the software without specific prior written permission. | |
12 | Silicon Graphics makes no representation about the suitability | |
13 | of this software for any purpose. It is provided "as is" | |
14 | without any express or implied warranty. | |
15 | ||
16 | SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | |
17 | SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
18 | AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON | |
19 | GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL | |
20 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, | |
21 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | |
22 | OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH | |
23 | THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
24 | ||
25 | ********************************************************/ | |
26 | ||
27 | #ifdef HAVE_DIX_CONFIG_H | |
28 | #include <dix-config.h> | |
29 | #endif | |
30 | ||
31 | #include <stdio.h> | |
32 | #include <X11/X.h> | |
33 | #include <X11/Xproto.h> | |
34 | #include <X11/keysym.h> | |
35 | #include "inputstr.h" | |
36 | #include "scrnintstr.h" | |
37 | #include "windowstr.h" | |
38 | #include <xkbsrv.h> | |
39 | #include <X11/extensions/XI.h> | |
40 | ||
41 | void | |
42 | XkbDDXKeybdCtrlProc(DeviceIntPtr dev, KeybdCtrl * ctrl) | |
43 | { | |
44 | int realRepeat; | |
45 | ||
46 | realRepeat = ctrl->autoRepeat; | |
47 | if ((dev->kbdfeed) && (XkbDDXUsesSoftRepeat(dev))) | |
48 | ctrl->autoRepeat = 0; | |
49 | if (dev->key && dev->key->xkbInfo && dev->key->xkbInfo->kbdProc) | |
50 | (*dev->key->xkbInfo->kbdProc) (dev, ctrl); | |
51 | ctrl->autoRepeat = realRepeat; | |
52 | return; | |
53 | } | |
54 | ||
55 | int | |
56 | XkbDDXUsesSoftRepeat(DeviceIntPtr pXDev) | |
57 | { | |
58 | return 1; | |
59 | } | |
60 | ||
61 | void | |
62 | XkbDDXChangeControls(DeviceIntPtr dev, XkbControlsPtr old, XkbControlsPtr new) | |
63 | { | |
64 | unsigned changed, i; | |
65 | unsigned char *rep_old, *rep_new, *rep_fb; | |
66 | ||
67 | changed = new->enabled_ctrls ^ old->enabled_ctrls; | |
68 | for (rep_old = old->per_key_repeat, | |
69 | rep_new = new->per_key_repeat, | |
70 | rep_fb = dev->kbdfeed->ctrl.autoRepeats, | |
71 | i = 0; i < XkbPerKeyBitArraySize; i++) { | |
72 | if (rep_old[i] != rep_new[i]) { | |
73 | rep_fb[i] = rep_new[i]; | |
74 | changed &= XkbPerKeyRepeatMask; | |
75 | } | |
76 | } | |
77 | ||
78 | if (changed & XkbPerKeyRepeatMask) { | |
79 | if (dev->kbdfeed->CtrlProc) | |
80 | (*dev->kbdfeed->CtrlProc) (dev, &dev->kbdfeed->ctrl); | |
81 | } | |
82 | return; | |
83 | } |