Skip to content

[BUG]: Bật Debug log vẫn tạo/khóa file log ở cả Hook/TSF mode, TSF chưa xử lý đúng BS giữ chữ khi có gợi ý và chưa đồng bộ trạng thái V/E #196

@Shzr0

Description

@Shzr0

Phiên bản Windows

Windows 10

Kiểu gõ

Telex

Mô tả lỗi

@phatMT97 Có những lỗi mình đã báo trước đó nay lại xuất hiện trở lại nhưng không phải lỗi cũ. Và ngoài ra còn có những lỗi mới thì nay mình trình bày lại cho dễ hiểu. Mình chuyển phần mình gặp khi test TSF mode thành từng report riêng cho dễ theo dõi.

Môi trường test

  • VKey: v4.0.0 release
  • Mode đã test:
    • Hook mode
    • TSF mode
  • Trình duyệt: Microsoft Edge
  • File manager: OneCommander làm mặc định thay cho File Explorer
  • Debug log:
    • Trong UI Bảng điều khiển VKey: đã thấy bằng mắt là Bật Debug log đang tắt
    • Trong config.toml: đã kiểm tra là debug_log = false
  • Ghi chú:
    • Lỗi liên quan Bật Debug log mình đã check lại và thấy xảy ra ở cả Hook mode lẫn TSF mode.
    • Các lỗi liên quan BS giữ chữ khi có gợi ýTSF/Input Indicator bên dưới là phần mình đang ghi nhận khi test TSF mode.

1. BS giữ chữ khi có gợi ý không hoạt động trong TSF mode

Mô tả

Mình thấy chức năng BS giữ chữ khi có gợi ý không hoạt động đúng khi dùng TSF mode.

Theo tooltip của option này thì khi trình duyệt có gợi ý và mình bấm Backspace, VKey nên giữ chữ đã gõ, để tránh bị xóa sai do gợi ý của trình duyệt.

Cách tái hiện

Trong Edge, bật các option gợi ý/tìm kiếm của trình duyệt như ảnh mình gửi.

Sau đó test trong Native Search Bar / thanh tìm kiếm của Edge:

face

Khi Edge gợi ý sẵn thành:

facebook.com

Sau đó bấm Backspace 1 lần.

Kết quả thực tế

Thay vì trả về chữ ban đầu:

face

thì kết quả chỉ còn:

fac

Tức là bị xóa mất ký tự e.

Kết quả kỳ vọng

Khi bật BS giữ chữ khi có gợi ý, nếu trình duyệt đang có gợi ý autocomplete thì bấm Backspace nên giữ lại chữ người dùng đã gõ ban đầu:

face

chứ không nên bị xóa thành:

fac

Thông tin bổ sung

Mình đã thử cùng case này với EVKey thì không gặp lỗi tương tự.

Mình chưa chắc lỗi này chỉ xảy ra trong TSF mode hay có liên quan thêm tới Edge Native Search Bar, nhưng hiện tại mình thấy khi dùng TSF mode thì option BS giữ chữ khi có gợi ý không xử lý đúng case này.


2. VKey vẫn tạo/khóa file log dù đã tắt Bật Debug log

Bối cảnh

Trước đó mình có feedback về chức năng Bật Debug log như sau:

Mình đang dùng OneCommander làm mặc định thay cho File Explorer, và hầu hết thao tác file/folder mình đều làm trong OneCommander.

Trước đây mình từng gặp case:

Lần thử 1

Mình vào cửa sổ chính VKey để tắt Bật Debug log, sau đó exit app VKey.

Sau đó vào check path:

\build\Release

thì vẫn thấy file log cũ và file log mới nhất.

Các file log cũ thì xóa được, nhưng một số file log mới nhất không xóa được.

Lần thử 2

Sau khi thấy các file log mới nhất không xóa được, mình mở VKey lên lại để kiểm tra thì thấy Bật Debug log vẫn đang được bật.

Check path:

\build\Release

thì thấy VKey tạo thêm 1 file log nữa.

Mình tắt Bật Debug log lần 2 trong giao diện chính, exit app VKey lần 2, rồi quay lại xóa log thì vẫn còn file log không xóa được.

Lần thử 3

