从 KeySym 值中获取字符串值

Get string value out of a KeySym value

有没有办法从 KeySym 值中获取字符串值? 例如,出于 keyPrintable("a").

如果您知道 KeySym 值是 keyPrintable,您可以使用 key 属性 获取它。例如

KeySym kv = ... // something that yields a KeySym
str s = kv.key;

如果您不知道它是 keyPrintable,您可以检查它是否是使用该构造函数构建的,或者使用模式匹配。所以,要么

if (kv is keyPrintable) {
  // code that uses kv.key to get back the value
}

if (keyPrintable(str s) := kv) {
  // code that can now use s, which is the key
}

你也可以问问kv有没有那个字段,然后用:

if (kv has key) {
  // code that uses kv.key
}

一旦你在构造函数中引入了一个字段名,并且它有一个特定的类型,你就知道相同的字段名在相同数据类型的任何其他构造函数中具有相同的类型。因此,一旦我们知道字段 key 的类型为 str,字段 key 就必须是 KeySym 类型的任何值中的 str。这就是为什么可以查看 kv 是否具有字段 key 然后将其视为 str,之后没有人可以为 KeySym 添加新的构造函数,其中 key 有不同的类型。