translate modifier keys for xevents

git-svn-id: http://skia.googlecode.com/svn/trunk@7087 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/views/unix/SkOSWindow_Unix.cpp b/src/views/unix/SkOSWindow_Unix.cpp
index dbb8cea..8f3aa85 100644
--- a/src/views/unix/SkOSWindow_Unix.cpp
+++ b/src/views/unix/SkOSWindow_Unix.cpp
@@ -151,8 +151,23 @@
 }
 
 static unsigned getModi(const XEvent& evt) {
-//    unsigned xmod = evt.xkey.state;
-    return 0;   // TODO
+    static const struct {
+        unsigned    fXMask;
+        unsigned    fSkMask;
+    } gModi[] = {
+        // X values found by experiment. Is there a better way?
+        { 1,    kShift_SkModifierKey },
+        { 4,    kControl_SkModifierKey },
+        { 8,    kOption_SkModifierKey },
+    };
+    
+    unsigned modi = 0;
+    for (size_t i = 0; i < SK_ARRAY_COUNT(gModi); ++i) {
+        if (evt.xkey.state & gModi[i].fXMask) {
+            modi |= gModi[i].fSkMask;
+        }
+    }
+    return modi;
 }
 
 void SkOSWindow::loop() {