Mình vào thẳng file config:

config.toml

và đổi:

debug_log = true

thành:

debug_log = false

Sau đó mở VKey lên lại thì mới thấy giao diện chính không còn hiện Bật Debug log đang bật nữa.

Lúc này mình mới xóa sạch được các file log.

Trạng thái hiện tại sau khi test lại

Mình test lại trong VKey v4.0.0 release thì thấy vấn đề Bật Debug log không chỉ xảy ra với TSF mode, mà Hook mode hay TSF mode vẫn có thể bị lỗi liên quan log.

Điểm mình muốn đính chính rõ hơn là:

  • Mình đã nhìn bằng mắt trong UI Bảng điều khiển VKey và thấy Bật Debug log đang ở trạng thái tắt.
  • Mình cũng đã kiểm tra trong config.toml và thấy:
debug_log = false
  • Nhưng dù UI đã tắt và config cũng đã là debug_log = false, vẫn có file log không xóa được.
  • Có vài lần mình exit VKey rồi mở lại thì VKey vẫn tạo được các file log mới.

Vì vậy case hiện tại không chỉ là vấn đề UI và config.toml chưa đồng bộ. Ngay cả khi UI và config đã thể hiện đúng là debug log đang tắt, VKey vẫn có thể giữ khóa file log hoặc tạo thêm log mới.

Mình chưa kết luận nguyên nhân nằm ở Hook mode, TSF mode, hay cơ chế ghi log chung. Nhưng hiện tại phần Bật Debug log nên xem là lỗi chung, không nên chỉ giới hạn ở TSF mode.


3. File log vẫn bị khóa và không xóa được

Mô tả

Hiện tại dù Bật Debug log đang tắt trong UI Bảng điều khiển VKey, và config.toml cũng đã là:

debug_log = false

mình vẫn thấy VKey tạo/thừa lại các file log và có file không xóa được.

Ví dụ các file log mình thấy xuất hiện:

VKey_TSF-Explorer_09062026_1751_p6300.log
VKey_TSF-NOTEPAD_09062026_1832_p14040.log
VKey_TSF-VKey_09062026_1749_p20392.log
VKey_TSF-VKey_09062026_1751_p15460.log

Trong đó có 2 file:

VKey_TSF-Explorer_09062026_1751_p6300.log
VKey_TSF-NOTEPAD_09062026_1832_p14040.log

vẫn hiện bảng thông báo bên dưới và không xóa được:

---------------------------
Notepad
---------------------------
The process cannot access the file because it is being used by another process.
---------------------------
OK
---------------------------

Process ID mình kiểm tra được

Mình kiểm tra theo PID trong tên file log thì thấy:

C:\Users\Administrator>tasklist /FI "PID eq 6300"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
explorer.exe                  6300 Console                    1    145.904 K
C:\Users\Administrator>tasklist /FI "PID eq 14040"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
notepad.exe                  14040 Console                    1     19.216 K

Trong đó mình đang dùng OneCommander để thay thế File Explorer gần như hoàn toàn, nhưng PID 6300 lại đang là explorer.exe.

Mình chưa kết luận nguyên nhân, chỉ ghi lại đúng thông tin mình kiểm tra được để bạn dễ debug.

Kết quả thực tế

Bật Debug log đang tắt trong UI Bảng điều khiển VKeyconfig.toml cũng đã là:

debug_log = false

mình vẫn thấy các hiện tượng sau:

  • VKey vẫn có thể tạo log mới sau khi exit rồi mở lại.
  • Có file log không xóa được.
  • Có vẻ file log vẫn đang bị process nào đó giữ handle.
  • Một số file log liên quan tới Explorer, Notepad, VKey.
  • Mình đã check lại và thấy vấn đề Bật Debug log xảy ra ở cả Hook mode lẫn TSF mode, không chỉ riêng TSF mode.

Nói cách khác, trạng thái UI và config có thể đã đúng là “debug log đang tắt”, nhưng hành vi thực tế vẫn chưa đúng vì file log vẫn bị khóa hoặc vẫn có thể được tạo mới.

Khi mở file log bằng Notepad

Khi mở file log bị khóa bằng Notepad thì Notepad hiện thông báo:

