Dialog and button callback in Haskell OpenGL - haskell

Graphics.UI.GLUT has a Dial and Button callback. I don't find any example of use of this callback. I wanted to have one because currently I use the keyboard and the mouse callbacks and this is not enough and not user-friendly.
I've tried to do one such callback. In my program:
dial :: IORef GLdouble -> DialAndButtonBoxCallback
dial zoom index =
case index of
DialAndButtonBoxDial 1 1 -> zoom $~! (+1)
_ -> return ()
Then I expect to see a button (button 1) in the OpenGL window which would increment zoom when I press on this button (zoom $~! (+1) zooms the graphic, I use it in the keyboard callback currently, no problem with that).
Then in my main file:
zoom <- newIORef 0.0
dialAndButtonBoxCallback $= Just (dial zoom)
The code compiles. But when I run the program, there's no dialog box appearing anywhere.
I would appreciate any help. Maybe I have to create a dialog box first ? I don't see anything like this in the documentation.

A dial and button box is not a dialog box. It’s a special purpose type of hardware, like a mouse, keyboard, joystick, or steering wheel. Eg this company makes some.
Glut is not a gui library like gtk. It lets you get user input and draw things on the screen. You need to figure out exactly how to draw all your user interface components if you want to use glut

Related

DirectX-based game display always on top. Need solution

You can see the video of the problem below. When I press the Minimize button, the screen disappears, but when you put the other window on top without pressing the Minimize button, the screen will not be covered and it will always float on top. This problem did not occur in Windows 7, but it occurs after upgrading to Windows 10.
Problem video
I would like to know the DirectX initialization code for the function or function argument related to this problem. (As far as I know, this game uses DirectX 9.)
Additional Information
Based on Castorix's advice, I used the Spy ++ program to test it. Below is the result screen.
The problematic program consisted of two windows, a parent window and a child window. The parent window style consists of WS_CAPTION, WS_MINIMIZE, WS_VISIBLE, WS_CPLISIBLINGS, WS_SYSMENU, WS_OVERLAPPED, WS_MINIMIZEBOX, WS_MAXIMIZEBOX, 0x00008000. And the child window style consists of WS_CHILDWINDOW, WS_VISIBLE, WS_BORDER.
Additional Information 2
If you look carefully at the above video, when the game window goes under the notepad window, the game title bar is hidden, but you can see that the game screen is always on top instead of just being covered.

Window manager for linux, supporting focusless windows

On my arm embedded device with a touchscreen, I have a 3rd party program (program A), that creates a window which handle keyboard presses. Because of that, this window always has to have focus. This is a closed source, and I do not have options to modify it.
I need to create a window in linux, that never grabs focus. It just shows an image, some times full screen. However, I have options not to make it full screen (1 pixel less, so window below is visible.).
Right now, I am using only X server, but I can install (almost) any window manager.
Is there a way to create a window in X, that never gets focus? If I understand X correctly, a window bellow mouse will get focus.
Is there a window manager, which supports such feature?
Is this possible to do with with xcb or wayland?
On Wayland, it's up to the compositor to tell the client whether it has focus or not, and which surface(s) to send key events to. So it would depend on the compositor or compositor toolkit you're using if it's possible.
KWin has an option that sounds like it does what you want. Right click the window title bar and choose more actions -> special window settings -> accept focus
Of the compositor toolkits, I only know the Qt Wayland Compositor API, and with that it should be possible (assuming your application can run as a Wayland client). The easiest thing would be to just show the image in the compositor using the QML APIs, or you could set enabled: false on the WaylandQuickItem or ShellSurfaceItem that you don't want to grab input focus.

Propagating all events from a X window

I'a currently working on a small utility, it's my first ever X project. The utility is used to draw a small circle around your mouse pointer. I use an app called Pinpoint to do the same on my Mac, it helps me find my mouse as I'm visually impaired.
The utility creates an transparent X window and draw a circle inside, it then moves that window with the mouse pointer so that the circle follows the mouse.
It currently works, except for one detail. Mouse events are not propagated up to the underlying windows. Basically, the utility makes the mouse useless.
As far as I can tell from the Xlib docs, if not otherwise specified, new windows should propagate all events. How can I fix this?
The code can be found on GitHub: https://github.com/blubber/circle-cursor it's a bit messy currently, becaue it is just a proof of concept.
I would suggest doing via cursor image as well, there are many ways when you won't be able to receive mouse events and only possible source would be polling with XQueryPointer.
With xfixes extension you can subscribe to all cursor image changed events and get most recent shape of the cursor, and whit XRender you can set your own ( possibly animated cursor )

How can add space-key to jump for Platform behavior in construct 2?

I'm using the Platform Behavior in Construct 2 for a Windows 10 game. In addition to the arrow key, I would like to use the Space bar to get the sprite to jump. Can I tell it to call into the Platform behavior somehow or get it to let me map space bar as well as up arrow to 'jump'?
You certainly can. You can use an action called "Simulate Control" to simulate pressing left, right, or up. So as your event, use Keyboard->on Key Pressed (Space Bar). Then for the action Player->Simulate Control (Up Arrow). This will allow you to press space bar to have your character jump. Additionally, you can turn off default controls for the platform behavior and do custom controls for left, right, and up using the same strategy.
The best way to go about doing this is by adding an event that handles the Space Button. Make sure to add the keyboard object in your layout, and in the event sheet, you want to make an event that handles the keyboard -> on key pressed (choose the spacebar when asked) -> choose whatever object you want to jump with the Platform behavior -> Set Vector Y to whatever increment you'd like to jump. Be sure to list this value as negative. The y-axis in C2 is inverted, so negative numbers mean up.
Hope this helps!

Click events in linux using opencv

I am doing a project to control mouse events by hand gestures using opencv in linux. I am able to control the mouse pointer with my hand movements.
I have achieved counting the number of fingers in the hands. I want to trigger mouse events depending upon the number of fingers shown. In windows there is a function mouse_event. But i am working in linux.
If there is any function for click events in opencv(linux) please let me know. Also help me with the header files to be included for those functions.
Thanks in advance!!
You can use Xlib library for handling mouse events in Linux environment. Xlib is an XWindow System protocol library. It contains functions for interacting with an X server. Main advantage of using Xlib in you project is that, you can handle mouse events globally( throughout the desktop, or in other window, not locally in your application window ).
Check out Xlib-MouseClick.
Just call the function mouseClick() in your program with argument -
0 - for left click,
1 - for middle click, and
2 - for right click, at current position of mouse pointer.

Resources