xdotool macht das mit einer XModifierKeymap welche von XGetModifierMapping() zurueckgegeben wird. Ich habe gerade mal versucht, das in PB nachzubauen, aber irgendwie stehe ich da gerade noch auf dem Schlauch. Die Modifier Table beinhaltet nichts wirklich sinnvolles bzw. die Werte aendern sich bei jeder Ausfuehrung. Ich denke mal die Werte sollten immer die gleichen sein (zumindest solange der X Server laeuft).
Code: Alles auswählen
EnableExplicit
ImportC "-lX11"
XOpenDisplay(display)
XGetModifierMapping(*display)
XFreeModifiermap(*modmap)
EndImport
Define *display = XOpenDisplay(0)
Define Dim modifierTable(7)
Define *modmap = XGetModifierMapping(*display)
Define maxKeyPerMod = PeekL(*modmap)
Define modifierIndex
For modifierIndex = 0 To 7
Define modifierKey
For modifierKey = 0 To maxKeyPerMod - 1
Define keycode = PeekA(*modmap + 4 + (modifierIndex * maxKeyPerMod) + modifierKey)
If keycode
modifierTable(modifierIndex) = keycode
Break
EndIf
Next
Next
XFreeModifiermap(*modmap)
For modifierIndex = 0 To 7
Debug modifierTable(modifierIndex)
Next
Code: Alles auswählen
typedef struct {
int max_keypermod; /* This server's max number of keys per modifier */
KeyCode *modifiermap; /* An 8 by max_keypermod array of the modifiers */
} XModifierKeymap;