Index: button-clickwheel.c
===================================================================
--- button-clickwheel.c	(revision 23108)
+++ button-clickwheel.c	(working copy)
@@ -85,6 +85,10 @@
 unsigned int  wheel_velocity          = 0;
 unsigned long last_wheel_usec         = 0;

+#ifdef IPOD_NANO2G
+int oldhold;
+#endif
+
 /* Variable to use for setting button status in interrupt handler */
 int int_btn = BUTTON_NONE;
 #ifdef HAVE_WHEEL_POSITION
@@ -350,6 +354,23 @@

 bool button_hold(void)
 {
+#ifdef IPOD_NANO2G
+    int newhold = PDAT14 & (1 << 6);
+    if (oldhold != newhold)
+    {
+        oldhold = newhold;
+        if (newhold)
+        {
+            CLICKWHEEL00 = 0x280000;
+            CLICKWHEEL10 = 3;
+        }
+        else
+        {
+            CLICKWHEEL00 = 0;
+            CLICKWHEEL10 = 0;
+        }
+    }
+#endif
     return ((PDAT14 & (1 << 6)) == 0);
 }