WM_TAKE_FOCUS
WM_HINTS içindeki tek bir bayrakla birlikte klavye odağının nereye gideceğine kimin karar verdiği sorusuna dört ayrı yanıt veren ICCCM protokolü: uygulama, pencere yöneticisi ya da hiç kimse.
X’te klavye odağı tek bir penceredir ve XSetInputFocus’u herkes çağırabilir. Kullanıcı bir pencereye tıkladığında bunu kimin yapacağını ICCCM’nin düzenlemesi gerekti ve ortaya bir matris çıktı. WM_HINTS içindeki input alanı, uygulamanın pencere yöneticisinden odak verilmesini isteyip istemediğini söyler; WM_PROTOCOLS içinde WM_TAKE_FOCUS’u listelemek ise bilgilendirilmek isteyip istemediğini. Dört birleşim vardır: hiç klavye istemeyen xclock ve xload için No Input; pencere yöneticisinin odağı üst düzey pencereye basitçe verdiği ve uygulamanın bununla yetindiği Passive (xterm gibi); pencere yöneticisinin odağı verip ek olarak iletiyi de gönderdiği, böylece uygulamanın odağı kendi alt pencereleri arasında doğru metin alanına aktarabildiği Locally Active; ve pencere yöneticisinin odağa hiç dokunmayıp yalnızca iletiyi gönderdiği, kararı uygulamaya bıraktığı Globally Active.
İleti bir zaman damgası taşır ve uygulamanın kendi çağrısında CurrentTime yerine onu kullanması gerekir; yoksa eski bir tıklama yenisini geçebilir. Modeller bir hata raporu türünün tamamını açıklar. Motif ve Xt programları Locally Active’tir, GTK ve Qt de öyle. Java’nın AWT’si Globally Active’i seçti ve odağı kendi vekil penceresi üzerinden alır; Java uygulamalarının dwm ve xmonad gibi döşemeli pencere yöneticilerinde klavyeyi yıllarca zor almasının nedenlerinden biri budur. Matrisi görmezden gelip odağı doğrudan ayarlayan pencere yöneticileri genellikle çalışır, ta ki ICCCM’yi ciddiye almış bir programla karşılaşana kadar.