from xlib import Display
type
XkbRF_VarDefsRec* {.bycopy.} = object
model*: cstring
layout*: cstring
variant*: cstring
options*: cstring
sz_extra*: cushort
num_extra*: cushort
extra_names*: cstring
extra_values*: cstringArray
XkbRF_VarDefsPtr* = ptr XkbRF_VarDefsRec
XkbRF_VarDescRec* {.bycopy.} = object
name*: cstring
desc*: cstring
XkbRF_VarDescPtr* = ptr XkbRF_VarDescRec
XkbRF_DescribeVarsRec* {.bycopy.} = object
sz_desc*: cint
num_desc*: cint
desc*: XkbRF_VarDescPtr
XkbRF_DescribeVarsPtr* = ptr XkbRF_DescribeVarsRec
XkbRF_RuleRec* {.bycopy.} = object
number*: cint
layout_num*: cint
variant_num*: cint
model*: cstring
layout*: cstring
variant*: cstring
option*: cstring
keycodes*: cstring
symbols*: cstring
types*: cstring
compat*: cstring
geometry*: cstring
keymap*: cstring
flags*: cuint
XkbRF_RulePtr* = ptr XkbRF_RuleRec
XkbRF_GroupRec* {.bycopy.} = object
number*: cint
name*: cstring
words*: cstring
XkbRF_GroupPtr* = ptr XkbRF_GroupRec
const
XkbRF_PendingMatch* = 2
XkbRF_Option* = 4
XkbRF_Append* = 8
XkbRF_Normal* = 16
XkbRF_Invalid* = 32
XKB_RF_NAMES_PROP_ATOM* = "_XKB_RULES_NAMES"
XKB_RF_NAMES_PROP_MAXLEN* = 1024
type
XkbRF_RulesRec* {.bycopy.} = object
models*: XkbRF_DescribeVarsRec
layouts*: XkbRF_DescribeVarsRec
variants*: XkbRF_DescribeVarsRec
options*: XkbRF_DescribeVarsRec
sz_extra*: cushort
num_extra*: cushort
extra_names*: cstringArray
extra*: XkbRF_DescribeVarsPtr
sz_rules*: cushort
num_rules*: cushort
rules*: XkbRF_RulePtr
sz_groups*: cushort
num_groups*: cushort
groups*: XkbRF_GroupPtr
XkbRF_RulesPtr* = ptr XkbRF_RulesRec
proc XkbRF_GetNamesProp*( a1: ptr Display
, a2: cstringArray
, a3: XkbRF_VarDefsPtr): bool {.importc, cdecl.}
proc XkbRF_SetNamesProp*( a1: ptr Display
, a2: cstring
, a3: XkbRF_VarDefsPtr): bool {.importc, cdecl.}
proc XkbRF_AddRule*(a1: XkbRF_RulesPtr): XkbRF_RulePtr {.importc, cdecl.}
proc XkbRF_AddGroup*(rules: XkbRF_RulesPtr): XkbRF_GroupPtr {.importc, cdecl.}
proc XkbRF_LoadRules*( a1: ptr FILE
, a2: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_LoadRulesByName*(a1: cstring; a2: cstring; a3: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_AddVarDesc*(a1: XkbRF_DescribeVarsPtr): XkbRF_VarDescPtr {.importc, cdecl.}
proc XkbRF_AddVarDescCopy*( a1: XkbRF_DescribeVarsPtr
, a2: XkbRF_VarDescPtr
): XkbRF_VarDescPtr {.importc, cdecl.}
proc XkbRF_AddVarToDescribe*( a1: XkbRF_RulesPtr
, a2: cstring
): XkbRF_DescribeVarsPtr {.importc, cdecl.}
proc XkbRF_LoadDescriptions*(a1: ptr FILE;
a2: XkbRF_RulesPtr
): bool {.importc, cdecl.}
proc XkbRF_LoadDescriptionsByName*(a1: cstring; a2: cstring; a3: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_Load*(a1: cstring; a2: cstring; a3: bool;
a4: bool): XkbRF_RulesPtr {.importc, cdecl.}
proc XkbRF_Create*(a1: cint; a2: cint): XkbRF_RulesPtr {.importc, cdecl.}
proc XkbRF_Free*( a1: XkbRF_RulesPtr
, a2: bool) {.importc, cdecl.}