Git Product home page Git Product logo

goxkey's Introduction


image

Build and Tests

Gõkey - A Vietnamese input method editor.

  • ⚡ Excellent performance (Gen Z translation: Blazing fast!)
  • 🦀 Written completely in Rust.
  • ⌨️ Supported both Telex and VNI input method.
  • ✨ Focused on typing experience and features that you will use.

Why another Vietnamese IME?

technical curiosity

About

This is my attempt to build an input method editor using only Rust. It's not the first, and definitely not the last.

The goal is to create an input method editor that enable users to type Vietnamese text on the computer using either VNI or TELEX method. Other than that, no other features are planned.

How to install

There are 2 options to download GõKey at this moment: Build from source or Download the Nightly build.

Option 1: Download the Nightly Build

Nightly build is the prebuilt binary that automatically bundled everytime we merged the code to the main branch.

You can download it at the Release page here: https://github.com/huytd/goxkey/releases/tag/nightly-build

Option 2: Build from source

The source code can be compiled easily:

  1. Get the latest stable version of the Rust compiler (see here)

  2. Install the cargo-bundle extension, this is necessary for bundling macOS apps

  3. Checkout the source code of the gõkey project

    git clone https://github.com/huytd/goxkey && cd goxkey
    
  4. Run the bundle command:

    cargo bundle
    

After that, you'll find the Gõ Key.app file in the target/debug/bundle folder. Copy it to your /Applications folder.

  1. (Important!): Before you run the app, make you you already allowed Accessibility access for the app. Follow the guide in the Wiki to do so.

Without this step, the app will crash and can't be use.

Dependencies

Want to support the project?

It would be much appreciated if you want to make a small donation to support my work!

Your name will be put on a special place in the application as a thank you gesture from the development team!

ko-fi

Fun fact

Do you know how to type gõkey in Telex?

Do this: gox<cmd>key

goxkey's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

goxkey's Issues

UI: Detect when Secure Keyboard Input happen and tell the user

Apps that deal with keyboard input, like IMEs or Hammerspoon, usually suffer from losing access to all keyboard input when Secure Keyboard Input happens. This makes the user unable to type in Vietnamese, as well as not able to toggle the input mode using the shortcut keys.

Secure Keyboard Input is a macOS feature that will disable keyboard access for 3rd party apps when the user is in a private field like password input. See Apple's technical note on this topic for more details.

Fig's documentation has some note on how to deal with Secure Keyboard Input, and we should have the same thing https://fig.io/docs/support/secure-keyboard-input

Port cho Windows

Mình hi vọng sớm có 1 bản port cho Windows để trải nghiệm. Cảm ơn tác giả

Đặt dấu dưới âm phụ?

This is the result that I got from typing "Vịêt Nam", according to my personal experience and this article and this

Quy tắc 3. Với những âm tiết có hai con chữ nguyên âm và kết thúc bằng một con chữ phụ âm hoặc tổ hợp con chữ phụ âm, thì dấu thanh được đặt vào con chữ nguyên âm chót. Ví dụ:

I think it's an issue.

The expected result should be "Việt Nam" đặt dấu ở ê thay vì i vì ê là nguyên âm chót.

CleanShot 2023-03-12 at 17 24 11@2x

Cho phép chỉ sử dụng modifiers key làm phím tắt

Hiện tại bộ gõ yêu cầu cấu hình phím tắt gồm modifiers key và một phím kí tự bất kì.

Việc yêu cầu thêm một phím kí tự bất kì nên được bỏ qua, để chỉ sử dụng modifiers làm phím tắt, ví dụ Cmd + Shift hoặc Ctrl + Shift như Unikey/Vietkey.

Menu Bar App Icon?

I find it confusing when the app doesn't have a menu bar app icon. I couldn't

  • Know or check back which language mode I am currently using.
  • Update settings quickly using the mouse

If I want to add the menu bar app icon myself for MacOS. Where should I start?

UI: Implement system tray icon and menu

The system tray should have the icon to show the current Vietnamese/English mode. As well as some menu item to display the control panel, quit the app, quickly toggle typing mode,...

Feat: Bật tắt chế độ gõ tiếng Việt tự động theo từng ứng dụng

