Mapping various keyboard layout sources and key codes in macOS. (e.g.: QWERTY, Dvorak)
Only the ANSI-standard US keyboard is defined for the key code defined in Carbon.framework. Therefore, we can obtain only the key code of the QWERTY keyboard layout. (e.g.:
In layout other than QWERTY, (e.g. Dvorak) the virtual key code is different.
| Keyboard Layout | Key | Key Code | | :---------------: | :---: | :--------: | | QWERTY | v | 9 | | Dvorak | v | 47 |
This library is created with the purpose of mapping the key code of the input sources and making it possible to obtain the correct key code in various keyboard layouts.
Get the key code of the current input source.
let keyCode = Sauce.shared.keyCode(by: .v)
Get ASCII capable input source list.
let sources = Sauce.shared.ASCIICapableInputSources()
Get key code corresponding to input source.
let keyCode = Sauce.shared.keyCode(with: inputSource, key: .v)
Get the character of the current input source.
let character = Sauce.shared.character(by: keyCode, modifiers: modifiers)
However, since character strings can only be acquired in an ASCII Capable layout, we recommend using this.
let character = Sauce.shared.currentASCIICapableCharacter(by: keyCode, modifiers: modifiers)
SauceEnabledKeyboardInputSoucesChanged is the same as
kTISNotifyEnabledKeyboardInputSourcesChanged in Carbon.framework
SauceSelectedKeyboardInputSourceChanged is different from
kTISNotifySelectedKeyboardInputSourceChanged and is notified only when the input source id has changed.
Since it is filtered and notified, please do not use it for the same purpose as normal
- Fork it ( https://github.com/Clipy/Sauce/fork )
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request
Help us keep the lights on
v1.1.0 - May 6, 2019
- Update swift5 and Xcode10.2 ( #4 )
v1.0.1 - May 6, 2019
Key.init?(QWERTYKeyCode keyCode: Int). ( #3 )
- Fix source change notification may not work. ( #2 )
v1.0.0 - Aug 8, 2018
- Add translate key code to character methods.
v0.0.1 - Jul 31, 2018
Beta version release 🎉