Skip to content

Commit

Permalink
support switch shortcut between dvorak/colemak and hangul
Browse files Browse the repository at this point in the history
  • Loading branch information
yunitto committed Oct 21, 2018
1 parent c5b9073 commit a5cc59b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
21 changes: 14 additions & 7 deletions OSX/GureumComposer.swift
Expand Up @@ -64,8 +64,8 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [
var ioConnect: IOConnect

override init() {
romanComposer = CIMComposer()
qwertyComposer = QwertyComposer()
romanComposer = qwertyComposer
dvorakComposer = RomanDataComposer(keyboardData: RomanDataComposer.dvorakData)
colemakComposer = RomanDataComposer(keyboardData: RomanDataComposer.colemakData)
hangulComposer = HangulComposer(keyboardIdentifier: "2")!
Expand Down Expand Up @@ -93,10 +93,16 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [

if keyboardIdentifier == "qwerty" {
self.delegate = qwertyComposer
romanComposer = qwertyComposer
GureumConfiguration.shared().lastRomanInputMode = newValue
} else if keyboardIdentifier == "dvorak" {
self.delegate = dvorakComposer
romanComposer = dvorakComposer
GureumConfiguration.shared().lastRomanInputMode = newValue
} else if keyboardIdentifier == "colemak" {
self.delegate = colemakComposer
romanComposer = colemakComposer
GureumConfiguration.shared().lastRomanInputMode = newValue
} else {
self.delegate = hangulComposer
// 단축키 지원을 위해 마지막 자판을 기억
Expand Down Expand Up @@ -157,14 +163,14 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [
// }
// } else
// {

// Handle SpecialKeyCode first
switch keyCode {
case CIMInputControllerSpecialKeyCode.capsLockPressed.rawValue:
guard configuration.enableCapslockToToggleInputMode else {
return CIMInputTextProcessResult.processed
}

if self.delegate === qwertyComposer || self.delegate === hangulComposer {
if self.delegate === romanComposer || self.delegate === hangulComposer {
need_exchange = true
}
self.ioConnect.setCapsLockLed(false)
Expand Down Expand Up @@ -205,14 +211,15 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [
if need_exchange {
// 한영전환을 위해 현재 입력 중인 문자 합성 취소
self.delegate.cancelComposition()
if self.delegate === qwertyComposer {
if self.delegate === romanComposer {
var lastHangulInputMode = GureumConfiguration.shared().lastHangulInputMode
if lastHangulInputMode == nil {
lastHangulInputMode = GureumInputSourceIdentifier.han2
}
(sender as AnyObject).selectMode(lastHangulInputMode)
} else {
(sender as AnyObject).selectMode(GureumInputSourceIdentifier.qwerty)
let lastRomanInputMode = GureumConfiguration.shared().lastRomanInputMode
(sender as AnyObject).selectMode(lastRomanInputMode)
}
return CIMInputTextProcessResult.processed
}
Expand All @@ -227,7 +234,7 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [
if self.delegate === emoticonComposer {
if !emoticonComposer.mode {
self.emoticonComposer.mode = true
self.delegate = qwertyComposer
self.delegate = romanComposer
}
}

Expand All @@ -243,7 +250,7 @@ let GureumInputSourceToHangulKeyboardIdentifierTable: [String: String] = [
return CIMInputTextProcessResult.processed
}
// 영어 입력 상태에서 이모티콘 입력기로 전환
if self.delegate === qwertyComposer {
if self.delegate === romanComposer {
emoticonComposer.delegate = self.delegate
self.delegate = emoticonComposer
emoticonComposer.update(fromController: controller)
Expand Down
11 changes: 11 additions & 0 deletions OSX/GureumConfiguration.swift
Expand Up @@ -11,6 +11,7 @@ import AppKit

enum GureumConfigurationName: String {
case lastHangulInputMode = "CIMLastHangulInputMode"
case lastRomanInputMode = "CIMLastRomanInputMode"

case leftCommandKeyShortcutBehavior = "CIMLeftCommandKeyShortcutBehavior"
case leftOptionKeyShortcutBehavior = "CIMLeftOptionKeyShortcutBehavior"
Expand Down Expand Up @@ -67,6 +68,7 @@ enum GureumConfigurationName: String {
GureumConfigurationName.hangulWonCurrencySymbolForBackQuote.rawValue: true,
GureumConfigurationName.enableCapslockToToggleInputMode.rawValue: true,
GureumConfigurationName.lastHangulInputMode.rawValue: "org.youknowone.inputmethod.Gureum.han2",
GureumConfigurationName.lastRomanInputMode.rawValue: "org.youknowone.inputmethod.Gureum.qwerty",
])
}

Expand All @@ -90,6 +92,15 @@ enum GureumConfigurationName: String {
}
}

@objc public var lastRomanInputMode: String? {
get {
return self.string(forKey: GureumConfigurationName.lastRomanInputMode.rawValue)
}
set {
return self.set(newValue, forKey: GureumConfigurationName.lastRomanInputMode.rawValue)
}
}

@objc public var optionKeyBehavior: Int {
get {
return self.integer(forKey: GureumConfigurationName.optionKeyBehavior.rawValue)
Expand Down

0 comments on commit a5cc59b

Please sign in to comment.