diff --git a/generator/Data/XCB/Python/Parse.hs b/generator/Data/XCB/Python/Parse.hs
--- a/generator/Data/XCB/Python/Parse.hs
+++ b/generator/Data/XCB/Python/Parse.hs
@@ -484,11 +484,13 @@
       mkPop :: String
             -> String
             -> Statement ()
-      mkPop toPop n = mkAssign n $ mkCall (mkDot toPop "pop") [mkInt 0]
+      mkPop toPop n =
+        let pop = mkCall (mkDot toPop "pop") [mkInt 0]
+        in if null n then StmtExpr pop () else mkAssign n pop
 
       mkBasePack (Nothing, "") = []
       mkBasePack (n, c) =
-        let n' = maybe "_" id n
+        let n' = maybe "" id n
         in [(n', Left (Just (mkCall "struct.pack" [mkStr ('=' : c), mkName n'])))]
 
 mkPackMethod :: String
diff --git a/test/generator/xinput.xml b/test/generator/xinput.xml
new file mode 100644
--- /dev/null
+++ b/test/generator/xinput.xml
@@ -0,0 +1,82 @@
+<!-- a request with padding *after* a complex type -->
+<enum name="DeviceClassType">
+    <item name="Key">      <value>0</value> </item>
+    <item name="Button">   <value>1</value> </item>
+    <item name="Valuator"> <value>2</value> </item>
+    <item name="Scroll">   <value>3</value> </item>
+    <item name="Touch">    <value>8</value> </item>
+    <item name="Gesture">  <value>9</value> </item>
+</enum>
+
+<struct name="DeviceClass">
+    <length>
+        <op op="*">
+            <fieldref>len</fieldref>
+            <value>4</value>
+        </op>
+    </length>
+    <field type="CARD16"   name="type" enum="DeviceClassType" />
+    <field type="CARD16"   name="len" />
+    <field type="DeviceId" name="sourceid" />
+    <switch name="data">
+    <fieldref>type</fieldref>
+    <required_start_align align="4" offset="2" />
+    <case name="key">
+    <enumref ref="DeviceClassType">Key</enumref>
+    <required_start_align align="4" offset="2" />
+    <field type="CARD16"   name="num_keys" />
+    <list type="CARD32" name="keys">
+        <fieldref>num_keys</fieldref>
+    </list>
+    </case>
+    <case name="button">
+    <enumref ref="DeviceClassType">Button</enumref>
+    <required_start_align align="4" offset="2" />
+    <field type="CARD16"   name="num_buttons" />
+    <list type="CARD32"    name="state">
+        <op op="/">
+            <op op="+">
+                <fieldref>num_buttons</fieldref>
+                <value>31</value>
+            </op>
+            <value>32</value>
+        </op>
+    </list>
+    <list type="ATOM" name="labels">
+        <fieldref>num_buttons</fieldref>
+    </list>
+    </case>
+    <case name="valuator">
+    <enumref ref="DeviceClassType">Valuator</enumref>
+    <required_start_align align="4" offset="2" />
+    <field type="CARD16"   name="number" />
+    <field type="ATOM"     name="label" />
+    <field type="FP3232"   name="min" />
+    <field type="FP3232"   name="max" />
+    <field type="FP3232"   name="value" />
+    <field type="CARD32"   name="resolution" />
+    <field type="CARD8"    name="mode" enum="ValuatorMode" />
+    <pad bytes="3" />
+    </case>
+    <case name="scroll">
+    <enumref ref="DeviceClassType">Scroll</enumref>
+            <required_start_align align="4" offset="2" />
+    <field type="CARD16"   name="number" />
+    <field type="CARD16"   name="scroll_type" enum="ScrollType" />
+    <pad bytes="2" />
+    <field type="CARD32"   name="flags" mask="ScrollFlags" />
+    <field type="FP3232"   name="increment" />
+    </case>
+    <case name="touch">
+    <enumref ref="DeviceClassType">Touch</enumref>
+    <field type="CARD8"    name="mode" enum="TouchMode" />
+    <field type="CARD8"    name="num_touches" />
+    </case>
+    <case name="gesture">
+        <enumref ref="DeviceClassType">Gesture</enumref>
+        <field type="CARD8"    name="num_touches" />
+        <pad bytes="1" />
+    </case>
+</switch>
+</struct>
+
diff --git a/xcffib.cabal b/xcffib.cabal
--- a/xcffib.cabal
+++ b/xcffib.cabal
@@ -1,5 +1,5 @@
 name:                xcffib
-version:             1.1.1
+version:             1.1.2
 synopsis:            A cffi-based python binding for X
 homepage:            http://github.com/tych0/xcffib
 license:             OtherLicense
