/// <summary> /// Sets the special keyboard up (key release) callback for the current window. /// </summary> /// <param name="func"> /// The new special keyboard up callback function. /// <see cref="SpecialUpCallback" />. /// </param> /// <remarks> /// <para> /// <b>glutSpecialUpFunc</b> sets the special keyboard up (key release) callback /// for the current window. The special keyboard up callback is triggered when /// keyboard function or directional keys are released. The <i>key</i> callback /// parameter is a GLUT_KEY_* constant for the special key pressed. The <i>x</i> /// and <i>y</i> callback parameters indicate the mouse in window relative /// coordinates when the key was pressed. When a new window is created, no /// special up callback is initially registered and special key releases in the /// window are ignored. Passing <c>null</c> to <b>glutSpecialUpFunc</b> disables /// the generation of special up callbacks. /// </para> /// <para> /// During a special up callback, <see cref="glutGetModifiers" /> may be called to /// determine the state of modifier keys when the key release generating the /// callback occurred. /// </para> /// <para> /// To avoid the reporting of key release/press pairs due to auto repeat, use /// <see cref="glutIgnoreKeyRepeat" /> to ignore auto repeated keystrokes. /// </para> /// <para> /// An implementation should do its best to provide ways to generate all the /// GLUT_KEY_* special keys. The available GLUT_KEY_* values are: /// </para> /// <para> /// <list type="table"> /// <listheader> /// <term>Value</term> /// <description>Description</description> /// </listheader> /// <item> /// <term><see cref="GLUT_KEY_F1" /></term> /// <description>F1 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F2" /></term> /// <description>F2 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F3" /></term> /// <description>F3 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F4" /></term> /// <description>F4 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F5" /></term> /// <description>F5 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F6" /></term> /// <description>F6 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F7" /></term> /// <description>F7 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F8" /></term> /// <description>F8 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F9" /></term> /// <description>F9 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F10" /></term> /// <description>F10 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F11" /></term> /// <description>F11 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_F12" /></term> /// <description>F12 function key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_LEFT" /></term> /// <description>Left directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_UP" /></term> /// <description>Up directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_RIGHT" /></term> /// <description>Right directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_DOWN" /></term> /// <description>Down directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_PAGE_UP" /></term> /// <description>Page up directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_PAGE_DOWN" /></term> /// <description>Page down directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_HOME" /></term> /// <description>Home directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_END" /></term> /// <description>End directional key.</description> /// </item> /// <item> /// <term><see cref="GLUT_KEY_INSERT" /></term> /// <description>Insert directional key.</description> /// </item> /// </list> /// </para> /// <para> /// Note that the escape, backspace, and delete keys are generated as an ASCII /// character. /// </para> /// </remarks> /// <seealso cref="SpecialUpCallback" /> /// <seealso cref="glutButtonBoxFunc" /> /// <seealso cref="glutGetModifiers" /> /// <seealso cref="glutIgnoreKeyRepeat" /> /// <seealso cref="glutKeyboardFunc" /> /// <seealso cref="glutKeyboardUpFunc" /> /// <seealso cref="glutMouseFunc" /> /// <seealso cref="glutSpaceballButtonFunc" /> /// <seealso cref="glutSpecialFunc" /> /// <seealso cref="glutTabletButtonFunc" /> // GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); public static void glutSpecialUpFunc([In] SpecialUpCallback func) { specialUpCallback = func; __glutSpecialUpFunc(specialUpCallback); }
private static extern void __glutSpecialUpFunc(SpecialUpCallback func);