~ubuntu-branches/ubuntu/trusty/fluxbox/trusty-proposed

« back to all changes in this revision

Viewing changes to src/FbTk/KeyUtil.cc

  • Committer: Package Import Robot
  • Author(s): Paul Tagliamonte
  • Date: 2010-08-12 21:16:02 UTC
  • mfrom: (0.1.1) (1.1.10)
  • Revision ID: package-import@ubuntu.com-20100812211602-3tsmzl9in5nmwz7z
Tags: 1.1.1+git20100807.0cc08f9-1
* debian/ dir has been cleaned out, complete repackage
  of most files.
* pulled new archive from git.fluxbox.org HEAD, saved as
  tar.gz.
* Added in fluxbox.* files from the old dfsg tree.
* Added in system.fluxbox-menu file from the old dfsg tree
* Added the source/format file to bump package source
  version from 1.0 to 3.0 (quilt). 
* Changed rules file to match the old dfsg setup so that
  fluxbox behaves nicely.
* Removed entries from copyright that no longer apply.
* Added theme based on Denis Brand ( naran )'s old theme.
* Added a background I whipped up.
* Changed compile flags to point to debian theme by default
* Adding a patch to have fluxbox use x-terminal-emulator
  over xterm. Closes: #591694 (LP: #580485)
* Adding a patch to allow titlebar-window dragging.
* Changed the flags in rules to pull from a script. This script
  lets us un-hardcode what theme is default. Be sure there
  is a theme pack!
* Added comments to my patches.
* Removing debian/docs, empty file.
* Fixing fluxbox.desktop to remove all the warnings from
  desktop-file-validate
* Fixing libtool issue by running an update before
  configure in the rules script.
* Added a compile flag script to auto-detect what platform
  we are running on, and apply the correct theme. This
  should solve Ubuntnu issues later on.
* adding in a get-orig-source rule
* fixing the upstream version number to pinpoint
  the commit ( thanks, lfaraone ).
* adding a rule for get-orig-source. ( thanks again,
  lfaraone ).
* Updated rules to actually allow us to do a build from it
* Removed Denis from the uploaders ( as per an email
  conversation )
* Removing madduck from the uploaders ( thanks for asking,
  lfaraone. ). Thanks for your hard work, madduck.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
};
43
43
 
44
44
const struct t_modlist modlist[] = {
45
 
    {"SHIFT", ShiftMask},
46
 
    {"LOCK", LockMask},
47
 
    {"CONTROL", ControlMask},
48
 
    {"MOD1", Mod1Mask},
49
 
    {"MOD2", Mod2Mask},
50
 
    {"MOD3", Mod3Mask},
51
 
    {"MOD4", Mod4Mask},
52
 
    {"MOD5", Mod5Mask},
 
45
    {"shift", ShiftMask},
 
46
    {"lock", LockMask},
 
47
    {"control", ControlMask},
 
48
    {"mod1", Mod1Mask},
 
49
    {"mod2", Mod2Mask},
 
50
    {"mod3", Mod3Mask},
 
51
    {"mod4", Mod4Mask},
 
52
    {"mod5", Mod5Mask},
 
53
    {"alt", Mod1Mask},
 
54
    {"ctrl", ControlMask},
53
55
    {0, 0}
54
56
};
55
57
 
56
 
};
 
58
}
57
59
 
58
60
namespace FbTk {
59
61
 
86
88
        XFreeModifiermap(m_modmap);
87
89
 
88
90
    m_modmap = XGetModifierMapping(App::instance()->display());
89
 
        
 
91
 
90
92
    // find modifiers and set them
91
93
    for (int i=0, realkey=0; i<8; ++i) {
92
94
        for (int key=0; key<m_modmap->max_keypermod; ++key, ++realkey) {
94
96
            if (m_modmap->modifiermap[realkey] == 0)
95
97
                continue;
96
98
 
97
 
            KeySym ks = XKeycodeToKeysym(App::instance()->display(), 
 
99
            KeySym ks = XKeycodeToKeysym(App::instance()->display(),
98
100
                    m_modmap->modifiermap[realkey], 0);
99
101
 
100
102
            switch (ks) {
152
154
*/
153
155
 
154
156
unsigned int KeyUtil::getKey(const char *keystr) {
155
 
    if (!keystr)
156
 
        return 0;
157
 
    KeySym sym = XStringToKeysym(keystr);
158
 
    if (sym==NoSymbol)
159
 
        return 0;
160
 
    return XKeysymToKeycode(App::instance()->display(), sym);
 
157
 
 
158
    KeyCode code = 0;
 
159
 
 
160
    if (keystr) {
 
161
 
 
162
        KeySym sym = XStringToKeysym(keystr);
 
163
        if (sym != NoSymbol) {
 
164
            code = XKeysymToKeycode(App::instance()->display(), sym);
 
165
        }
 
166
    }
 
167
 
 
168
    return code;
161
169
}
162
170
 
163
171
 
167
175
unsigned int KeyUtil::getModifier(const char *modstr) {
168
176
    if (!modstr)
169
177
        return 0;
170
 
    
 
178
 
171
179
    // find mod mask string
172
180
    for (unsigned int i=0; modlist[i].str !=0; i++) {
173
 
        if (modlist[i] == modstr)               
174
 
            return modlist[i].mask;             
 
181
        if (modlist[i] == modstr)
 
182
            return modlist[i].mask;
175
183
    }
176
 
        
177
 
    return 0;   
 
184
 
 
185
    return 0;
178
186
}
179
187
 
180
188
/// Ungrabs the keys
191
199
unsigned int KeyUtil::keycodeToModmask(unsigned int keycode) {
192
200
    XModifierKeymap *modmap = instance().m_modmap;
193
201
 
194
 
    if (!modmap) 
 
202
    if (!modmap)
195
203
        return 0;
196
204
 
197
205
    // search through modmap for this keycode
202
210
            if (modmap->modifiermap[modmap->max_keypermod*mod + key] == keycode) {
203
211
                return modlist[mod].mask;
204
212
            }
205
 
        } 
 
213
        }
206
214
    }
207
215
    // no luck
208
216
    return 0;