Hardware Support on the Lenovo X1 Carbon 2014 (20A7)
Boot
The machine doesn't have any USB 2 ports. Disabling USB 3 support will not "downgrade" the firmware to think that the USB 3 port is a USB 2 port. Thus, to boot the recovery CD, you'll need to disable UEFI completely. And to boot a recovery/install USB stick, you'll need to find a USB 2 one.
Fingerprint reader
The fingerprint reader from Validity Sensors (138a:0017) is supported by libfprint.
Ambient Light Sensor
A work-in-progress driver is available on GitHub.
Adaptive Keyboard
In Windows, modes are automatically switched based on the application selected. Information taken from the User guide.
- Home mode: when entering the desktop
- Web-browser mode: when opening a supported browser
- Web-conference mode: when opening a VOIP application
- Function mode: when turning the computer on
- Lay-flat mode: when opening the device flat
A kernel module which supports those new keys is available on GitHub.com
Mode |
Advertised action |
GNOME support |
Home Mode |
Volume down/up |
Working |
|
Volume mute (with LED) |
LED not working |
|
Brightness down/up |
Working |
|
Backlight off (with LED) |
kernel emits key |
|
Search |
|
|
Views the programs that you have opened. |
|
|
Views all the programs installed on your computer. |
|
|
Opens the Windows Snipping Tool |
kernel emits key |
|
Opens the predefined cloud application (tap) / Open Cloud Settings (hold) |
kernel emits key |
|
Toggle voice-recognition (with LED) |
kernel emits key |
|
Toggle camera-gestures function (with LED) |
kernel emits key |
Web-browser |
Volume down/up |
Working |
|
Volume mute (with LED) |
LED not working |
|
Brightness down/up |
Working |
|
Backlight off (with LED) |
kernel emits key |
|
Back |
Working |
|
Reload |
Working |
|
Open new tab |
kernel emits key |
|
Opens the Windows Snipping Tool |
kernel emits key |
|
Toggle voice-recognition (with LED) |
kernel emits key |
|
Toggle camera-gestures function (with LED) |
kernel emits key |
Web-conference mode |
Volume down/up |
Working |
|
Volume mute (with LED) |
LED not working |
|
Brightness down/up |
Working |
|
Backlight off (with LED) |
kernel emits key |
|
Microphone down/up (with LED) |
kernel emits key |
|
Changes the microphone noise-cancellation sensitivity (3 states: only my voice/normal/multiple voices, changes icon) |
kernel emits key |
|
Toggle webcam (with LED) |
|
|
Changes the camera mode (tap)/Open camera settings (hold) |
kernel emits key |
|
Toggle voice-recognition (with LED) |
kernel emits key |
|
Toggle camera-gestures function (with LED) |
kernel emits key |
Function mode |
F1-F12 |
Working |
|
Toggle wireless features (with LED) |
|
|
Toggle display output |
Working |
|
Switches through the keyboard backlight |
Working |
|
Opens the Adaptive Keyboard Settings window |
Launches Settings |
Lay-flat mode |
Volume down/up |
Working |
|
Volume mute (with LED) |
LED not working |
|
Brightness down/up |
Working |
|
Backlight off (with LED) |
kernel emits key |
|
Rotates the screen clockwise |
kernel emits key |
|
Toggle voice-recognition (with LED) |
kernel emits key |
|
Toggle camera-gestures function (with LED) |
kernel emits key |
The support for this keyboard is currently considered done, as:
Adding new key codes for very specific keys is unlikely to get any users apart from this piece of hardware
- The number of keys we can export from the kernel to X.org is limited, which means that we would only be able to support those new keys under Wayland
- By the time Wayland is our default windowing system, this model of laptop would have been a number of years old
- A few of the keys on the adaptive keyboard use a different scheme to notify of their use, and I did not manage to reverse-engineer it
For the sake of argument, if we wanted to support automatic switching between different modes when new applications are launched, as Windows does, we would implement this way:
Add a PolicyKit helper in gnome-settings-daemon to allow changing the adaptive mode as a normal user
- In gnome-settings-daemon again, monitor which application is active in GNOME Shell (this would probably be the .desktop file for the current application)
- When the application is launched, or switched to, look at the best adaptive keyboard mode for the application, possibly using the keywords, and switch to it (an app that handles the x-scheme-handler/http mime-type is a browser for example, so switch to the "Web Browser" mode)
- Monitor the hinge's status, and switch to "Lay Flat" when opened
- For any other application, switch to the last used of "Function" or "Home" mode