Chức năng này khá phổ bíên trong nhiều bộ gõ. Tuy nhiên đa phần các bộ gõ không cho phép người dùng theo dõi xem app nào đang được track theo chế độ gõ nào, nên cảm giác khi xài khá phìên phức.

GõKey có plan implement chức năng này kèm theo một hộp thoại để list ra danh sách các app + chế độ gõ được track, và người dùng có thể thay đổi chế độ gõ trên bảng đìêu khiển này. Như mockup bên dưới:

image

Lỗi: Không bật được cửa sổ GõKey sau khi tắt

Steps to reproduce:

  1. Khởi động GõKey
  2. Tắt cửa sổ GõKey bằng nút x màu đỏ trên title bar
  3. Bấm vào icon trên thanh Dock để mở lại cửa sổ GõKey

Expected:

  • Cửa sổ GõKey xuất hiện trở lại

Actual:

  • Cửa sổ GõKey một đi không trở lại

Cho gõ kiểu cũ

Gõ cộng hòa thay vì cộng hoà (trường hợp đặt dấu ở cuối chữ)
Gõ tuyf sẽ ra tùy thay vì tuỳ

Crash khi vừa mở ứng dụng

Screen Shot 2023-03-25 at 22 55 47

Screen Shot 2023-03-25 at 22 55 02

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               goxkey [19124]
Path:                  /Applications/Gõ Key.app/Contents/MacOS/goxkey
Identifier:            com.goxkey.ui
Version:               0.0.1 (20230320.232415)
Code Type:             X86-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2023-03-25 22:49:30.2065 +0700
OS Version:            macOS 12.6 (21G115)
Report Version:        12
Bridge OS Version:     6.6 (19P6067)
Anonymous UUID:        0D9F6076-70EB-178D-66C7-4CC2A91A4E21

Sleep/Wake UUID:       C55E8367-874A-4926-80EB-AB3BE843DF41

Time Awake Since Boot: 57000 seconds
Time Since Wake:       1405 seconds

System Integrity Protection: enabled

Crashed Thread:        0  main  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process:   exc handler [19124]

VM Region Info: 0 is not in any region.  Bytes before following region: 4315750400
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      1013d2000-10168e000    [ 2800K] r-x/r-x SM=COW  .../MacOS/goxkey

Thread 0 Crashed:: main Dispatch queue: com.apple.main-thread
0   CoreFoundation                	    0x7ff807f3590d CFDataGetBytePtr + 6
1   goxkey                        	       0x10153622f rdev::macos::keyboard::Keyboard::string_from_code::h30a5b8c915d6f05f + 63
2   goxkey                        	       0x101536367 _$LT$rdev..macos..keyboard..Keyboard$u20$as$u20$rdev..rdev..KeyboardState$GT$::add::h86a93639157b1a20 + 119
3   goxkey                        	       0x101422fe2 goxkey::input::build_keyboard_layout_map::h432c08493bce46be + 306
4   goxkey                        	       0x10142332a goxkey::input::rebuild_keyboard_layout_map::h74d69ad26f4a8a05 + 362
5   goxkey                        	       0x10143d3c7 goxkey::main::h64da65ddf89dbedb + 39
6   goxkey                        	       0x1014099a6 std::sys_common::backtrace::__rust_begin_short_backtrace::h30ab29c12f42fe74 + 6
7   goxkey                        	       0x10143e02c std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h659a2a62d2f5f24f + 12
8   goxkey                        	       0x1015d5e20 std::rt::lang_start_internal::h72dc55d09e0a2397 + 784
9   goxkey                        	       0x10143d7fc main + 44
10  dyld                          	       0x107f9e52e start + 462

Thread 1:
0   libsystem_pthread.dylib       	    0x7ff807ecdf48 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib       	    0x7ff807ecdf48 start_wqthread + 0


Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000000  rcx: 0xf673e0bd3b5700c4  rdx: 0x00007ff849cf0f58
  rdi: 0x0000000000000000  rsi: 0x00007ff849cf0e98  rbp: 0x00007ff7beb2cf00  rsp: 0x00007ff7beb2ce98
   r8: 0x00007ff7beb2ce30   r9: 0x000000000000dc37  r10: 0x00007ff810ed486b  r11: 0x2bbf1914c968046a
  r12: 0x0000000000000000  r13: 0x00007f928ab0a360  r14: 0x00007ff7beb2d058  r15: 0x00007ff7beb2d030
  rip: 0x00007ff807f3590d  rfl: 0x0000000000010246  cr2: 0x0000000000000000
  
