code: static Map<Integer, LinuxAbsoluteInputCapabilities> getCapabilities(
              File devNode, BitSet axes) throws IOException {
          if (axes == null || axes.isEmpty()) {
              return null;
          }
          LinuxSystem system = LinuxSystem.getLinuxSystem();
          LinuxSystem.InputAbsInfo info = new LinuxSystem.InputAbsInfo();
          long fd = system.open(devNode.getPath(), LinuxSystem.O_RDONLY);
          if (fd == -1) {
              throw new IOException(system.getErrorMessage());
          }
          Map<Integer, LinuxAbsoluteInputCapabilities> caps =
                  new HashMap<Integer, LinuxAbsoluteInputCapabilities>();
          for (int i = 0; (i = axes.nextSetBit(i)) != -1; i++) {
              caps.put(i, new LinuxAbsoluteInputCapabilities(system, info, fd, i));
          }
          system.close(fd);
          return caps;
      }
docs: Reads capabilities from a device node.
  
  @return A Map of capabilities for each supported axis, or null if no
  capabilities are available.
  @throws IOException if an error occured when reading capabilities