The process cannot access the file because it is being used by another process.

Kết quả kỳ vọng

Khi Bật Debug log đã tắt trong UI và config.toml cũng là:

debug_log = false

thì VKey nên xử lý như sau:

  • Không tạo thêm file log mới sau khi exit rồi mở lại.
  • Không giữ handle khiến file log không xóa được.
  • Nếu có log nội bộ bắt buộc cho một số module thì nên có setting riêng để bật/tắt rõ ràng.
  • Khi VKey exit, các file handle liên quan tới log nên được đóng đúng cách để người dùng có thể xóa log.
  • Nếu tắt Bật Debug log trong UI thì cả Hook mode và TSF mode đều nên tôn trọng setting này.

4. TSF/Input Indicator chưa đồng bộ rõ với Hook tray icon

Mô tả

Mình thấy khi đổi mode trong TSF/Input Indicator thì Hook tray icon chưa đồng bộ theo, hoặc ít nhất là nhìn vào Hook tray icon chưa biết chắc TSF đang ở trạng thái gõ tiếng Anh hay tiếng Việt.

Ngoài ra, khi dùng TSF/Input Indicator mode, tray icon của VKey cũng chưa có màu/ký hiệu riêng để phân biệt rõ với Hook mode.

4.1. Khi chỉ dùng Hook mode

Nếu chỉ dùng Hook mode thì trạng thái rất dễ hiểu:

Gõ tiếng Anh = E mode
VKey tray icon: chữ E viết hoa, màu xanh nước biển
Gõ tiếng Việt = V mode
VKey tray icon: chữ V viết hoa, màu đỏ

Nhìn vào icon VKey là biết đang E mode hay V mode.

4.2. Khi dùng TSF/Input Indicator mode

Khi dùng TSF/Input Indicator thì Windows Input Indicator đang thể hiện như sau:

Gõ tiếng Anh = Eng_US [English (United States) - US Keyboard]
Gõ tiếng Việt = Eng [English (United States) - VKey Vietnamese IME]

4.3. Kỳ vọng mapping khi dùng TSF/Input Indicator

Mình kỳ vọng trạng thái TSF/Input Indicator có thể đồng bộ rõ ràng với logic E/V như này:

E mode = Eng_US [English (United States) - US Keyboard]
V mode = Eng [English (United States) - VKey Vietnamese IME]

4.4. Vấn đề hiện tại

Hiện tại khi dùng TSF/Input Indicator mode, mình chưa thấy Hook tray icon đồng bộ hoặc thể hiện khác biệt đủ rõ để biết đang dùng TSF/Input Indicator ở trạng thái nào.

Ví dụ:

E mode trên Hook tray icon:
VKey tray icon hiện chữ E viết hoa, màu xanh nước biển
= Eng_US [English (United States) - US Keyboard]
V mode trên Hook tray icon:
VKey tray icon hiện chữ V viết hoa, màu đỏ
= Eng [English (United States) - VKey Vietnamese IME]

Nhưng khi đang dùng TSF/Input Indicator, chỉ nhìn vào Hook tray icon thì chưa phân biệt rõ được:

  • đang dùng Hook mode hay TSF mode
  • TSF/Input Indicator hiện tại đang là US Keyboard hay VKey Vietnamese IME
  • trạng thái Hook tray icon có đang phản ánh đúng trạng thái TSF thực tế hay không

4.5. Gợi ý cách hiển thị riêng cho TSF mode

Mình nghĩ TSF/Input Indicator mode nên có màu hoặc ký hiệu riêng trên tray icon để phân biệt với Hook mode.

Cách 1: Hiện chữ TSF, màu thay đổi theo trạng thái E/V

Khi TSF đang ở trạng thái gõ tiếng Anh:

TSF/Input Indicator:
Eng_US [English (United States) - US Keyboard]

VKey tray icon:
chữ TSF viết hoa, màu xanh nước biển

Màu xanh nước biển này có thể cùng màu với E mode của Hook mode.

Khi TSF đang ở trạng thái gõ tiếng Việt:

TSF/Input Indicator:
Eng [English (United States) - VKey Vietnamese IME]

VKey tray icon:
chữ TSF viết hoa, màu đỏ

