代码之家  ›  专栏  ›  技术社区  ›  Ilya Birman

Cocoa:学习当前选定的键盘布局/输入语言

  •  5
  • Ilya Birman  · 技术社区  · 15 年前

    如何学习当前选定的键盘布局/输入语言?

    我和nsinputmanager玩过,但没能取得任何成绩。

    [NSInputManager currentInputManager]
    

    返回(空)(用%@报告)因此

    [[NSInputManager currentInputManager] localizedInputManagerName]
    

    对于我来说,最好是返回一个两个字母缩写的语言使用,如en或fr,但键盘布局名称显示在菜单栏也将工作。

    有什么想法吗?谢谢。

    编辑: 我还发现一个appleselectedInputSourceShangedNotification被发布到

    [NSDistributedNotificationCenter defaultCenter]
    

    但是,当用户更改布局时,关于新选择的布局的任何信息都不会附加到此通知中。

    1 回复  |  直到 10 年前
        1
  •  13
  •   Nicholas Riley    15 年前

    键盘布局到语言的组合通常是一对多的,因此,虽然您可以获取当前选定键盘布局的本地化名称(或者,更一般地说,输入源),但源可以用于在多种语言中键入文本。你为什么要这样做?

    也就是说,您可以使用 Text Input Source Services . 例如:

      TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
      NSLog(@"languages: %@",
            TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages));
      NSLog(@"localized name: %@",
            TISGetInputSourceProperty(source, kTISPropertyLocalizedName));
    

    给我:

    2009-04-23 14:30:17.581 sample[30688:10b] languages: (
        en,
        ca,
        da,
        de,
        es,
        eu,
        fr,
        ga,
        gl,
        gv,
        id,
        it,
        kw,
        ms,
        nb,
        nl,
        nn,
        om,
        pt,
        so,
        sq,
        sv,
        sw
    )
    2009-04-23 14:30:17.584 sample[30688:10b] localized name: U.S.