Skip to content

Commit

Permalink
implement feature #64 - auto write uppercase for first letter
Browse files Browse the repository at this point in the history
  • Loading branch information
tuyenvm committed Aug 13, 2019
1 parent 2315b57 commit 67043d0
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 5 deletions.
Binary file modified Images/screenshot1.2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ Bộ gõ tiếng Việt mới cho macOS, sử dụng kỹ thuật backkey. Loạ
- **Autocorrect fixed** (On/Off) - Sửa lỗi autocorrect trên trình duyệt như Chrome, Safari, Firefox, Microsoft Excel.
- **Underline issue fixed on macOS** - Sửa lỗi gạch chân trên macOS.
- **Macro** - Tính năng gõ tắt vô cùng tiện lợi. Gõ tắt của macOS chỉ hỗ trợ 20 ký tự, còn OpenKey không giới hạn ký tự.
- **Tự động ghi nhớ ngôn ngữ cho từng ứng dụng:** (Có trên bản >1.2). Bạn đang dùng chế độ gõ Tiếng Việt trên ứng dụng A, bạn chuyển qua ứng dụng B trước đó bạn dùng chế độ gõ Tiếng Anh, OpenKey sẽ tự động chuyển qua chế độ gõ Tiếng Anh cho bạn, khi bạn quay lại ứng dụng A, OpenKey tất nhiên sẽ chuyển lại chế độ gõ tiếng Việt, rất cơ động.
- **Chế độ “Gửi từng phím”:** OpenKey bản mới >1.1 mặc định dùng kỹ thuật mới gửi dữ liệu 1 lần thay vì gửi nhiều lần cho chuỗi ký tự, nên nếu có ứng dụng nào không tương thích, hãy bật tính năng này lên, mặc định thì nên tắt vì kỹ thuật mới sẽ chạy nhanh hơn.
- **Chuyển chế độ thông minh:** (on/off) (Bản 1.2 về sau) - Bạn đang dùng chế độ gõ Tiếng Việt trên ứng dụng A, bạn chuyển qua ứng dụng B trước đó bạn dùng chế độ gõ Tiếng Anh, OpenKey sẽ tự động chuyển qua chế độ gõ Tiếng Anh cho bạn, khi bạn quay lại ứng dụng A, OpenKey tất nhiên sẽ chuyển lại chế độ gõ tiếng Việt, rất cơ động.
- **Viết Hoa chữ cái đầu câu** (on/off) (Bản 1.2 về sau) - Khi gõ văn bản dài, đôi khi bạn quên ghi hoa chữ cái đầu câu khi kết thúc một câu hoặc khi xuống hàng, tính năng này sẽ tự ghi hoa chữ cái đầu câu cho bạn, thật tuyệt vời.
- **Chế độ “Gửi từng phím”:** (Bản 1.1 về sau) mặc định dùng kỹ thuật mới gửi dữ liệu 1 lần thay vì gửi nhiều lần cho chuỗi ký tự, nên nếu có ứng dụng nào không tương thích, hãy bật tính năng này lên, mặc định thì nên tắt vì kỹ thuật mới sẽ chạy nhanh hơn.
- ...

