解析Xkb布局文件

时间:2016-07-16 18:41:01

标签: c++ linux xorg

对于我正在处理的项目,我需要打开 Xkb布局文件 *并将密钥信息存储在内存中。那是;存储每个键映射到哪个键。有人知道C ++域中的API可以完成吗?我找到了this,但那是Python。

实施例

考虑前几行布局,英语(美国)......

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    ​
    <android.support.design.widget.AppBarLayout

        android:id="@+id/materialup.appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        >
        ​
        <RelativeLayout
            app:layout_scrollFlags="scroll|snap"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <android.support.v7.widget.Toolbar
                android:id="@+id/materialup.toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:minHeight="?attr/actionBarSize"

                app:theme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_scrollFlags="scroll|enterAlways|snap"

                />
            <LinearLayout
                app:layout_scrollFlags="scroll|snap"
                android:id="@+id/materialup.title_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center"
                >

                ​<monkeys.signme.utils.CircleImageView
                android:id="@+id/materialup.profile_image2"
                android:layout_width="64dp"
                android:layout_height="200dp"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal"
                android:elevation="8dp"

                />
                ​
                ​
            </LinearLayout>

        </RelativeLayout>​

        <LinearLayout
            app:layout_scrollFlags="scroll"
            android:orientation="horizontal"
            android:id="@+id/test"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

        </LinearLayout>


        ​
        <android.support.design.widget.TabLayout
            app:layout_scrollFlags="scroll"
            android:id="@+id/materialup.tabs"
            android:layout_width="fill_parent"
            android:layout_height="?attr/actionBarSize"
            app:tabSelectedTextColor="?android:attr/textColorPrimaryInverse"
            app:tabIndicatorColor="?android:attr/textColorPrimaryInverse"
            app:tabIndicatorHeight="4dp"
            />
    </android.support.design.widget.AppBarLayout>
    ​

    <android.support.v4.view.ViewPager
        android:id="@+id/materialup.viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />
    ​
    <android.support.design.widget.FloatingActionButton
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"

        app:backgroundTint="#fff"
        app:fabSize="normal"
        app:elevation="2dp"

        app:layout_anchor="@id/materialup.title_container"
        app:layout_anchorGravity="bottom|right|end"

        android:id="@+id/fab"
        android:layout_alignParentRight="true"


        android:layout_alignParentEnd="true"
        android:layout_margin="16dp" />
    ​
</android.support.design.widget.CoordinatorLayout>

...我想将其存储为布局&#34;英语(美国)&#34;,关键TLDE正在举行&#39;严重&#39;和&#39; asciitilde&#39;,密钥AE01持有&#39; 1&#39;和&#39; exclam&#39;并且密钥AE02正在&#39; at&#39;。

*在Ubuntu中,Xkb布局文件存储在:default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1]= "English (US)"; key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at ] };

1 个答案:

答案 0 :(得分:1)

我非常怀疑你会找到一个解析该文件的C ++库。你最好的选择是xorg代码中的某个C函数。但你确定这是你想做的吗?如果您想知道当前如何在正在运行的服务器中定义密钥,您可能最好不要询问服务器。当然X有一个枚举键盘定义的功能?