How do character device or character special files work?

I am trying to understand character special files. From wikipedia, I understand that these files
“provide an interface” for devices that transmit data one character at a time. My understanding is that the system somehow calls the character device instead of calling the device driver directly. But how does the file provide this interface? Is it an executable that translates the system call? Can someone explain what’s up.

Realtek rtl8821ce wifi driver problem in Linux Mint 18.2

I’ve installed Linux Mint 18.2 on my ThinkPad E470. I can’t connect to wifi as no wireless option shows up. I searched around and found an old post with the exact problems as mine – https://ubuntuforums.org/showthread.php?t=2187780. But the solution to it is old and doesn’t work for the new linux. And, lspci doesn’t list my wifi adapter model. I also tried the solution given by Pilot6(Can’t post the link as i have an upper limit on no. of links). But it doesn’t work. This is the output of lspci -knn | grep Net -A2. https://pastebin.com/mMa6465h

How to use Linux kernel driver bind/unbind interface for USB-HID devices?

First background. I am developing a driver for Logitech game-panel devices. It’s a keyboard with a screen on it. The driver is working nicely but by default the device is handled by HID. In order to prevent HID taking over the device before my driver, I can blacklist it in hid-core.c. This works but is not the best solution as I am working with several people and we all have to keep patching our HID module which is becoming a chore, especially as it often involves rebuilding initramfs and such.