Jamf Connect, FileVault and the USA Keyboard

"If your FileVault keyboard is set to USA ABC, you may encounter problems logging in due to keyboard layout differences. I'll guide you through the steps to change the keyboard layout to your local language."

Jamf Connect, FileVault and the USA Keyboard

Solving the FileVault Keyboard Issue

I recently encountered a situation where a customer was unable to log in due to a keyboard issue with the FileVault login window. After some troubleshooting, we identified the root cause: the keyboard layout was set to American English, while the customer was using a British English keyboard. This led to confusion with special characters like "@" and "#" since their positions differ between the two layouts.

Unveiling the NVRAM Mystery

To resolve this issue, we needed to determine where the FileVault login window stores its keyboard preferences. After consulting with some knowledgeable individuals from @scriptingosx, we discovered that the keyboard settings are stored within the Mac's NVRAM (non-volatile random-access memory).

A Simple Command to the Rescue

A simple command, sudo nvram prev-lang:kbd="en_GB:2", effectively sets the keyboard layout to British within the FileVault window. By implementing a policy that executes this command, we could effortlessly fix the keyboard issue for all UK users. However, this solution would only address the UK audience; what about users worldwide?

Unlocking the Keyboard ID Puzzle

Thankfully, a thread on the macadmins Slack channel provided a list of all keyboard IDs embedded within an Apple dat file. The OpenCore project also maintains a comprehensive list of keyboard layout IDs.

The Fix: A Two-Step Approach

To address the keyboard issue effectively, we need to follow a two-step process:

  1. Determine the user's default keyboard layout: Retrieve the keyboard ID from the com.apple.HIToolbox.plist file.
  2. Map the ID to the corresponding keyboard layout: Utilize the OpenCore list to identify the keyboard layout associated with the retrieved ID.

The Final Script: A Seamless Solution

The final script will seamlessly determine the user's keyboard layout, map it to the corresponding ID, and execute the nvram command to set the keyboard layout correctly within the FileVault login window. This script can be easily integrated into an onboarding policy to ensure a smooth and hassle-free login experience for all users, regardless of their location.

Subscribe to motionbug

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.