Màu đỏ này có thể cùng màu với V mode của Hook mode.

Ý nghĩa:

TSF xanh nước biển = TSF đang ở trạng thái tiếng Anh / US Keyboard
TSF đỏ             = TSF đang ở trạng thái tiếng Việt / VKey Vietnamese IME

Cách 2: Vẫn hiện chữ E/V, nhưng đổi màu khác Hook mode để phân biệt TSF

Nếu không muốn hiện chữ TSF trên tray icon, có thể vẫn dùng chữ E/V, nhưng đổi màu khác với Hook mode để người dùng biết đây là TSF mode.

Khi TSF đang ở trạng thái gõ tiếng Anh:

TSF/Input Indicator:
Eng_US [English (United States) - US Keyboard]

VKey tray icon:
chữ E viết hoa, màu xanh lá cây

Màu xanh lá cây này vẫn cùng tông màu lạnh với màu xanh nước biển của E mode bên Hook, nhưng khác đủ rõ để phân biệt TSF mode với Hook mode.

Khi TSF đang ở trạng thái gõ tiếng Việt:

TSF/Input Indicator:
Eng [English (United States) - VKey Vietnamese IME]

VKey tray icon:
chữ V viết hoa, màu vàng

Màu vàng này vẫn cùng tông màu nóng với màu đỏ của V mode bên Hook, nhưng khác đủ rõ để phân biệt TSF mode với Hook mode.

Ý nghĩa:

Hook E mode = chữ E màu xanh nước biển
Hook V mode = chữ V màu đỏ

TSF English / US Keyboard        = chữ E màu xanh lá cây
TSF Vietnamese / VKey Vietnamese = chữ V màu vàng

Như vậy người dùng nhìn vào tray icon sẽ biết được cả 2 thông tin:

  • đang là E/V hay đang dùng tiếng Anh/tiếng Việt
  • đang ở Hook mode hay TSF/Input Indicator mode

Kỳ vọng

Nếu có thể, khi dùng TSF/Input Indicator mode thì VKey nên có một trong các hướng xử lý sau:

  1. Đồng bộ Hook tray icon theo trạng thái TSF/Input Indicator hiện tại.
  2. Hoặc có icon/trạng thái/màu riêng để phân biệt rõ đang dùng TSF mode.
  3. Hoặc nếu Hook tray icon không đại diện cho TSF mode thì nên có cách hiển thị khác để người dùng biết trạng thái TSF hiện tại.

Ví dụ kỳ vọng dễ hiểu:

TSF đang dùng US Keyboard          => VKey hiện trạng thái tiếng Anh
TSF đang dùng VKey Vietnamese IME  => VKey hiện trạng thái tiếng Việt

Gợi ý hiển thị có thể là:

TSF xanh nước biển = TSF + US Keyboard
TSF đỏ             = TSF + VKey Vietnamese IME

hoặc:

E xanh lá cây = TSF + US Keyboard
V vàng        = TSF + VKey Vietnamese IME

Mục tiêu là người dùng nhìn vào icon/tray là biết ngay hiện tại đang gõ bằng TSF tiếng Anh hay TSF tiếng Việt, và cũng biết mình đang ở Hook mode hay TSF mode.


5. Tóm tắt vấn đề

