A macOS input source switcher with user-defined shortcuts.

Related tags

macos swift input-method
Overview

logo

Kawa GitHub license GitHub release

A macOS input source switcher with user-defined shortcuts.

Demo

demo

Install

Using Homebrew

brew update
brew cask install kawa

Manually

The prebuilt binaries can be found in Releases.

Unzip Kawa.zip and move Kawa.app to Applications.

Caveats

CJKV input sources

There is a known bug in the macOS's Carbon library that switching keyboard layouts using TISSelectInputSource doesn't work well with complex input sources like CJKV.

Development

We use Carthage as a dependency manager. You can find the latest releases of Carthage here, or just install it with Homebrew.

$ brew update
$ brew install carthage

To clone the Git repository of Kawa and install dependencies:

$ git clone [email protected]:utatti/kawa.git
$ carthage bootstrap

After dependency installation, open the project with Xcode.

License

Kawa is released under the MIT License.

Issues
  • Implement workaround for a known CJK layout bug

    Implement workaround for a known CJK layout bug

    Fix #11

    It works like below:

    • Select an input source
    • If the source is CJK
      • Switch to English com.apple.keylayout.US
      • Wait for 0.05
      • Select previous source (in this case, the original source)
    opened by hatashiro 12
  • Select CJK input methods by pressing NEXT_INPUT_METHOD key

    Select CJK input methods by pressing NEXT_INPUT_METHOD key

    After upgrading to newer versions of macOS, the old workaround for CJK input methods are not working any more.

    I have tried with various of switching input methods, and found that:

    1. The "Select next source in input menu" shortcut works reliably.
    2. The TISCopyCurrentKeyboardInputSource can return currently selected method reliably if there is recent key stroke or window switch.

    So I have taken a policy by keep pressing "Select next source in input menu" until target input method has been switched to.

    There is a bug in macOS that, if one switches to different input methods in a very short time without doing any typing, the TISCopyCurrentKeyboardInputSource will return wrong result. I worked around it by remembering last selected input method, and use it as current input method if user is switching input methods too fast.

    Note that I don't really know much about Swift, please refactor the code if necessary.

    opened by zcbenz 7
  • Removes previous notifications when switching input source

    Removes previous notifications when switching input source

    Notification accumulates when switching input sources, you get tons of notifications in the Notification Center at the end of the day, it's quite annoying really.

    opened by TPeterW 4
  • Fix InputSource and Underline Styles. This resolves kawa/issues#3

    Fix InputSource and Underline Styles. This resolves kawa/issues#3

    @puttin from issue #3 provided a fix to an issue which prevented further development on El Capitan

    With this fix another error appeared at runtime while building. A fault when trying to apply an underline style to a link. I've resolved this issue.

    This pull request combines both fixes and allows a successful build.

    opened by jwmann 2
  • Deliver notification on input source change

    Deliver notification on input source change

    Also replace key to Settings with an enum

    opened by humblehacker 2
  • fix kawa is not working on Catalina

    fix kawa is not working on Catalina

    Hi, I tried kawa today and found it is not working on Catalina. (10.15.4) So I tried to find another workaround.

    When changing it between jp <-> zhTW, this steps works

    1. switch to nonCJK and wait 0.05s
    2. switch to nonCJK and wait 0.05s again
    3. switch to zhTW

    PS: I didn't test it on Korean input. Hope it works, too.

    opened by wangchou 1
  • update brew install command

    update brew install command

    brew recently disabled brew cask install and switch to brew install --cask.

    This PR updates the readme to use the new command.

    You can see others talking about the change here: https://github.com/ansible-collections/community.general/issues/1524

    opened by RayBB 1
  • Added Homebrew installation instructions

    Added Homebrew installation instructions

    Closes #15.

    opened by laughedelic 0
  • remove cask

    remove cask

    remove cask since it is old unsupported syntax

    opened by perehonchuk 0
  • fix brew install command

    fix brew install command

    opened by perehonchuk 0
Releases(v1.1.0)
A macOS input source switcher with user-defined shortcuts.

Kawa A macOS input source switcher with user-defined shortcuts. Demo Install Using Homebrew brew update brew cask install kawa Manually The prebuilt b

null 997 Jul 27, 2021
Menu Bar RSS reader for macOS

baRSS – Menu Bar RSS Reader What is it? A RSS & Atom feed reader that lives in the system status bar. Very much inspired by RSS Menu; go ahead and che

Helena Schobs 32 Jul 9, 2021
Mac Media Keys for the Masses

Common Issues It's asked that anyone with an issue check the Wiki Section before posting a new issue. Users Guide What? BeardedSpice allows you to con

null 2.7k Aug 4, 2021
MJML: the only framework that makes responsive-email easy

MJML 4 If you're looking for MJML 3.3.X check this branch | Translated documentation | Introduction | Installation | Usage | Contribute | Translated d

MJML 12.3k Jul 24, 2021
Keep your application settings in sync (OS X/Linux)

Mackup Keep your application settings in sync. Table of content Quickstart Usage What does it do Bullsh*t, what does it really do to my files Supporte

Laurent Raufaste 11.3k Aug 1, 2021
EnvPane - An OS X preference pane for environment variables

EnvPane - A macOS preference pane for environment variables EnvPane is a preference pane for Mac OS X (10.8 or newer) that lets you set environment va

Hannes Schmidt 544 Jul 24, 2021
🐢 Open terminal quickly from Finder

???????????? ???? ❤️ Support my app ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pastboard, note and short

Khoa 888 Jul 22, 2021
KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.

KeePassXC KeePassXC is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePass

KeePassXC 10.7k Jul 26, 2021
Find files with SQL-like queries

fselect Find files with SQL-like queries Why use fselect? While it doesn't tend to fully replace traditional find and ls, fselect has these nice featu

null 3k Jul 24, 2021
The missing Desktop application for Pushbullet.

PB for Desktop PB for Desktop is a lightweight open-source Desktop app for PushBullet. Receive native push notifications on macOS, Windows and Linux.

sidneys.github.io 468 Aug 2, 2021
ˈyːbɐˌzɪçt

Übersicht Keep an eye on what's happening on your machine and in the world. For general info check out the Übersicht website. Writing Widgets In essen

Felix 3.3k Jul 31, 2021
Web Debugging Proxy Application

This project is in maintenance mode Maintainers or forks welcome: the original James team aren't able to spend the same amount of time on James anymor

null 1.3k Jul 23, 2021
Vienna is a free and open-source RSS/Atom newsreader for macOS.

Vienna is an RSS/Atom reader for macOS. Vienna can connect directly to the websites you want to track. Additionally or alternatively, you can also syn

The Vienna RSS Project 1.4k Jul 23, 2021
iChm is a CHM reader for Mac OS X

iChm is a chm file reader for Mac OS X ###Developer Notes:### To build this fork of iChm (and its submodules), you’ll need at least Xcode 5.1 in OS X

Mark Douma 74 May 22, 2021