- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在关注 NSTextField 后,我尝试更改系统输入语言。我的系统中有 3 种输入语言:英语、俄语和捷克语 (QWERTY)。
我使用这个方法:
TISInputSourceRef ref = TISCopyInputSourceForLanguage(CFSTR("cs"));
TISSelectInputSource(ref);
它适用于俄语,但不适用于捷克语...捷克语语言标签是 cs
,俄语 - ru
。两小时前我做出了输出
NSLog("%@", ref);
打印一些有关捷克语的内容,但现在它只打印(null)
。我想完全使用 QWERTY,而不是 QWERTZ,但我真的无法在任何地方找到代表捷克语 QWERTY 布局的标签。苹果文档说:
If more than one such input source exists and at least one has been used, the most recently used input source is chosen.
但它总是选择英语,而不是捷克语!在控制台中,正如我之前所说,它打印 (null)
...那么我必须使用什么来选择捷克语?我为此浪费了大约 3 个小时...请帮忙。
最佳答案
我可以确认 TISCopyInputSourceForLanguage()
的行为不符合预期。您应该向 Apple 提交错误报告。
有一些解决方法,但首先:您是否尝试过设置文本字段单元格的 allowedInputSourceLocales
属性?由于指定了语言环境,我不确定它是否会将输入限制为捷克语、选择捷克语输入源,还是特别选择捷克语 QWERTY 输入源,但值得一试。
如果这没有帮助,那么我会在 TISCopyInputSourceForLanguage()
失败时编写后备代码。复制所有已启用的键盘布局输入源的列表,并在其中搜索支持捷克语作为语言的输入源。
TISInputSourceRef ref = TISCopyInputSourceForLanguage(CFSTR("cs"));
if (!ref)
{
NSDictionary* properties = @{ (__bridge NSString*)kTISPropertyInputSourceCategory: (__bridge NSString*)kTISCategoryKeyboardInputSource,
(__bridge NSString*)kTISPropertyInputSourceType: (__bridge NSString*)kTISTypeKeyboardLayout,
(__bridge NSString*)kTISPropertyInputSourceIsSelectCapable: @YES,
};
NSArray* sources = CFBridgingRelease(TISCreateInputSourceList((__bridge CFDictionaryRef)properties, NO));
for (id sourceObj in sources)
{
TISInputSourceRef source = (__bridge TISInputSourceRef)sourceObj;
NSArray* langs = (__bridge NSArray*)TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages);
if ([langs containsObject:@"cs"])
{
ref = source;
break;
}
}
}
TISSelectInputSource(ref);
您可以通过查找语言数组中“cs”最早出现的源来扩展此功能(如果多个源支持它)。
即使这样也不能保证您会获得捷克语输入源的 QWERTY 变体。如果您真的想要那个,具体来说,您应该使用它的输入源 ID,即“com.apple.keylayout.Czech-QWERTY”。
要找到那个,您可以使用:
NSDictionary* properties = @{ (__bridge NSString*)kTISPropertyInputSourceID: @"com.apple.keylayout.Czech-QWERTY" };
NSArray* sources = CFBridgingRelease(TISCreateInputSourceList((__bridge CFDictionaryRef)properties, NO));
TISInputSourceRef source = (__bridge TISInputSourceRef)sources.firstObject;
但是,您应该做好准备,该输入源将无法启用,甚至可能无法安装。 (Apple 可能会更改其 Czech-QWERTY 布局以使用不同的标识符或其他内容。)如果已安装但未启用,您可以通过在上述代码后添加如下代码来找到它:
if (!source)
{
properties = @{ (__bridge NSString*)kTISPropertyInputSourceID: @"com.apple.keylayout.Czech-QWERTY",
(__bridge NSString*)kTISPropertyInputSourceIsEnableCapable: @YES };
sources = CFBridgingRelease(TISCreateInputSourceList((__bridge CFDictionaryRef)properties, YES));
source = (__bridge TISInputSourceRef)sources.firstObject;
if (source && TISEnableInputSource(source) != noErr)
source = NULL;
}
请注意,未经用户许可启用输入源是对用户不利的。
关于xcode - TIS 服务 : selecting Czech,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184241/
近期比赛TIS-100以一个相当有趣的机器架构为中心,其中 CPU 由“节点”组成,这些节点可以与其相邻的邻居进行通信。不幸的是,我找不到公开讨论的引用手册的官方链接,但总而言之,每个节点都支持一个非
在关注 NSTextField 后,我尝试更改系统输入语言。我的系统中有 3 种输入语言:英语、俄语和捷克语 (QWERTY)。 我使用这个方法: TISInputSourceRef ref = TI
我在保存用户名和密码时遇到问题。注册后,用户在注册页面获取用户名和密码。我想将此用户名和密码存储为变量,以便稍后使用。这适用于 Selenium IDE 中的存储文本和 javascript,但不适用
我正在尝试使用代码 tis-620 读取泰国网站并将结果转换为 utf-8,以便我可以上传到任何数据库。 我注意到 beautifulsoup 的行为。 简单的例子 来源: """http-equiv
我正在编写一个 python 应用程序,其主要目的是在我使用热键(当前使用“键盘”库)时运行一个迷你游戏(使用“pygame”库)。我希望这个热键被普遍识别,所以我将整个东西打包为一个状态栏应用程序(
我是一名优秀的程序员,十分优秀!