پروتکل اصلی سیستم پنجره اکس
نگاشت کردن

در سامانه پنجره‌ای اکس، هر کلیدی که بر روی دستگاه‌های ورودی از جمله ماوس و کیبورد وجود دارد، یک عدد منحصربفرد مابین ۸ تا ۲۵۵ دارد که به آن keycode می‌گویند. یک keycode تنها یک کلید ویژه را شناسایی می‌کند، نه یک کاراکتر یا لفظ (مانند Page up) که بر روی کلید چاپ شده‌اند را. درعوض هر کدام از این الفاظ یا کاراکترها با یک keysym شناسایی می‌شوند. درحالی‌که keycode تنها به کلیدی که فشرده شده‌است وابسته است، یک keysym ممکن است به اینکه دکمه Shift یا یک اصلاح‌گر دیگر هم فشرده شده باشد، بستگی داشته باشد.
هنگامی که کلیدی فشرده یا رها می‌شود، سرور رویدادهایی از نوع KeyPress یا KeyRelease را برای کلاینت‌های مورد نظر می‌فرستد. این رویدادها داده‌های زیر را در خود دارند:
keycode کلیدی که فشرده شده‌است.
وضعیت کنونی اصلاح‌گرها (شیفت، کنترل و ...) و دکمه‌های ماوس
بنابراین سرور keycode و وضعیت اصلاح‌گرها را بدون اینکه تلاش کند خود آن‌ها را به یک کاراکتر ویژه ترجمه کند، برای کلاینت می‌فرستد و وظیفه ترجمه و تفسیر آن‌ها را بر دوش کلاینت واگذار می‌کند. برای نمونه، یک کلاینت ممکن است رویدادی مبنی بر اینکه یک کلید ویژه در حالی فشرده شده‌است که دکمه شیفت هم پایین نگه داشته شده، دریافت کند. اگر در حالت معمول این کلید خاص، کاراکتر 'a' را تولید می‌کرده، کلاینت (و نه سرور) این رویداد را به منزله وارد شدن کاراکتر 'A' تلقی می‌کند.
درحالی‌که ترجمه keycodeها به keysym به‌دست کلاینت انجام می‌شود، جدولی که ارتباط بین آن‌ها را مشخص می‌کند در سرور نگهداری می‌شود. ذخیره کردن این جدول در سرور که یک جای عمومی و مرکزی است، این امکان را فراهم می‌کند تا همه کلاینت‌ها بتوانند به آن دسترسی داشته باشند. کلاینت‌ها تنها از سرور، نگاشت کردن keycodeها به keysymها را درخواست می‌کنند و از آن برای رمزگشایی کردن keycodeها و اصلاح‌گرها به یک keysym استفاده می‌کنند. با این حال، کلاینت‌ها می‌توانند این نگاشت کردن را به خواست خودشان تغییر دهند.
یک اصلاح‌گر کلیدی است که هنگامی فشرده می‌شود، چگونگی تفسیر شدن کلیدها را تغییر می‌دهد. یکی از اصلاح‌گرهای رایج، کلید شیفت است. وقتی کلیدی که در حالت معمول کاراکتر 'a' را تولید می‌کند، به همراه کلید شیفت فشرده می‌شود، باعث تولید شدن یک کاراکتر بزرگ 'A' می‌شود. دیگر اصلاح‌گرهای رایج، کلید آلت، کنترل و متا هستند.
سرور اکس حداکثر با هشت عدد اصلاح‌گر کار می‌کند. ضمناً، هر اصلاح‌گر می‌تواند بیش از یک کلید داشته باشد. این کار بایسته است، چرا که بیشتر کیبوردها دو کلید برای برخی از اصلاح‌گرها دارند. برای نمونه، بیشتر کیبوردها دو کلید شیفت دارند (یکی در سمت چپ و دیگری در سمت راست). این دو کلید، در هنگام فشرده‌شدن هر کدام keycode ویژه و متفاوت از یکدیگری را تولید می‌کنند، اما سرور اکس هر دو آن‌ها را به عنوان اصلاح‌گر شیفت می‌شناسد.
سرور اکس برای هر کدام از این هشت اصلاح‌گر، فهرستی از keycodeها را نگه می‌دارد که آن‌ها را به عنوان آن اصلاح‌گر تفسیر می‌کند. برای نمونه، اگر در فهرست اولین اصلاح‌گر (اصلاح‌گر شیفت)، یک kecode با مقدار 0x37 وجود داشته باشد، آنگاه سرور کلیدی که باعث تولید شدن keycodeای با مقدار 0x37 می‌شود را به عنوان یک کلید شیفت در نظر می‌گیرد.
هرچند که فهرست‌های مربوط به نگاشت کردن اصلاح‌گرها در سرور نگهداری می‌شود، اما هر کلاینتی می‌تواند آن‌ها را به خواست خود تغییر دهد. برای نمونه، یک کلاینت می‌تواند درخواست دهد که کلید F1 به فهرست اصلاح‌گر شیفت افزوده شود. با این کار، کلید F1 همانند یک کلید شیفت کار می‌کند. با این حال، keycode اصلی متناظر با F1، همچنان در هنگام فشرده‌شدن این کلید تولید می‌شود. در نتیجه، F1 همانگونه کار می‌کند که پیش از آن کار می‌کرده (برای نمونه ممکن است یک پنجره Help در هنگام فشرده شدن F1 باز شود)، اما همچنین به عنوان یک کلید شیفت هم کار می‌کند (برای نمونه فشردن کلید 'a' به همراه F1 می‌تواند باعث تولید شدن یک کاراکتر 'A' در یک ویرایشگر متن شود).
سرور اکس همچنین سازوکار برای نگاشت کردن دکمه‌های ماوس دارد. با این حال، دکمه‌های ماوس تنها می‌توانند با یکدیگر جایگذاری شوند. این کار به ویژه برای تعویض کردن دکمه‌های چپ و راست برای استفاده آسان‌تر توسط افراد راست‌دست و چپ‌دست سودمند است.