我目前正在尝试使用Lua读取Apple制作的plist文件的内容,以便我可以使用它的值。
plist包含键盘快捷键,使用' modifierMask'。
通过逐个测试,我确定下面的modifierMask值与列出的修饰键匹配 - 但我不确定Apple究竟是如何计算掩码值的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@color/white"
tools:context="com.example.max.testcase.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="loadSomething"
android:padding="5sp"
android:layout_marginTop="5sp"
android:layout_marginBottom="5sp"
android:textAlignment="center"
android:text="Click here to load the site"
android:textColor="@color/white"
android:textSize="16sp"
android:background="@color/blue"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center">
<ImageButton
android:id="@+id/icon1"
android:onClick="method1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginTop="100sp"
android:padding="20dp"
android:paddingTop="50dp"
android:adjustViewBounds="true"
android:layout_gravity="left"
android:gravity="center_horizontal"
android:scaleType = "fitCenter"
android:maxWidth="350dp"
android:maxHeight="350dp"
android:background="@color/white"
android:src="@drawable/icon1" />
<ImageButton
android:id="@+id/icon2"
android:onClick="method2"
android:layout_width="0dp"
android:layout_weight= "1"
android:layout_height="wrap_content"
android:layout_marginTop="100sp"
android:padding="20dp"
android:paddingTop="50dp"
android:layout_gravity="right"
android:gravity="center_horizontal"
android:adjustViewBounds="true"
android:maxWidth="350dp"
android:maxHeight="350dp"
android:scaleType="fitCenter"
android:background="@color/white"
android:src="@drawable/icon2"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
其他人建议修饰符掩码很可能与NSEvent modifier flags匹配,并提供以下Objective-C示例:
-- modifierMask = 131072 (shift)
-- modifierMask = 262144 (control)
-- modifierMask = 524288 (option)
-- modifierMask = 1048576 (command)
-- modifierMask = 786432 (control + option)
-- modifierMask = 393216 (control + shift)
-- modifierMask = 1310720 (control + command)
-- modifierMask = 1572864 (option + command)
-- modifierMask = 655360 (shift + option)
-- modifierMask = 1179648 (command + shift)
-- modifierMask = 917504 (control + shift + option)
-- modifierMask = 1703936 (option + command + shift)
-- modifierMask = 1835008 (control + option + command)
这看起来很有希望,但我对Objective-C一无所知,所以我只是想知道是否有人可以帮助我将这些Objective-C声明翻译成我可以在Lua中使用的东西?基本上我想创建一个输入modifierMask(即&#39; 131072&#39;)的Lua函数,并返回一个结果,告诉我modifierMask的含义(即&#39; shift&#39;)。有什么想法吗?
提前致谢!
答案 0 :(得分:0)
已回答here:
maskToTable = function(value)
local modifiers = {
AlphaShift = 1 << 16,
Shift = 1 << 17,
Control = 1 << 18,
Alternate = 1 << 19,
Command = 1 << 20,
NumericPad = 1 << 21,
Help = 1 << 22,
Function = 1 << 23,
}
local answer = {}
for k, v in pairs(modifiers) do
if (value & v) == v then
table.insert(answer, k)
end
end
return answer
end