Logical CPU:     4
Error Code:      0x00000004 (no mapping for user data read)
Trap Number:     14

Thread 0 instruction stream:
  00 48 8b 5d 80 48 85 db-74 0f 48 8d 3d 62 cd ca  .H.].H..t.H.=b..
  42 e8 1e 79 fe ff 48 89-03 31 db 48 8b 7d 88 e8  B..y..H..1.H.}..
  b7 e8 fe ff 48 8b 05 50-fc af 42 48 8b 00 48 3b  ....H..P..BH..H;
  45 d0 75 14 89 d8 48 81-c4 88 00 00 00 5b 41 5c  E.u...H......[A\
  41 5d 41 5e 41 5f 5d c3-e8 f0 60 1a 00 90 90 90  A]A^A_]...`.....
  90 90 90 90 90 90 90 90-90 90 40 f6 c7 01 75 35  [email protected]
 [48]8b 07 48 85 c0 74 1f-48 8b 0d 24 9b 72 41 48  H..H..t.H..$.rAH	<==
  39 c8 74 13 a8 01 74 1d-48 8b 15 ac 05 b0 42 48  9.t...t.H.....BH
  23 02 48 39 c8 75 0e 48-8b 47 08 a8 04 75 13 48  #.H9.u.H.G...u.H
  8b 7f 28 eb 15 48 8b 35-3f 2a 72 41 ff 25 29 06  ..(..H.5?*rA.%).
  b0 42 48 83 c7 3f 48 83-e7 f0 48 89 f8 c3 90 90  .BH..?H...H.....
  90 90 90 90 90 90 90 90-90 90 90 90 90 55 41 57  .............UAW

Binary Images:
    0x7ff807f19000 -     0x7ff80841bfff com.apple.CoreFoundation (6.9) <93c48919-68af-367e-9a67-db4159bc962c> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x1013d2000 -        0x10168dfff com.goxkey.ui (0.0.1) <0a2e292d-c2e4-372a-8a22-eeb41a21b2bb> /Applications/Gõ Key.app/Contents/MacOS/goxkey
       0x107f99000 -        0x108004fff dyld (*) <71febccd-d9dc-3599-9971-2b3407c588a8> /usr/lib/dyld
    0x7ff807ecc000 -     0x7ff807ed7fff libsystem_pthread.dylib (*) <b5454e27-e8c7-3fdb-b77f-714f1e82e70b> /usr/lib/system/libsystem_pthread.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=830.2M resident=0K(0%) swapped_out_or_unallocated=830.2M(100%)
Writable regions: Total=137.5M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=137.5M(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
Dispatch continuations            64.0M        1 
Kernel Alloc Once                    8K        1 
MALLOC                            64.1M       20 
MALLOC guard page                   16K        4 
ObjC additional data                15K        1 
STACK GUARD                          8K        2 
Stack                             9228K        3 
Stack Guard                       56.0M        1 
VM_ALLOCATE                        144K        5 
__DATA                            15.2M      240 
__DATA_CONST                      11.1M      149 
__DATA_DIRTY                       485K       86 
__FONT_DATA                          4K        1 
__LINKEDIT                       646.4M        8 
__TEXT                           183.8M      259 
__UNICODE                          592K        1 
dyld private memory               1024K        1 
mapped file                       36.6M        5 
shared memory                      212K       10 
===========                     =======  ======= 
TOTAL                              1.1G      799 



-----------
Full Report
-----------

{"app_name":"goxkey","timestamp":"2023-03-25 22:49:30.00 +0700","app_version":"0.0.1","slice_uuid":"0a2e292d-c2e4-372a-8a22-eeb41a21b2bb","build_version":"20230320.232415","platform":1,"bundleID":"com.goxkey.ui","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.6 (21G115)","incident_id":"0741A85C-5CD1-4D83-85F7-CD5086F1DED5","name":"goxkey"}
{
  "uptime" : 57000,
  "procLaunch" : "2023-03-25 22:49:30.1484 +0700",
  "procRole" : "Default",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro16,3",
  "procStartAbsTime" : 57511529401194,
  "coalitionID" : 13302,
  "osVersion" : {
    "train" : "macOS 12.6",
    "build" : "21G115",
    "releaseType" : "User"
  },
  "captureTime" : "2023-03-25 22:49:30.2065 +0700",
  "incident" : "0741A85C-5CD1-4D83-85F7-CD5086F1DED5",
  "bug_type" : "309",
  "pid" : 19124,
  "procExitAbsTime" : 57511586874411,
  "cpuType" : "X86-64",
  "procName" : "goxkey",
  "procPath" : "\/Applications\/Gõ Key.app\/Contents\/MacOS\/goxkey",
  "bundleInfo" : {"CFBundleShortVersionString":"0.0.1","CFBundleVersion":"20230320.232415","CFBundleIdentifier":"com.goxkey.ui"},
  "storeInfo" : {"deviceIdentifierForVendor":"D3A6A81B-72BE-5212-B718-1E3AEE5B8E68","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "com.goxkey.ui",
  "crashReporterKey" : "0D9F6076-70EB-178D-66C7-4CC2A91A4E21",
  "wakeTime" : 1405,
  "bridgeVersion" : {"build":"19P6067","train":"6.6"},
  "sleepWakeUUID" : "C55E8367-874A-4926-80EB-AB3BE843DF41",
  "sip" : "enabled",
  "vmRegionInfo" : "0 is not in any region.  Bytes before following region: 4315750400\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      __TEXT                      1013d2000-10168e000    [ 2800K] r-x\/r-x SM=COW  ...\/MacOS\/goxkey",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000001, 0x0000000000000000","rawCodes":[1,0],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000000000000000"},
  "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":19124},
  "vmregioninfo" : "0 is not in any region.  Bytes before following region: 4315750400\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      __TEXT                      1013d2000-10168e000    [ 2800K] r-x\/r-x SM=COW  ...\/MacOS\/goxkey",
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"queue":"com.apple.main-thread","instructionState":{"instructionStream":{"bytes":[0,72,139,93,128,72,133,219,116,15,72,141,61,98,205,202,66,232,30,121,254,255,72,137,3,49,219,72,139,125,136,232,183,232,254,255,72,139,5,80,252,175,66,72,139,0,72,59,69,208,117,20,137,216,72,129,196,136,0,0,0,91,65,92,65,93,65,94,65,95,93,195,232,240,96,26,0,144,144,144,144,144,144,144,144,144,144,144,144,144,64,246,199,1,117,53,72,139,7,72,133,192,116,31,72,139,13,36,155,114,65,72,57,200,116,19,168,1,116,29,72,139,21,172,5,176,66,72,35,2,72,57,200,117,14,72,139,71,8,168,4,117,19,72,139,127,40,235,21,72,139,53,63,42,114,65,255,37,41,6,176,66,72,131,199,63,72,131,231,240,72,137,248,195,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,85,65,87],"offset":96}},"frames":[{"imageOffset":117005,"symbol":"CFDataGetBytePtr","symbolLocation":6,"imageIndex":0},{"imageOffset":1458735,"symbol":"rdev::macos::keyboard::Keyboard::string_from_code::h30a5b8c915d6f05f","symbolLocation":63,"imageIndex":1},{"imageOffset":1459047,"symbol":"_$LT$rdev..macos..keyboard..Keyboard$u20$as$u20$rdev..rdev..KeyboardState$GT$::add::h86a93639157b1a20","symbolLocation":119,"imageIndex":1},{"imageOffset":331746,"symbol":"goxkey::input::build_keyboard_layout_map::h432c08493bce46be","symbolLocation":306,"imageIndex":1},{"imageOffset":332586,"symbol":"goxkey::input::rebuild_keyboard_layout_map::h74d69ad26f4a8a05","symbolLocation":362,"imageIndex":1},{"imageOffset":439239,"symbol":"goxkey::main::h64da65ddf89dbedb","symbolLocation":39,"imageIndex":1},{"imageOffset":227750,"symbol":"std::sys_common::backtrace::__rust_begin_short_backtrace::h30ab29c12f42fe74","symbolLocation":6,"imageIndex":1},{"imageOffset":442412,"symbol":"std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h659a2a62d2f5f24f","symbolLocation":12,"imageIndex":1},{"imageOffset":2113056,"symbol":"std::rt::lang_start_internal::h72dc55d09e0a2397","symbolLocation":784,"imageIndex":1},{"imageOffset":440316,"symbol":"main","symbolLocation":44,"imageIndex":1},{"imageOffset":21806,"symbol":"start","symbolLocation":462,"imageIndex":2}],"id":572287,"triggered":true,"threadState":{"r13":{"value":140267368784736},"rax":{"value":0},"rflags":{"value":66118},"cpu":{"value":4},"r14":{"value":140702033039448},"rsi":{"value":140704366923416},"r8":{"value":140702033038896},"cr2":{"value":0},"rdx":{"value":140704366923608},"r10":{"value":140703412602987},"r9":{"value":56375},"r15":{"value":140702033039408},"rbx":{"value":0},"trap":{"value":14,"description":"(no mapping for user data read)"},"err":{"value":4},"r11":{"value":3152265841251714154},"rip":{"value":140703262005517,"matchesCrashFrame":1},"rbp":{"value":140702033039104},"rsp":{"value":140702033039000},"r12":{"value":0},"rcx":{"value":17758784859000996036},"flavor":"x86_THREAD_STATE","rdi":{"value":0}},"name":"main"},{"id":572296,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":3}]},{"id":572298,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":3}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "x86_64h",
    "base" : 140703261888512,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.CoreFoundation",
    "size" : 5255168,
    "uuid" : "93c48919-68af-367e-9a67-db4159bc962c",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
    "name" : "CoreFoundation",
    "CFBundleVersion" : "1866"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4315750400,
    "CFBundleShortVersionString" : "0.0.1",
    "CFBundleIdentifier" : "com.goxkey.ui",
    "size" : 2867200,
    "uuid" : "0a2e292d-c2e4-372a-8a22-eeb41a21b2bb",
    "path" : "\/Applications\/Gõ Key.app\/Contents\/MacOS\/goxkey",
    "name" : "goxkey",
    "CFBundleVersion" : "20230320.232415"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4428763136,
    "size" : 442368,
    "uuid" : "71febccd-d9dc-3599-9971-2b3407c588a8",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703261573120,
    "size" : 49152,
    "uuid" : "b5454e27-e8c7-3fdb-b77f-714f1e82e70b",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  }
],
  "sharedCache" : {
  "base" : 140703258316800,
  "size" : 19331678208,
  "uuid" : "73669942-bd8a-3e40-951f-7fbe07b51cb8"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=830.2M resident=0K(0%) swapped_out_or_unallocated=830.2M(100%)\nWritable regions: Total=137.5M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=137.5M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nActivity Tracing                   256K        1 \nDispatch continuations            64.0M        1 \nKernel Alloc Once                    8K        1 \nMALLOC                            64.1M       20 \nMALLOC guard page                   16K        4 \nObjC additional data                15K        1 \nSTACK GUARD                          8K        2 \nStack                             9228K        3 \nStack Guard                       56.0M        1 \nVM_ALLOCATE                        144K        5 \n__DATA                            15.2M      240 \n__DATA_CONST                      11.1M      149 \n__DATA_DIRTY                       485K       86 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       646.4M        8 \n__TEXT                           183.8M      259 \n__UNICODE                          592K        1 \ndyld private memory               1024K        1 \nmapped file                       36.6M        5 \nshared memory                      212K       10 \n===========                     =======  ======= \nTOTAL                              1.1G      799 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "name" : "main",
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "5fb4245a1bbfe8005e33a1e1",
      "factorPackIds" : {

      },
      "deploymentId" : 240000021
    },
    {
      "rolloutId" : "6112e14f37f5d11121dcd519",
      "factorPackIds" : {
        "SIRI_TEXT_TO_SPEECH" : "634710168e8be655c1316aaa"
      },
      "deploymentId" : 240000231
    }
  ],
  "experiments" : [

  ]
}
}

Model: MacBookPro16,3, BootROM 1731.140.2.0.0 (iBridge: 19.16.16067.0.0,0), 4 processors, Quad-Core Intel Core i5, 1,4 GHz, 8 GB, SMC 
Graphics: Intel Iris Plus Graphics 645, Intel Iris Plus Graphics 645, Built-In
Display: Color LCD, 2560 x 1600 Retina, Main, MirrorOff, Online
Memory Module: BANK 0/ChannelA-DIMM0, 4 GB, LPDDR3, 2133 MHz, SK Hynix, H9CCNNNBJTALAR-NVD
Memory Module: BANK 2/ChannelB-DIMM0, 4 GB, LPDDR3, 2133 MHz, SK Hynix, H9CCNNNBJTALAR-NVD
AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x870), wl0: Jul 16 2021 18:25:13 version 16.20.328.0.3.6.105 FWID 01-30be2b3a
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB31Bus
USB Device: T2Bus
USB Device: Touch Bar Backlight
USB Device: Touch Bar Display
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 63.5

Lỗi: Không gõ được trên bàn phím có layout non-US

Khi sử dụng layout "mềm" (software-based) non-US (như Dvorak, Colemak,...) thì các phím vẫn nhận diện theo vị trí ban gốc, không phải vị trí trên layout.

Nguyên nhân có lẽ do Event Tap gửi keycode đúng theo vị trí của phím được nhấn theo layout US.

GõKey panic khi vi-rs panic

Trong trường hợp vi-rs bị panic, thì GõKey cũng bắt chước panic theo, ví dụ khi gõ chữ "land":

thread '<unnamed>' panicked at 'Couldn't retrieve replace char for l for Dyet', /Users/huytd/.cargo/git/checkouts/vi-rs-5b567bc8b512911b/83317ad/src/processor.rs:185:36
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Sau buoc nay thi khong go tieng Viet duoc nua.

Docs: Translate the README.md into Vietnamese

Lol. The target user is Vietnamese people. Not sure why I use English here in the first place...

The plan for this ticket is as follows:

  • Write a proper introduction for gõkey, this is basically the "landing page" for the app
  • Move the technical notes into DEVELOPMENT.md file

Không tự chỉnh dấu với vần iên

Hi anh, em vừa dùng thử ứng dụng thấy khá ok. Tuy nhiên em có phát hiện ra 1 lỗi thế này:
Với vần iên, khi gõ mỗi chữ ie trước -> thêm dấu -> thêm chữ e nữa để tạo thành thì dấu sẽ k tự chỉnh sang chữ ê.
Ví dụ:
Tíêng vịêt
Hìên lành
Địên áp

Bật tắt gõ Tiếng Việt với phím Fn

Macbook pro m2 sử dụng phím Fn là phím chuyển bộ gõ.
Issue này mong muốn goxkey cho phép bật tắt gõ Tiếng Việt với phím này thay vì phải bấm tổ hợp phím.

Bug: Colon is changed to semicolon

Environment

  • MacOS Monterey 12.6.7

Reproduce

  • Turn on Vietnamese keyboard
  • You type :gokey after deleting the last character, this case is y character and the string is changed to ;goke

This problem is very inconvenient when I use Slack, I can't use emoji 😢

Screen.Recording.2023-08-14.at.12.15.15.mov

Cung cấp bản build tự động cho máy xài chip ARM

Hiện tại bản build tự động từ Github Action đang sử dụng builder cho arch là Intel. Nên sẽ xảy ra trường hợp nếu máy M1 tải về cài đặt, thì nhiều trường hợp sẽ bị crash.

Update Github Action để cung cấp thêm bản build cho chip ARM.

Hoặc tạm thời các bạn xài máy M1 có thể tự build cũng được.

Lỗi: Mất dấu móc ở kí tự ơ trong cụm ươ

Mình thử build bundle với commit 8428822 và phát hiện ra gõ từ dưới bị lỗi ở cụm ươ, kí tự ơ bị mất dấu móc.
Môi trường: Firefox, Telegram, Warp (terminal emulator)
Cách mô phỏng lỗi:

  • duwowis
  • dwowis

Kết quả kì vọng: dưới

Kết quả thực tế:

  • dưowis (Firefox, Telegram)
  • dwowis (Warp)

GõKey crash khi khởi động trong trường hợp máy tính đang chọn Input source khác

Trong trường hợp macOS đang chọn một input source khác ngoài tiếng Anh, thì GõKey sẽ bị crash.

Crash log:

Thread 0 Crashed:: main Dispatch queue: com.apple.main-thread
0   <translation info unavailable>           0x100c5be88 ???
1   goxkey                                 0x10053e81a DYLD-STUB$$CFAttributedStringSetAttribute + 6
2   libsystem_platform.dylib            0x7ff80bb23c33 _sigtramp + 51
3   goxkey                                 0x100467367 _$LT$rdev..macos..keyboard..Keyboard$u20$as$u20$rdev..rdev..KeyboardState$GT$::add::h86a93639157b1a20 + 119
4   goxkey                                 0x100353fe2 goxkey::input::build_keyboard_layout_map::h432c08493bce46be + 306
5   goxkey                                 0x10035432a goxkey::input::rebuild_keyboard_layout_map::h74d69ad26f4a8a05 + 362
6   goxkey                                 0x10036e3c7 goxkey::main::h64da65ddf89dbedb + 39
7   goxkey                                 0x10033a9a6 std::sys_common::backtrace::__rust_begin_short_backtrace::h30ab29c12f42fe74 + 6
8   goxkey                                 0x10036f02c std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h659a2a62d2f5f24f + 12
9   goxkey                                 0x100506e20 std::rt::lang_start_internal::h72dc55d09e0a2397 + 784
10  goxkey                                 0x10036e7fc main + 44
11  dyld                                   0x200a30310 start + 2432

Nguyên nhân là vì với các input source không phải mặc định, việc đọc thông tin keyboard layout sẽ trả về empty layout. Hiện tại bước này được xử lý từ thư viện rdev, nên GõKey không kiểm soát được.

Phương án là không xài rdev nữa mà tự viết lại binding để đọc input source và map layout phím.

Không build được project trên macos dựa theo Readme

Mình follow các steps trên ReadMe (mục build from source) thì nhận đc kết quả như sau

λ  goxkey git:(main) cargo bundle
error: no such subcommand: `bundle`

	Did you mean `build`?
λ  goxkey git:(main) cargo build
    Updating crates.io index
    Updating git repository `https://github.com/zerox-dg/vi-rs`