Mình thấy có 3 nhóm vấn đề chính khi test VKey v4.0.0 release:

  1. BS giữ chữ khi có gợi ý không hoạt động đúng trong TSF mode.

    • Test case: gõ face trong Edge Native Search Bar.
    • Edge gợi ý facebook.com.
    • Bấm Backspace 1 lần.
    • Kết quả bị thành fac thay vì giữ face.
  2. Bật Debug log vẫn có vấn đề ở cả Hook mode lẫn TSF mode.

    • UI Bảng điều khiển VKey đã hiện Bật Debug log đang tắt.
    • config.toml cũng đã là debug_log = false.
    • Nhưng vẫn có file log bị khóa, không xóa được.
    • Có vài lần exit VKey rồi mở lại thì VKey vẫn tạo được file log mới.
    • Có các file log dạng VKey_TSF-....
    • Có 2 file log bị khóa, không xóa được:
      • VKey_TSF-Explorer_09062026_1751_p6300.log
      • VKey_TSF-NOTEPAD_09062026_1832_p14040.log
    • Notepad báo file đang được process khác sử dụng.
    • PID trong file log mình kiểm tra được có liên quan tới explorer.exenotepad.exe.
    • Mình đang dùng OneCommander để thay thế File Explorer gần như hoàn toàn.
    • Mình chưa chắc nguyên nhân nằm ở Hook/TSF hay cơ chế ghi log chung, nhưng hiện tại lỗi log không nên xem là chỉ riêng TSF mode.
  3. TSF/Input Indicator chưa đồng bộ rõ với Hook tray icon.

    • Hook mode nhìn icon E/V rất dễ hiểu.
    • TSF/Input Indicator thì Windows hiển thị US Keyboard hoặc VKey Vietnamese IME.
    • Nhưng Hook tray icon chưa thể hiện rõ hoặc chưa đồng bộ rõ với trạng thái TSF/Input Indicator.
    • Người dùng khó biết hiện đang ở TSF tiếng Anh hay TSF tiếng Việt nếu chỉ nhìn icon VKey.
    • Cũng khó phân biệt hiện tại đang dùng Hook mode hay TSF mode nếu chỉ nhìn icon VKey.
    • Gợi ý: có thể hiển thị TSF đổi màu theo E/V, hoặc vẫn dùng E/V nhưng đổi màu khác Hook mode để phân biệt TSF mode.

6. Câu hỏi thêm

Mình muốn hỏi thêm để hiểu đúng thiết kế hiện tại:

  1. BS giữ chữ khi có gợi ý đã hỗ trợ TSF mode chưa, hay hiện mới xử lý tốt bên Hook mode?

  2. Khi UI đã tắt Bật Debug logconfig.toml đã là debug_log = false, VKey có còn được phép tạo log mới không?

  3. Nếu debug_log = false thì cả Hook mode và TSF mode có nên ngừng tạo log hoàn toàn không?

  4. Nếu VKey bắt buộc phải tạo log nội bộ cho một số module, có thể đóng file handle khi exit VKey để người dùng xóa log được không?

  5. Khi dùng TSF/Input Indicator, Hook tray icon có được thiết kế để đồng bộ theo trạng thái TSF không?

  6. Nếu Hook tray icon không đại diện cho TSF mode, có thể thêm trạng thái/icon riêng để phân biệt TSF tiếng Anh và TSF tiếng Việt không?

  7. Có thể thêm màu/icon/ký hiệu riêng cho TSF mode để phân biệt với Hook mode không?

  8. Nếu thêm hiển thị riêng cho TSF mode, bạn thấy hướng nào hợp lý hơn?

    • Hiện chữ TSF, đổi màu theo trạng thái tiếng Anh/tiếng Việt
    • Hoặc vẫn hiện chữ E/V, nhưng dùng màu khác với Hook mode

Nếu cần mình có thể quay video lại flow test BS giữ chữ khi có gợi ý trong Edge, gửi thêm danh sách file log bị khóa, và quay lại trạng thái Hook tray icon / TSF Input Indicator để bạn dễ kiểm tra hơn.

Toàn bộ settings

[app_overrides.'msedge.exe']
encoding = 0
input_method = 2
send_method = -1

[app_overrides.'msedgewebview2.exe']
encoding = 0
input_method = 2
send_method = -1

[excluded_apps]
force_vn = [ 'msedge.exe' ]
list = [
'gameapp.exe',
'qqdownloadassistant.exe',
'qqspeed_loader.exe',
'qqspeedcefprocess.exe',
'qqspeedchatbrowser.exe',
'qqspeedmonitor.exe',
'reverse1999.exe',
'strinova-win64-shipping.exe',
'strinova.exe',
'x2.exe',
'xdt.exe'
]

[features]
allow_english_bypass = false
allow_zwjf = false
auto_caps = true
auto_caps_macro = false
auto_restore = true
beep_on_switch = false
cjk_auto_switch = false
debug_log = false
esc_restore_raw = true
exclude_apps = true
macro_enabled = false
macro_in_english = false
macro_trigger_dir = true
macro_trigger_enter = true
macro_trigger_space = true
macro_trigger_tab = true
modern_ortho = false
optimize_level = 0
quick_consonant = false
quick_end_consonant = false
quick_start_consonant = false
smart_switch = true
spell_check = true
spell_exclusions = []
suggest_keep_chars = true
tsf_apps = true

