Eric  Bukenya

Eric Bukenya


IPTSDaemon: Userspace for Surface touch Screen Workflow with C++


This is the user space IPTS daemon for Surface touch screen process

It is supposed to be used with BigSurface.kext to enable touch screen & stylus support on macOS.

Raw touching data is sent by the kernel driver to be processed in user space then touch & stylus hid events are sent back to the kernel.

The code is ported from linux-surface/iptsd and quo/iptsd

Warning, the processing algorithm is NOT optimised enough yet and it consumes around 10% cpu usage when fingers are detected, 4% or less when stylus is detected

Use this under your own consideration! Touching process is very energy consuming.

To install the daemon, simply run the script and all files needed will be copied to desired locations. After installation IPTSDaemon will be running when macOS starts.

You will also need to install two dylib(fmt and inih) and a daemon(sleepwatcher) for it to run properly.

Homebrew is recommended to install them:

Install Homebrew

in Terminal, execute brew install fmt inih sleepwatcher

Then, in order to resume the service after wakeup, you need to configure sleepwatcher:

  1. Create ~/.sleep and ~/.wakeup files.
  2. In .sleep: launchctl unload /Library/LaunchDaemons/com.xavier.IPTSDaemon.plist 2>/dev/null
  3. In .wakeup: sleep 2 && launchctl load /Library/LaunchDaemons/com.xavier.IPTSDaemon.plist

For example, you can:

cd ~
touch .sleep
touch .wakeup
echo "launchctl unload /Library/LaunchDaemons/com.xavier.IPTSDaemon.plist 2>/dev/null" >> .sleep
echo "sleep 2 && launchctl load /Library/LaunchDaemons/com.xavier.IPTSDaemon.plist" >> .wakeup

If you want to disable touch when palm is detected or stylus is detected or near the stylus, go to config folder and find your device's config, add this:

DisableOnPalm = true

# disable touch when using stylus
DisableTouch = true
# disable touch near the stylus
Cone = true

Enable on screen keyboard on login screen

To enable the on screen keyboard to show up on the login screen you need to change your Accessibility settings in the System Preferences>Users & Groups>Login Options>Accessibility Options put a checkbox on the Accessibility Keyboard.

Author: Xiashangning
Source code:
License: GPL-3.0 license


What is GEEK

Buddha Community

IPTSDaemon: Userspace for Surface touch Screen Workflow with C++
Tamale  Moses

Tamale Moses


How to Run C/C++ in Sublime Text?

C and C++ are the most powerful programming language in the world. Most of the super fast and complex libraries and algorithms are written in C or C++. Most powerful Kernel programs are also written in C. So, there is no way to skip it.

In programming competitions, most programmers prefer to write code in C or C++. Tourist is considered the worlds top programming contestant of all ages who write code in C++.

During programming competitions, programmers prefer to use a lightweight editor to focus on coding and algorithm designing. VimSublime Text, and Notepad++ are the most common editors for us. Apart from the competition, many software developers and professionals love to use Sublime Text just because of its flexibility.

I have discussed the steps we need to complete in this blog post before running a C/C++ code in Sublime Text. We will take the inputs from an input file and print outputs to an output file without using freopen file related functions in C/C++.

#cpp #c #c-programming #sublimetext #c++ #c/c++

Dicey Issues in C/C++

If you are familiar with C/C++then you must have come across some unusual things and if you haven’t, then you are about to. The below codes are checked twice before adding, so feel free to share this article with your friends. The following displays some of the issues:

  1. Using multiple variables in the print function
  2. Comparing Signed integer with unsigned integer
  3. Putting a semicolon at the end of the loop statement
  4. C preprocessor doesn’t need a semicolon
  5. Size of the string matters
  6. Macros and equations aren’t good friends
  7. Never compare Floating data type with double data type
  8. Arrays have a boundary
  9. Character constants are different from string literals
  10. Difference between single(=) and double(==) equal signs.

The below code generates no error since a print function can take any number of inputs but creates a mismatch with the variables. The print function is used to display characters, strings, integers, float, octal, and hexadecimal values onto the output screen. The format specifier is used to display the value of a variable.

  1. %d indicates Integer Format Specifier
  2. %f indicates Float Format Specifier
  3. %c indicates Character Format Specifier
  4. %s indicates String Format Specifier
  5. %u indicates Unsigned Integer Format Specifier
  6. %ld indicates Long Int Format Specifier

Image for post

A signed integer is a 32-bit datum that encodes an integer in the range [-2147483648 to 2147483647]. An unsigned integer is a 32-bit datum that encodes a non-negative integer in the range [0 to 4294967295]. The signed integer is represented in twos-complement notation. In the below code the signed integer will be converted to the maximum unsigned integer then compared with the unsigned integer.

Image for post

#problems-with-c #dicey-issues-in-c #c-programming #c++ #c #cplusplus

Compilation of a C program - Behind the 'screen'

First, what is compilation?

**Compilation **is an automated process of conversion of a source code (script) into an object code.

In software terms, a Compiler compiles a script i.e. it converts the source code into object code. But, before the conversion, it checks for the presence of any syntax errors in the code, after which the code is converted into an object code.

Let us now have a look at the various phases of compilation.

#c programming #c #c# #c++

Ari  Bogisich

Ari Bogisich


Loops in C++ | For, While, and Do While Loops in C++

In this Video We are going to see how to use Loops in C++. We will see How to use For, While, and Do While Loops in C++.
C++ is general purpose, compiled, object-oriented programming language and its concepts served as the basis for several other languages such as Java, Python, Ruby, Perl etc.

#c #c# #c++ #programming-c

Ari  Bogisich

Ari Bogisich


Using isdigit() in C/C++

In this article, we’ll take a look at using the isdigit() function in C/C++. This is a very simple way to check if any value is a digit or not. Let’s look at how to use this function, using some simple examples.

#c programming #c++ #c #c#