diff --git a/GLUT.cabal b/GLUT.cabal
--- a/GLUT.cabal
+++ b/GLUT.cabal
@@ -1,10 +1,10 @@
 name: GLUT
-version: 2.2.2.0
+version: 2.2.2.1
 license: BSD3
 license-file: LICENSE
-maintainer: Sven Panne <sven.panne@aedion.de>
-bug-reports: mailto:hopengl@haskell.org
-homepage: http://www.haskell.org/HOpenGL/
+maintainer: Jason Dagit <dagitj@gmail.com>, Sven Panne <sven.panne@aedion.de>
+bug-reports: https://github.com/haskell-opengl/GLUT/issues
+homepage: http://www.haskell.org/haskellwiki/Opengl
 category: Graphics
 synopsis: A binding for the OpenGL Utility Toolkit
 description:
@@ -13,7 +13,7 @@
    on which this binding is based, please see:
    <http://www.opengl.org/resources/libraries/glut/>.
 build-type: Simple
-cabal-version: >=1.2
+cabal-version: >=1.6
 extra-source-files:
    README
    examples/BOGLGP/Chapter01/OnYourOwn1.hs
@@ -166,3 +166,7 @@
          frameworks: GLUT
       else
          extra-libraries: glut
+
+source-repository head
+  type:     git
+  location: https://github.com/haskell-opengl/GLUT
diff --git a/Graphics/UI/GLUT/Callbacks/Window.hs b/Graphics/UI/GLUT/Callbacks/Window.hs
--- a/Graphics/UI/GLUT/Callbacks/Window.hs
+++ b/Graphics/UI/GLUT/Callbacks/Window.hs
@@ -322,6 +322,7 @@
    | KeyNumLock
    | KeyBegin
    | KeyDelete
+   | KeyUnknown Int
    deriving ( Eq, Ord, Show )
 
 unmarshalSpecialKey :: CInt -> SpecialKey
@@ -350,7 +351,7 @@
    | x == glut_KEY_NUM_LOCK = KeyNumLock
    | x == glut_KEY_BEGIN = KeyBegin
    | x == glut_KEY_DELETE = KeyDelete
-   | otherwise = error ("unmarshalSpecialKey: illegal value " ++ show x)
+   | otherwise = KeyUnknown (fromIntegral x)
 
 --------------------------------------------------------------------------------
 
