NAME
X11::Protocol::Ext::XKEYBOARD -- Perl extension module for X Keyboard Extension Protocol
SYNOPSIS
$x = X11::Protocol->new( $ENV {DISPLAY});
$x ->init_extension( 'XKEYBOARD' ) or die ;
|
DESCRIPTION
This module is used by the X11::Protocol(3pm) module to participat in the keboard extension to the X protocol, allowing the client to control the keyboard and other input devices, per the "X Keyboard Extension Protocol Specification", a copy of which can be obtained from http://www.x.org/releases/X11R7.7/doc/kbproto/xkbproto.pdf.
This manual page does not attempt to document the protocol itself, see the specification for that. It documents the "CONSTANTS", "EVENTS" and "ERRORS" that are added to the X11::Protocol(3pm) module.
EVENTS
XKEYBOARD multiplexes one base event number with the xkb-code
field. Therefore, X11::Protocol::Ext::XKEYBOARD provides the following single event type: XkbNotify
, the fields of which depend on the value of the xkb_code
field (which is of type XkbEventType
). This field can have the value:
XkbEventType => XkbNewKeyboardNotify XkbMapNotify XkbStateNotify
XkbControlsNotify XkbIndicatorStateNotify XkbIndicatorMapNotify
XkbNamesNotify XkbCompatMapNotify XkbBellNotify XkbActionNotify
XkbAccessXNotify XkbExtensionDeviceNotify
|
XkbNewKeyboardNotify
The unpacked XkbNewKeyboardNotify
event contains the following fields in the event hash:
XkbNewKeyboardNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
oldDeviceID => $deviceid ,
minKeyCode => $keycode ,
maxKeyCode => $keycode ,
oldMinKeyCode => $keycode ,
oldMaxKeyCode => $keycode ,
requestMajor => $major ,
requestMinor => $minor ,
changed => $XkbNKNDetail }
|
XkbMapNotify
The unpacked XkbMapNotify
event contains the following fields in the event hash:
XkbMapNotify => {
xkb_code => $code ,
time => $time ,
deviceId => $deviceid ,
ptrBtnActions => $XkbButMask ,
changed => $XkbMapPart ,
minKeyCode => $keycode ,
maxKeyCode => $keycode ,
firstType => $type ,
nTypes => $ntypes ,
firstKeySym => $keysym ,
nKeySyms => $nkeysyms ,
firstKeyAct => $keyact ,
nKeyActs => $nkeyacts ,
firstKeyBehavior => $behave ,
nKeyBehavior => $nbehave ,
firstKeyExplicit => $keyexp ,
nKeyExplicit => $nkeyexp ,
firstModMapKey => $modmapkey ,
nModMapKeys => $nmodmapkey ,
firstVModMapKey => $vmodmapkey ,
nVModMapKeys => $nvmodmapkey ,
virtualMods => $XkbVMod }
|
XkbStateNotify
The unpacked XkbStateNotify
event contains the following fields in the event hash:
XkbStateNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
mods => $XkbKeyMask ,
baseMods => $XkbKeyMask ,
latchedMods => $XkbKeyMask ,
lockedMods => $XkbKeyMask ,
group => $XkbGroup ,
baseGroup => $group ,
latchedGroup => $group ,
lockedGroup => $XkbGroup ,
compatState => $XkbKeyMask ,
grabMods => $XkbKeyMask ,
compatGrabMods => $XkbKeyMask ,
lookupMods => $XkbKeyMask ,
compatLookupMods => $XkbKeyMask ,
ptrBtnState => $butmask ,
changed => $XkbStatePart ,
keycode => $keycode ,
eventType => $eventtype ,
requestMajor => $major ,
requestMinor => $minor }
|
XkbControlsNotify
The unpacked XkbControlsNotify
event contains the following fields in the event hash:
XkbControlsNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
numGroups => $numgroups ,
changedControls => $XkbControl ,
enabledControls => $XkbBoolCtrl ,
enabledControlChanges => $XkbBoolCtrl ,
keycode => $keycode ,
eventType => $eventttype ,
requestMajor => $major ,
requestMinor => $minor }
|
XkbIndicatorStateNotify
The unpacked XkbIndicatorStateNotify
event contains the following fields in the event hash:
XkbIndicatorStateNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
state => $XkbIndicator ,
stateChanged => $XkbIndicator }
|
XkbIndicatorMapNotify
The unpacked XkbIndicatorMapNotify
event contains the following fields in the event hash:
XkbIndicatorMapNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
state => $XkbIndicator ,
mapChanged => $XkbIndicator }
|
XkbNamesNotify
The unpacked XkbNamesNotify
event contains the following fields in the event hash:
XkbNamesNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
changed => $XkbNameDetail ,
firstType => $type ,
nTypes => $ntypes ,
firstLevelName => $level ,
nLevelNames => $nlevels ,
nRadioGroups => $ngroups ,
nKeyAliases => $naliases ,
changedGroupNames => $XkbKbGroup ,
changedVirtualMods => $XkbVMod ,
firstKey => $keycode ,
nKeys => $nkeys ,
changedIndicators => $XkbIndicator }
|
XkbCompatMapNotify
The unpacked XkbCompatMapNotify
event contains the following fields in the event hash:
XkbCompatMapNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
changedGroups => $XkbKbGroup ,
firstSI => $firstsi ,
nSI => $nsi ,
nTotalSI => $ntotalsi }
|
XkbBellNotify
The unpacked XkbBellNotify
event contains the following fields in the event hash:
XkbBellNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
bellClass => $XkbBellClassResult ,
bellID => $bellid ,
percent => $percent ,
pitch => $pitch ,
duration => $duration ,
bell_name => $atom ,
window => $window ,
eventOnly => $Bool }
|
XkbActionMessage
The unpacked XkbActionMessage
event contains the following fields in the event hash:
XkbActionMessage => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
keycode => $keycode ,
press => $Bool ,
keyEventFollows => $Bool ,
mods => $XkbKeyMask ,
group => $XkbGroup ,
message => $message }
|
XkbAcessXNotify
The unpacked XkbAcessXNotify
event contains the following fields in the event hash:
XkbAcessXNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
keycode => $keycode ,
detail => $XkbAXNDetail ,
slowKeysDelay => $delay ,
debounceDelay => $delay }
|
XkbExtensionDeviceNotify
The unpacked XkbExtensionDeviceNotify
event contains the following fields in the event hash:
XkbExtensionDeviceNotify => {
xkb_code => $code ,
time => $time ,
deviceID => $deviceid ,
reason => $XkbXIDetail ,
ledClass => $XkbLEDClassResult ,
ledID => $ledid ,
ledsDefined => $XkbIndicator ,
ledState => $XkbIndicator ,
firstButton => $button ,
nButtons => $nbuttons ,
supported => $XkbXIFeature ,
unsupported => $XkbXIFeature }
|
CONSTANTS
X11::Protocol::Ext::XKEYBOARD provides the following constants: (some are enums, some are masks, some are both)
XkbEventType => XkbNewKeyboardNotify XkbMapNotify
XkbStateNotify XkbControlsNotify XkbIndicatorStateNotify
XkbIndicatorMapNotify XkbNamesNotify XkbCompatMapNotify
XkbBellNotify XkbActionMessage XkbAcessXNotify
XkbExtensionDeviceNotify
|
XkbKeyMask => Shift Lock Control Mod1 Mod2 Mod3 Mod4 Mod5
|
XkbButMask => Button0 Button1 Button2 Button3
Button4 Button5 Button6 Button7
|
XkbNKNDetail => Keycodes Geometry DeviceID
|
XkbAXNDetail => SKPress SKAccept SKReject SKRelease BKAccept
BKReject AXKWarning
|
XkbMapPart => KeyTypes KeySyms ModifierMap ExplicitComponents
KeyActions KeyBehaviors VirtualMods VirtualModMap
|
XkbStatePart => ModifierState ModifierBase ModifierLatch
ModifierLock GroupState GroupBase GroupLatch GroupLock
CompatState GrabModes CompatGrabMods LookupMods
CompatLookupMods PointerButtons
|
XkbBoolCtrl => RepeatKeys SlowKeys BounceKeys StickyKeys
MouseKeys MouseKeysAccel AccessXKeys AccessXTimeoutMask
AccessXFeedbackMask AudibleBellMask Overlay1Mask
Overlay2Mask IgnoreGroupLockMask
|
XkbControl => RepeatKeys SlowKeys BounceKeys StickyKeys
MouseKeys MouseKeysAccel AccessXKeys AccessXTimeoutMask
AccessXFeedbackMask AudibleBellMask Overlay1Mask
Overlay2Mask IgnoreGroupLockMask GroupsWrap InternalMods
IgnoreLockMods PerKeyRepeat ControlsEnabled
|
XkbAXFBOpt => SKPress SKAccept Feature SlowWarn Indicator
StickyKeys SKRelease SKReject BKReject DumbBell
|
XkbAXSKOpt => TwoKeys LatchToLock
|
XkbAXOption => SKPress SKAccept Feature SlowWarn Indicator
StickKeys TwoKeys LatchToLock SKRelease SKReject BKReject
DumbBell
|
XkbDeviceSpec => UseCoreKbd UseCorePtr
|
XkbLEDClassResult => KbdFeedbackClass LedFeedbackClass
|
XkbLEDClassSpec => KbdFeedbackClass LedFeedbackClass
DfltXIClass AllXIClasses
|
XkbBellClassResult => KbdFeedbackClass BellFeedbackClass
|
XkbBellClassSpec => KbdFeedbackClass BellFeedbackClass
DfltXIClass
|
XkbIDResult => DfltXIId XINone
|
XkbMultiIDSpec => DfltXIId AllXIIds
|
XkbGroup => Group1 Group2 Group3 Group4
|
XkbGroups => Group1 Group2 Group3 Group4 AnyGroup AllGroups
|
XkbKbGroup => Group1 Group2 Group3 Group4
|
XkbKbGroups => Group1 Group2 Group3 Group4 AnyGroup
|
XkbGroupsWrap => ClampIntoRange RedirectIntoRange
|
XkbVModsHigh => vmod8 vmod9 vmod10 vmod11 vmod12 vmod13
vmod14 vmod15
|
XkbVModsLow => vmod0 vmod1 vmod2 vmod3 vmod4 vmod5 vmod6 vmod7
|
XkbVMod => vmod0 vmod1 vmod2 vmod3 vmod4 vmod5 vmod6 vmod7
vmod8 vmod9 vmod10 vmod11 vmod12 vmod13 vmod14 vmod15
vmod16
|
XkbExplicit => KeyType1 KeyType2 KeyType3 KeyType4 Interpret
AutoRepeat Behavior VModMap
|
XkbSymInterpMatch => LevelOneOnly Operation
|
XkbIMFlag => LEDDrivesKB NoAutomatic NoExplicit
|
XkbIMModsWhich => UseBase UseLatched UseLocked UseEffective
UseCompat
|
XkbIMGroupsWhich => UseBase UseLatched UseLocked UseEffective
UseCompat
|
XkbCMDetail => SymInterp GroupCompat
|
XkbNamesDetail => KeycodesName GeometryName SymbolsName
PhysSymbolsName TypesName CompatName KeyTypeNames
KTLevelNames IndicatorNames KeyNames KeyAliases
VirtualModNames GroupNames RGNames
|
XkbGBNDetail => Types CompatMap ClientSymbols ServerSymbols
IndicatorMaps KeyNames Geometry OtherNames
|
XkbXIExtDevFeature => ButtonActions IndicatorNames
IndicatorMaps IndicatorState
|
XkbXIFeature => Keyboards ButtonActions IndicatorNames
IndicatorMaps IndicatorState
|
XkbXIDetail => Keyboards ButtonActions IndicatorNames
IndicatorMaps IndicatorState UnsupportedFeature
|
XkbPerClientFlag => DetectableAutorepeat GrabsUseXKBState
AutoResetControls LookupStateWhenGrabbed
SendEventUsesXKBState
|
ERRORS
X11::Protocol::Ext::XKEYBOARD provides the following bad resource errors: Keyboard
REQUESTS
X11::Protocol::Ext::KEYBOARD provides the folloing requests:
$X ->XkbUseExtension( $major , $minor )
=>
( $supported , $major , $minor )
|
$X ->XkbSelectEvents( $deviceSpec ,
$XkbEventType => 'clear' ,
$XkbEventType =>'selectAll,
$XkbEventType =>[ $affect , $details ],
... )
$deviceSpec => $XkbDeviceSpec
$affects => $bitmask
$details => $bitmask
$bit is event type bit name or bit number
|
$X ->XkbBell( $deviceSpec , $bellClass , $bellID , $percent , $forceSound ,
$eventOnly , $pitch , $duration , $name , $window )
|
$X ->XkbGetState( $deviceSpec )
=>
( $deviceID , $mods , $baseMods , $latchedMods , $lockedMods , $group ,
$lockedGroup , $baseGroup , $latchedGroup , $compatState ,
$grabMods , $compatGrabMods , $lookupMods , $compatLookupMods ,
$ptrBtnState )
|
$X ->XkbLatchLockState( $deviceSpec , $affectModLocks , $modLocks ,
$lockGroup , $groupLock , $affectModLatches , $modLatches ,
$latchGroup , $groupLatch )
$affectModLocks => $XkbKeyMask
$modLock => $XkbKeyMask
$lockGroup => $Bool
$groupLock => $XkbGroup
$affectModLatches => $XkbKeyMask
$modLatches => $XkbKeyMask
$latchGroup => $Bool
$groupLatch => $bitmask
|
$X ->XkbGetControls( $deviceSpec )
=>
( $deviceID , $mouseKeysDfltBtn , $numGroups , $groupsWrap ,
$internalMods_mask , $ignoreLockMods_mask ,
$interalMods_realMods , $ignoreLockMods_realMods ,
$internalMods_vmods , $ignoreLockMods_vmods , $repeatDelay ,
$repeatInterval , $slowKeysDelay , $debounceDelay ,
$mouseKeysDelay , $mouseKeysInterval , $mouseKeysTimeToMax ,
$mouseKeysMaxSpeed , $mouseKeysCurve , $accessXOptions ,
$accessXTimeout , $accessXTimeoutOptionsMask ,
$accessXTimeoutOptionValues , $accessXTimeoutMask ,
$accessXTimeoutValues , $enabledControls , $perKeyRepeat )
$deviceSpec => $XkbDeviceSpec
$internalMods_mask => $XkbKeyMask
$ignoreLockMods_mask => $XkbKeyMask
$internalMods_realMods => $XkbKeyMask
$ignoreLockMods_realMods => $XkbKeyMask
$internalMods_vmods => $XkbVMod
$ignoreLockMods_vmods => $XkbVMod
$accessXOptions =>
$accessXTimeoutOptionsMask => $XkbAXOption
$accessXTimeoutOptionsValues => $XkbAXOption
$accessXTimeoutMask => $XkbBoolCtrl
$accessXTimeoutValues => $XkbBoolCtrl
$enabledControls => $XkbBoolCtrl
|
$X ->XkbSetControls( $deviceSpec , $affectInternalRealMods ,
$internalRealMods , $affectIgnoreLockRealMods ,
$ignoreLockRealMods , $affectInternalVirtualMods ,
$internalVirtualMods , $affectIgnoreLockVirtualMods ,
$ignoreLockVirtualMods , $mouseKeysDfltBtn , $groupsWrap ,
$accessXOptions , $affectEnabledControls , $enabledControls ,
$changeControls , $repeatDelay , $repeatInterval , $slowKeysDelay ,
$debounceDelay , $mouseKeysDelay , $mouseKeysInterval ,
$mouseKeysTimeToMax , $mouseKeysMaxSpeed , $mouseKeysCurve
$accessXTimeout , $accessXTimeoutMask , $accessXTimeoutValues ,
$accessXTimeoutOptionsMask , $accessXTimeoutOptionsValues ,
$perKeyRepeat )
$deviceSpec => $XkbDeviceSpec
$affectInternalRealMods => $XkbKeyMask
$internalRealMods => $XkbKeyMask
$affectIgnoreLockRealMods => $XkbKeyMask
$ignoreLockRealMods => $XkbKeyMask
$affectInternalVirualMods => $XkbVMod
$internalVirualMods => $XkbVMod
$affectIgnoreLockVirtualMods => $XkbVMod
$ignoreLockVirtualMods => $XkbVMod
$accessXOptions => $XkbAXOption
$enabledControls => $XkbBoolCtrl
$changeControls => $XkbControl
$accessXTimeoutMask => $XkbBoolCtrl
$accessXTimeoutValues => $XkbBoolCtrl
$accessXTimeoutOptionsMask => $XkbAXOption
$accessXTimeoutOptionsValues => $XkbAXOption
|
$X ->XkbGetMap( $deviceSpec , $full , $partial , $firstType , $nTypes ,
$firstKeySym , $nKeySyms , $firstKeyAction , $nKeyActions ,
$firstKeyBehavior , $nKeyBehaviours , $virtualMods ,
$firstKeyExplicit , $nKeyExplicit , $firstModMapKey ,
$nModMapKeys , $firstVModMapKey , $nVModMapKeys )
=>
( $deviceID , $minKeyCode , $maxKeyCode , $present , $firstType , $nTypes ,
$totalTypes , $firstKeySym , $nKeySyms , $firstKeyAction ,
$totalActions , $nKeyActions , $firstKeyBehavior , $nKeyBehaviors ,
$totalKeyBehaviors , $firstKeyExplicit , $nKeyExplicit ,
$totalKeyExplicit , $firstModMapKey , $nModMapKeys ,
$totalModMapKeys , $firstVModMapKey , $nVModMapKeys ,
$totalVModMapKeys , $virtualMods , XkbKeyTypes => $typesRtrn ,
XkbKeySyms => $symsRtrn , XkbKeyActions =>[ $actsRtrn ,...],
XkbKeyBehaviors => $behaviorsRtrn , XkbVirtualMods => $vmodsRtrn ,
XkbExplicitComponents => $explicitRtrn ,
XkbModifierMap => $modmapRtrn , XkbVirtualModMap => $vmodMapRtrn )
$typesRtrn => [ $keytype , ... ]
$keytype => [ $mods_mask , $mods_mods , $mods_vmods ,
$numLevels , $hasPreserve , [ $map ,...],
[ $preserve ,...] ]
$map => [ $active , $mods_mask , $level , $mods_mods ,
$mods_vmods ]
$preserve => [ $moddef , ... ]
$symsRtrn => [ $keysym , ... ]
$keysym => [ [ @ktIndex [0..3] ], $groupInfo , $width ,
[ $sym , ... ] ]
$actsRtrn => [ $act , ... ]
$behaviorsRtrn => [ $behavior , ... ]
$behavior => [ $keycode , $behaviors ]
$vmodsRtrn => [ $vmod , ... ]
$explicitRtrn => [ $explicit , ... ]
$explicit => [ $keycode , $explicits ]
$modmapRtrn => [ $modmap , ... ]
$modmap => [ $keycode , $mods ]
$vmodmapRtrn => [ $vmodmap , ... ]
$vmodmap => [ $keycode , $vmods ]
|
$X ->XkbSetMap(...)
too complex (not implemented yet)
|
$X ->XkbGetCompatMap(...)
too complex (not implemented yet)
|
$X ->XkbSetCompatMap(...)
too complex (not implemented yet)
|
$X ->GetIndicatorState( $deviceSpec )
=>
( $deviceID , $state )
$deviceSpec => $XkbDeviceSpec
|
$X ->GetIndicatorMap( $deviceSpec , $which )
=>
( $deviceID , $which , $realIndicators , $maps )
$deviceSpec => $XkbDeviceSpec
$maps => [ $map , ... ]
$map => [ $flags , $whichGroups , $groups , $whichMods ,
$mods , $realMods , $vmods , $ctrls ]
|
$X ->SetIndicatorMap( $deviceSpec , $which , $maps )
$deviceSpec => $XkbDeviceSpec
$maps => [ $map , ... ]
$map => [ $flags , $whichGroups , $groups , $whichMods ,
$mods , $realMods , $vmods , $ctrls ]
|
$X ->GetNamedIndicator( $deviceSpec , $ledClass , $ledID , $indicator )
=>
( $deviceID , $indicator , $found , $on , $realIndicator , $ndx ,
$map , $supported )
$deviceSpec => $XkbDeviceSpec
$map => [ $flags , $whichGroups , $groups , $whichMods ,
$mods , $realMods , $vmods , $ctrls ]
|
$X ->XkbSetNamedIndicator->( $deviceSpec , $ledClass , $ledID ,
$indicator , $setState , $on , $setMap , $createMap , $map )
$deviceSpec => $XkbDeviceSpec
$map => [ $flags , $whichGroups , $groups , $whichMods ,
$mods , $realMods , $vmods , $ctrls ]
|
$X ->XkbGetNames(...)
too complex (not implemented yet)
|
$X ->XkbSetNames(...)
too complex (not implemented yet)
|
$X ->XkbGetGeometry(...)
too complex (not implemented yet)
|
$X ->XkbSetGeometry(...)
too complex (not implemented yet)
|
$X ->XkbPerClientFlags( $deviceSpec , $change , $value , $ctrlsToChange ,
$autoCtrls , $autoCtrlValues )
=>
( $deviceID , $supported , $value , $autoCtrls , $autoCtrlValues )
$deviceSpec => $XkbDeviceSpec
$change => $XkbPerClientFlag
$value => $XkbPerClientFlag
$ctrlsToChange => $XkbBoolCtrl
$autoCtrls => $XkbBoolCtrl
$autoCtrlValues => $XkbBoolCtrl
|
$X ->XkbListComponents( $deviceSpec , $maxNames , $keymaps , $keycodes ,
$types , $compatMap , $symbols , $geometry )
=>
( $deviceID , $keymaps , $keycodes , $types , $compatMaps , $symbols ,
$geometries , $extra )
$keymaps => [ $kblisting , ... ]
$keycodes => [ $kblisting , ... ]
$types => [ $kblisting , ... ]
$compatMaps => [ $kblisting , ... ]
$symbols => [ $kblisting , ... ]
$kblisting => [ $flags , $string ]
|
$X ->XkbGetKbdByName(...)
too complex (not implemented yet)
|
$X ->XkbGetDeviceInfo(...)
too complex (not implemented yet)
|
$X ->XkbSetDeviceInfo(...)
too complex (not implemented yet)
|
$X ->XkbSetDebuggingFlags(...)
not useful (not implemented)
|
BUGS
This modue has not been tested exhaustively and will likely fail when anything special is attempted.
Many requests are not implemented yet due to their high complexity. (I really only needed XkbGetControls and XkbSetControls.)
AUTHOR
Brian Bidulock <bidulock@cpan.org>.
SEE ALSO
perl(1), X11::Protocol(3pm), The X Keyboard Extension: Protocol Specification, Protocol Version 1.0/Document Revision 1.0 (X Consortium Standard)