error: failed to select a version for the requirement `env_logger = "^0.10.0"`
candidate versions found which didn't match: 0.9.3, 0.9.2, 0.9.1, ...
location searched: crates.io index
required by package `goxkey v0.1.0 (/Users/tumai/Documents/opensource/goxkey)`

Environment:
Cargo/Rust version 1.71.0
OS: MacOS Monterey 12.6.3, Macbook Pro (Retina, 15-inch, Mid 2015)

Got custom plugins?

Would you want to support the ability to add custom plugins? Like:

  • enabling a cmdk search bar through gõkey
  • something similar to RayCast app

Gõ vần oao

Hiện tại gõ oao ra oâ
Tương tự gõ oeo ra oê
Mặc dù đây là nguyên âm kép trong tiếng việt nhưng không thấy từ nào dùng nguyên âm này.

suggestion: Can't delete `ứ` one backspace

Steps:

  • Enable VN
  • Enable Telex mode
  • Type u, w, s
  • Output =
  • Click backspace

Expected:

  • Output = Empty. The will be cleared

Actually:

  • Output = ư.
  • Must click 2 more backspaces to delete fully.

Feb-26-2023 23-21-23

Hỗ trợ VSCode?

Hi bạn, mình có cài thử, hoạt động tốt trên web nhưng trên VSCode hình như chưa hỗ trợ phải không? Mình gõ mà không được.

PS. Nếu bạn có thể để version trong khung Settings thì sẽ hay hơn, tiện cho lúc feedback.

UI: Implement a dialog to notify user to enable Accessibilty Access

When the app started, it needed accessibility access to listen to mouse and keyboard events. The user needs to grant this access manually.

To make it easier, implement a dialog that asks the user to do so and takes them to the correct screen in the System preferences.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.