[hotkey]
alt = false
ctrl = false
shift = false
vk = 0
win = false

[hotkey_state]
cancel_composition = true
skip_macro = true
toggle_enabled = true

[input]
code_table = 0
method = 'simple_telex'

[smart_switch.apps]
'applicationframehost.exe' = 'english'
'avpui.exe' = 'vietnamese'
'chatgpt installer.exe' = 'vietnamese'
'chatgpt.exe' = 'vietnamese'
'cheatengine-x86_64.exe' = 'vietnamese'
'cmd.exe' = 'vietnamese'
'codex.exe' = 'vietnamese'
'credentialuibroker.exe' = 'vietnamese'
'docker desktop.exe' = 'english'
'explorer.exe' = 'vietnamese'
'git-credential-manager.exe' = 'vietnamese'
'hitomi_downloader_gui.exe' = 'vietnamese'
'java.exe' = 'vietnamese'
'legcord.exe' = 'vietnamese'
'media-downloader-adw-spike.exe' = 'vietnamese'
'media-downloader.exe' = 'vietnamese'
'mediadownloaderqt6-5.6.1.setup.tmp' = 'vietnamese'
'mintty.exe' = 'vietnamese'
'msedge.exe' = 'vietnamese'
'nickvision.parabolic.winui.exe' = 'vietnamese'
'notepad.exe' = 'vietnamese'
'nvidia app.exe' = 'vietnamese'
'onecommander.exe' = 'vietnamese'
'onenote.exe' = 'english'
'openwith.exe' = 'vietnamese'
'photos.exe' = 'vietnamese'
'pickerhost.exe' = 'vietnamese'
'potplayermini64.exe' = 'vietnamese'
'powershell.exe' = 'vietnamese'
'python.exe' = 'vietnamese'
'python3.13.exe' = 'vietnamese'
'pythonw.exe' = 'vietnamese'
'pythonw3.13.exe' = 'vietnamese'
'qbittorrent.exe' = 'vietnamese'
'qqspeedglauncherpdl.exe' = 'vietnamese'
'reverse1999-launcher.exe' = 'vietnamese'
'reverse1999.exe' = 'vietnamese'
'revouninpro.exe' = 'english'
'systempropertiesadvanced.exe' = 'vietnamese'
'taskmgr.exe' = 'english'
'telegram.exe' = 'english'
'vencordinstaller.exe' = 'vietnamese'
'vkey.exe' = 'vietnamese'
'volumey.exe' = 'vietnamese'
'wfdownloaderapp.exe' = 'vietnamese'
'winrar.exe' = 'vietnamese'
'wish.exe' = 'vietnamese'
'youtube music.exe' = 'vietnamese'
'zettlr.exe' = 'vietnamese'

[system]
auto_check_update = false
custom_color_e = 0
custom_color_v = 0
desktop_shortcut = true
floating_icon_x = 1876
floating_icon_y = 996
force_light_theme = false
icon_style = 0
language = 0
run_as_admin = false
run_at_startup = true
show_floating_icon = true
show_on_startup = false
startup_mode = 0
watchdog_enabled = false

[tsf_apps]
list = [
'legcord.exe',
'msedgewebview2.exe',
'codex.exe',
'onecommander.exe',
'onecommanderconnector.exe',
'powershell.exe',
'cmd.exe',
'notepad.exe',
'msedge.exe'
]

[ui]
background_opacity = 100
pinned = false
show_advanced = true

[[hotkeys]]
intent = 'cancel-composition'

[hotkeys.trigger]
mods = 0
vk = 27

[[hotkeys]]
intent = 'skip-macro'

[hotkeys.trigger]
mods = 0
vk = 27

[[hotkeys]]
intent = 'toggle-enabled'

[hotkeys.trigger]
mods = 0
vk = 17

[[hotkeys]]
intent = 'toggle-enabled'

[hotkeys.trigger]
double_tap = true
mods = 0
vk = 18

Thông tin thêm

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions