Not Detecting Devices on Ubuntu Linux

Hello, I’m currently developing a game and I’d like to use JInput. Anyway, I started off downloading the binaries from the latest distribution (http://www.newdawnsoftware.com/resources/jinput/jinput_combined_dist_latest.zip).After setting up the library, I wanted to make sure JInput is able to detect my Keyboard and Mouse. This is a good place to mention I am developing on Ubuntu Linux 7.04 with 2.6 Linux Core. Well, I tried running each of the tests as mentioned in the “Getting Started” thread (http://www.java-gaming.org/forums/index.php?topic=16866.0), however, I seem to always get the same error messages which look something like this:

Controller Env = net.java.games.input.DefaultControllerEnvironment@42e816
Failed to open device (/dev/input/event5): Failed to open device /dev/input/event5 (13)
Failed to open device (/dev/input/event4): Failed to open device /dev/input/event4 (13)
…And so on

Is this something obvious I am missing? All the tests seem to work fine on my Windows installation (however, it is very important that I do all my development on Ubuntu).

Help much appreciated,
laginimaineb.

Oops… Really sorry about this post. After reading a bit in the forums here, I found that I need to be with root permissions to get access to all controllers. (I was wondering, why so? I mean, it seems like a bit much asking the gamer to run my game with all those extra permissions…). Anyway, sorry to bother you.

Windows allows any process by any user to use direct x calls, so we need no special permissions there,

On Linux (not just ubuntu) the devices are exposed as a bunch of files that you read and write too. As long as the user you are running the application as, has read access to the device files, you should be able to read it. You don’t have to run as root, but root will always have access to those files. The other option is to modify the udev configuration so a particular group has access, and add the user to that group. If you want force feedback support, you also need write access to the files.

Linux does this for security reasons. I could very very easily write an application in windows using jinput that has no visible element, that quite happily sits there recording every single key press you make. Under Linux, you have to start playing with file permissions before jinput, or any other application for that matter, can start reading they keyboard node in /dev/input directly. So the reasoning behind doing it is security. There is no reason why they decided that js nodes need locking up too though.

Endolf