### Download Binary - Tải xuống:
Expand Down
1 change: 1 addition & 0 deletions Sources/OpenKey/engine/DataType.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ struct vKeyHookState {

#define KEY_LEFT_SHIFT 57
#define KEY_RIGHT_SHIFT 60
#define KEY_DOT 47

//internal engine data
#define CAPS_MASK 0x10000
Expand Down
33 changes: 32 additions & 1 deletion Sources/OpenKey/engine/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

static vector<Uint8> _charKeyCode = {
50, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, 25, 29, 27, 24, KEY_LEFT_BRACKET, KEY_RIGHT_BRACKET, 42,
41, 39, 43, 47, 44
41, 39, 43, KEY_DOT, 44
};

static vector<Uint8> _breakCode = {
Expand Down Expand Up @@ -96,6 +96,7 @@ static bool isCheckedGrammar;
static bool _isCaps = false;
static int _spaceCount = 0; //add: July 30th, 2019
static bool _hasHandledMacro = false; //for macro flag August 9th, 2019
static Byte _upperCaseStatus = 0; //for Write upper case for the first letter; 2: will upper case

//function prototype
void findAndCalculateVowel(const bool& forGrammar=false);
Expand Down Expand Up @@ -638,6 +639,7 @@ void insertD(const Uint16& data, const bool& isCaps) {
if (TypingWord[ii] & TONE_MASK) {
//restore and disable temporary
hCode = vRestore;
TypingWord[ii] &= ~TONE_MASK;
hData[_index - 1 - ii] = TypingWord[ii];
tempDisableKey = true;
break;
Expand Down Expand Up @@ -857,6 +859,17 @@ void checkForStandaloneChar(const Uint16& data, const bool& isCaps, const Uint32
insertKey(data, isCaps);
}

void upperCaseFirstCharacter() {
if (!(TypingWord[0] & CAPS_MASK)) {
hCode = vWillProcess;
hBPC = 0;
hNCC = 1;
TypingWord[0] |= CAPS_MASK;
hData[0] = GET(TypingWord[0]);
_upperCaseStatus = 0;
}
}

void handleMainKey(const Uint16& data, const bool& isCaps) {
//if is Z key, remove mark
if (IS_KEY_Z(data)) {
Expand Down Expand Up @@ -1087,6 +1100,14 @@ void vKeyHandleEvent(const vKeyEvent& event,
}
}

if (vUpperCaseFirstChar) {
if (data == KEY_DOT)
_upperCaseStatus = 1;
else if (data == KEY_ENTER || data == KEY_RETURN)
_upperCaseStatus = 2;
else
_upperCaseStatus = 0;
}
} else if (data == KEY_SPACE) {
if (!tempDisableKey && vCheckSpelling) {
checkSpelling(true); //force check spelling
Expand All @@ -1108,6 +1129,9 @@ void vKeyHandleEvent(const vKeyEvent& event,
if (vUseMacro) {
hMacroKey.clear();
}
if (vUpperCaseFirstChar && _upperCaseStatus == 1) {
_upperCaseStatus = 2;
}
} else if (data == KEY_DELETE) {
hCode = vDoNothing;
if (_spaceCount > 0) { //previous char is space
Expand Down Expand Up @@ -1188,6 +1212,13 @@ void vKeyHandleEvent(const vKeyEvent& event,
}
}
}

if (vUpperCaseFirstChar) {
if (_index == 1 && _upperCaseStatus == 2) {
upperCaseFirstCharacter();
}
_upperCaseStatus = 0;
}
}

//Debug
Expand Down
7 changes: 7 additions & 0 deletions Sources/OpenKey/engine/Engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,13 @@ extern int vUseMacroInEnglishMode;
*/
extern int vUseSmartSwitchKey;

/**
* Auto write upper case character for first letter.
* 0: No
* 1: Yes
*/
extern int vUpperCaseFirstChar;

/**
* Call this function first to receive data pointer
*/
Expand Down
3 changes: 3 additions & 0 deletions Sources/OpenKey/macOS/ModernKey/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
int vUseMacroInEnglishMode = 1;
int vSendKeyStepByStep = 0;
int vUseSmartSwitchKey = 0;
int vUpperCaseFirstChar = 0;

@interface AppDelegate ()

Expand Down Expand Up @@ -88,6 +89,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
vUseMacroInEnglishMode = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"UseMacroInEnglishMode"];
vSendKeyStepByStep = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"SendKeyStepByStep"];
vUseSmartSwitchKey = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"UseSmartSwitchKey"];
vUpperCaseFirstChar = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"UpperCaseFirstChar"];

//init
dispatch_async(dispatch_get_main_queue(), ^{
Expand Down Expand Up @@ -173,6 +175,7 @@ -(void)loadDefaultConfig {
vUseMacroInEnglishMode = 0; [[NSUserDefaults standardUserDefaults] setInteger:vUseMacroInEnglishMode forKey:@"UseMacroInEnglishMode"];
vSendKeyStepByStep = 0;[[NSUserDefaults standardUserDefaults] setInteger:vUseMacroInEnglishMode forKey:@"SendKeyStepByStep"];
vUseSmartSwitchKey = 0;[[NSUserDefaults standardUserDefaults] setInteger:vUseSmartSwitchKey forKey:@"UseSmartSwitchKey"];
vUpperCaseFirstChar = 0;[[NSUserDefaults standardUserDefaults] setInteger:vUpperCaseFirstChar forKey:@"UpperCaseFirstChar"];

[self fillData];
[viewController fillData];
Expand Down
16 changes: 14 additions & 2 deletions Sources/OpenKey/macOS/ModernKey/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -1090,16 +1090,27 @@
</connections>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YGb-a8-1Lb">
<rect key="frame" x="9" y="82" width="386" height="18"/>
<rect key="frame" x="9" y="82" width="198" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Tự động ghi nhớ và chuyển chế độ gõ cho từng ứng dụng" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OF9-V8-caS">
<buttonCell key="cell" type="check" title="Chuyển chế độ thông minh" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OF9-V8-caS">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="onAutoRememberSwitchKey:" target="XfG-lQ-9wD" id="Ghi-2i-Y6n"/>
</connections>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Adl-fG-XEu">
<rect key="frame" x="266" y="82" width="198" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Viết Hoa chữ cái đầu câu" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="2Gh-Ll-jA8">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="onUpperCaseFirstChar:" target="XfG-lQ-9wD" id="QFl-JY-GEA"/>
</connections>
</button>
</subviews>
</view>
<font key="titleFont" metaFont="system"/>
Expand Down Expand Up @@ -1249,6 +1260,7 @@
<outlet property="RunOnStartupButton" destination="Leg-Yg-XFR" id="oRL-up-vyq"/>
<outlet property="SendKeyStepByStep" destination="C8z-Sp-sdZ" id="eSj-4I-pDf"/>
<outlet property="ShowUIButton" destination="Xle-7k-yIf" id="dbk-Zf-T4j"/>
<outlet property="UpperCaseFirstChar" destination="Adl-fG-XEu" id="b4x-Cc-Trs"/>
<outlet property="UseGrayIcon" destination="HEa-Qp-9qT" id="ApG-gR-H4l"/>
<outlet property="UseMacro" destination="eCY-Z0-cgW" id="0z8-vh-VlK"/>
<outlet property="UseMacroInEnglishMode" destination="0oj-fd-y0l" id="rD2-9a-ehn"/>
Expand Down
1 change: 1 addition & 0 deletions Sources/OpenKey/macOS/ModernKey/ViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@

@property (weak) IBOutlet NSButton *SendKeyStepByStep;
@property (weak) IBOutlet NSButton *AutoRememberSwitchKey;
@property (weak) IBOutlet NSButton *UpperCaseFirstChar;

@property (weak) IBOutlet NSImageView *cursorImage;

Expand Down
8 changes: 8 additions & 0 deletions Sources/OpenKey/macOS/ModernKey/ViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
extern int vUseMacroInEnglishMode;
extern int vSendKeyStepByStep;
extern int vUseSmartSwitchKey;
extern int vUpperCaseFirstChar;

@implementation ViewController {
__weak IBOutlet NSButton *CustomSwitchCommand;
Expand Down Expand Up @@ -233,6 +234,10 @@ - (IBAction)onAutoRememberSwitchKey:(NSButton *)sender {
vUseSmartSwitchKey = (int)val;
}

- (IBAction)onUpperCaseFirstChar:(NSButton *)sender {
NSInteger val = [self setCustomValue:sender keyToSet:@"UpperCaseFirstChar"];
vUpperCaseFirstChar = (int)val;
}

- (IBAction)onTerminateApp:(id)sender {
[NSApp terminate:0];
Expand Down Expand Up @@ -293,6 +298,9 @@ -(void)fillData {
NSInteger useSmartSwitchKey = [[NSUserDefaults standardUserDefaults] integerForKey:@"UseSmartSwitchKey"];
self.AutoRememberSwitchKey.state = useSmartSwitchKey ? NSControlStateValueOn : NSControlStateValueOff;

NSInteger upperCaseFirstChar = [[NSUserDefaults standardUserDefaults] integerForKey:@"UpperCaseFirstChar"];
self.UpperCaseFirstChar.state = upperCaseFirstChar ? NSControlStateValueOn : NSControlStateValueOff;

CustomSwitchControl.state = (vSwitchKeyStatus & 0x100) ? NSControlStateValueOn : NSControlStateValueOff;
CustomSwitchOption.state = (vSwitchKeyStatus & 0x200) ? NSControlStateValueOn : NSControlStateValueOff;
CustomSwitchCommand.state = (vSwitchKeyStatus & 0x400) ? NSControlStateValueOn : NSControlStateValueOff;
Expand Down

0 comments on commit 67043d0

Please sign in to comment.