Silence 发布的文章

大概是从 Windows 7 时代开始,很多声卡的立体声混音功能就消失了,据说是厂家迫于某些组织的压力为了维护音乐版权不得不屏蔽了这个功能。
既然是屏蔽,那么大概率是可以重新打开的。下面以 Thinkpad 某老款笔记本(Windows 10)自带的 Conexant 20671 声卡为例,讲一下处理方法:

  1. 运行注册表编辑器 regedit.exe,找到如下分支:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}
  2. 在找到的分支下会有 0000、0001……等子分支,对应着各个音频设备。使用“Conexant”或“20671”关键字搜索到要修改的声卡分支。
  3. 假设上一步找到的分支是 0000,将如下内容保存为 conexant.reg 文件。如果你找到的分支不是 0000,自行修改内容。

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\0000\Settings\EPattributes\EpSettings\StereoMixEnable]
    "MixAssocSeq"=hex:e0,e0
    "MuteGainSettings"=hex:00,00
    "Enable"=hex:01
  4. 双击 conexant.reg 文件导入注册表,然后重启操作系统即可。

注:此方法只适用于 conexant 声卡的部分型号,其它型号的声卡可能设置方法有所不同。

AlmaLinux 在安装完成重启后,在图形界面下会出现无法关闭的向导,强制让你创建用户,否则无法进入系统。有时候弄个测试用的系统,只用一个 root 账户就可以了,所以要想办法把它关掉。
注意:因为这个向导是在系统登录前出现的,以前的那种在用户的 .config 目录下创建一个内容为“yes”的 gnome-initial-setup-done 文件的做法不会生效。
用 root 账户 ssh 登录系统后:

  • 方法一:
    第一步:
    vim /etc/gdm/custom.conf
    在 [daemon] 小节下增加一行:
    InitialSetupEnable=false
    如果只做这一步,重启后可以登录系统,但仍会出现向导。
    第二步:
    vim /etc/xdg/autostart/gnome-initial-setup-first-login.desktop
    增加一行:
    X-GNOME-Autostart-enabled=false
    重启系统即可。
  • 方法二:
    直接卸载 gnome-initial-setup:
    dnf erase gnome-initial-setup

第一个 get_datetime 脚本是规范日期格式的写法:

:global DateTime
:local Date [/system clock get date]
:local Time [/system clock get time]
:local Month [:tostr ([:find [:toarray "jan,feb,mar,apr,may,jun,jul,ago,sep,oct,nov,dec"] [:pick $Date 0 3]]+1)]
#if MM
#:if ([:len $Month]<2) do={:set Month "0$Month"}
# Format YYYY-M-D H:MM:SS
#\E5\B9\B4 \E6\9C\88 \E6\97\A5
:set DateTime ([:pick $Date 7 11]."-".$Month."-".[:tonum [:pick $Date 4 6]]." ".[:tonum [:pick $Time 0 2]].[:pick $Time 2 8])

第二个 Check_WAN_IP 脚本是检测到路由器的公网地址变化时自动发送钉钉机器人消息:
(此脚本使用的是钉钉消息的自定义关键字模式,指定的关键字是[路由器]即[\E8\B7\AF\E7\94\B1\E5\99\A8]这几个字符串,可自行修改。)

:global currentIP;
:global DateTime;
:execute "get_datetime"
:local newIP [/ip address get [find interface="pppoe-out1"] address];
:if ($newIP != $currentIP) do={
#    :put "ip address $currentIP changed to $newIP";
    :local header "Content-Type:application/json";
    :local dingtalk "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx";
    :local data "{\"msgtype\":\"text\",\"text\": {\"content\":\"$DateTime \E5\AE\BD\E5\B8\A6\E5\85\AC\E7\BD\91 IP \E5\8F\98\E6\9B\B4\E4\B8\BA: $newIP, [\E8\B7\AF\E7\94\B1\E5\99\A8]\"}}";
    :log info [/tool/fetch http-method=post mode=https http-header-field="$header" http-data="$data" url="$dingtalk"];
    :log warning "公网地址由 $currentIP 变为 $newIP";
    :set currentIP $newIP;
};

说明:此脚本中宽带拨号的接口是 pppoe-out1,用法是打开 /ppp/Profiles 下拨号使用的 profile 条目,在 script 标签页下的 On Up 对话框中输入如下内容(延迟三秒执行):

delay 3s
:execute "Check_WAN_IP"

TSFTool 是 IMETool 输入法设置工具的继承者,支持在 Windows 10/11/Windows Server 2019 操作系统下,支持新的 TSF 输入法框架,并部分兼容旧的 IMM 输入法框架。

下载:tsftool.rar

tsftool.png
版本历史:
0.9.3.1:修订命令行参数 /remove_eng 失效问题,去除无用的 /? 参数。同时发现程序在最新版的 Windows11 下有时退出后仍在进程中,尚未找到原因。
0.9.3.0:解决命令行输入两个以上参数时,程序界面不自动退出的问题。将启用/禁用输入法的延时改为5秒。修正默认输入法设置为“美式键盘”时程序不能正确识别的问题。优化“每个窗口使用不同输入法”设置的生效速度。
0.9.2.9:增加命令行参数 /remove_eng,对应其它菜单下的删除顽固的英语美式键盘功能(不删除注册表项目)。
0.9.2.8:修订因输入法名称中含有空格和大写字母带来的命令行参数 bug,受影响的命令:
add_name/del_name/move_name/default_name/hotkey_name。
0.9.2.7:修改导出/导出配置文件格式,解决某些特殊情况下可能出现冲突的问题。
0.9.2.6:增加导出/导出配置功能(在其它功能菜单下)。去除 0.9.2.5 增加的禁用所有输入法功能。
0.9.2.5:增加禁用所有输入法功能(因为必须保留至少一个输入法,故全部禁用后保留了一个美式键盘)。
0.9.2.4:增加导出输入法列表功能。取消等待4秒的对话框。
0.9.2.3:修正两处 bug。
0.9.2.2:旧的 IMM 框架输入法在列表中显示为绿色。增加删除按钮,从注册表中删除无用输入法项目交由用户处理。
0.9.2.1:在启用/禁用输入法后强制延时4秒,避免系统操作太慢可能会导致程序报错。此版本可以清除小狼毫等输入法卸载后在注册表中的残留项目。
0.9.2.0:增加命令行参数支持;增加帮助窗口;一些细微的程序内部调整。
0.9.1.3:修补从 0.9.1.0 版本开始遗漏的写入键盘切换热键的部分代码(感谢 waiting 的提醒)。
0.9.1.2:旧版本的 Windows10 不支持表情符号面板功能,TSFTool 启动时会报错。此版本修订这一问题。
0.9.1.1:某种输入法禁用时,如果其已被设置为默认输入法,则将默认输入法改为语言列表。英文键盘布局在禁用/启用时,增加一个延时关闭的提示对话框,以免操作过快引起异常。增加删除顽固存在的英语美式键盘布局功能。
0.9.1.0:全部重写代码,使用不同的方式处理,支持旧的 IMM 框架输入法,修复一些 Bug。此版本需要管理员权限。增加 32 位版本,32位版本也可以正常支持 64 位的 Windows10。
0.9.0.0:初始版本,只支持 TSF框架输入法。

命令行参数:
/r /refresh 重载键盘布局。
/remove_eng 删除顽固的英语美式键盘(不删除注册表项目)。
/caps 使用 Caps Lock 键关闭大写。
/shift 使用 Shift 键关闭大写。
/alone:0 各个窗口使用相同的输入法。
/alone:1 各个窗口使用独立的输入法。
/bar:0 关闭桌面状态栏。
/bar:1 打开桌面状态栏。
/emoji:0 表情符号面板自动关闭。
/emoji:1 表情符号面板不自动关闭。
/layout:0/1/2/3 键盘布局切换热键:0:禁用;1:Ctrl+Alt;2:Alt+Shift;3:` 。
/lang:0/1/2/3 输入语言切换热键:0:禁用;1:Ctrl+Alt;2:Alt+Shift;3:` 。
/add_num:<输入法序号> 按序号添加到输入法列表。
/add_name:<输入法名称> 按名称添加到输入法列表。
/del_num:<输入法序号> 按序号从输入法列表中禁用。
/del_name:<输入法名称> 按名称从输入法列表中禁用。
/del_all 禁用列表中所有输入法。
/move_num:<输入法序号> <新序号> 将指定序号的输入法移动到新位置。
/move_name:<输入法名称> <新序号> 将指定名称的输入法移动到新位置。输入法名称中如有空格,需要用双引号括起来。
/langlist 使用语言列表替代默认输入法。
/default_num:<输入法序号> 将指定序号的输入法设置为默认输入法。
/default_name:<输入法名称> 将指定名称的输入法设置为默认输入法。
/export_enabled_list: <文件名> 导出当前使用的输入法列表。
/export_disabled_list: <文件名> 导出禁用的输入法列表。
/hotkey_num:<输入法序号> 按序号指定输入法热键,不填写热键表示删除热键。
/hotkey_name:<输入法名称> 按名称指定输入法热键,不填写热键表示删除热键。输入法名称中如有空格,需要用双引号括起来。
/switchkey:<a/b/c> 设置通用切换热键。a: 打开关闭输入法;b: 全角半角切换;c: 中英
文标点切换。

热键格式: 分两部分,以空格分隔,左侧为控制键,右侧为字符键,如:ctrl 5、shift home、ctrl+alt d 等。
左侧控制键列表如下(不分大小写):
Alt
Ctrl
Left_Ctrl
Right_Ctrl
Ctrl+Alt
Shift
Left_Shift
Right_Shift
Alt+Shift
Ctrl+Shift
Left_Ctrl+Shift
Right_Ctrl+Shift
Ctrl+Alt+Shift

右侧字符键列表如下:
0~9、a~z、-=,.;'[]\等常规字符
? 因 / 被定义为参数的前导符,用 ? 来代表 /
~ 数字1左侧那个 ` 字符
BACKSPACE
TAB
ENTER
HOME
END
PGUP
PGDN
INS
DEL
LEFT
RIGHT
UP
DOWN
F1~F12
NUM0~NUM9 小键盘的0~9
NUM+
NUM-
NUM*
NUM? 代表小键盘的 /
NUM.
LEFT_WINDOW 左徽标键
RIGHT_WINDOW 右徽标键
APPS 应用程序键

几点说明:
一、关于热键

  1. 切换热键修改后立即生效,但只对新打开窗口有效,原有窗口仍是旧的热键有效。
  2. 切换热键可以单独选择左/右控制键,但是重启后会变回左右双键同时有效,这是 Windows 的设置功能混乱造成的,重载键盘布局即可重新生效。可以点击设置工具右下角的“刷新”按钮,也可以由命令行执行 tsftool /r 或 tsftool /refresh 重载键盘布局。
  3. TSF 类型的输入法和旧的IMM类型输入法能使用的热键范围有所不同。TSF 输入法的控制键不分左右,虽然Windows10 的相关设置界面里显示 Alt 键只能用左 Alt,实际右 Alt 键也有效,故在命令行中指定 TSF 输入法热键时不再加 left 前缀,如:alt、ctrl+alt 等。另外,TSF输入法不能使用 Windows 键和 APPS 键。
  4. IMM输入法的控制键可单独区分左右,但只能使用 ctrl、shift、ctrl+shift这三组控制键组合,如:ctrl、left_ctrl、right_ctrl+shift 等等。打开/关闭输入法、全角/半角切换和中英文标点切换的热键定义范围和 IMM 输入法一致。Windows10 目前不再定义全局的全半角切换和中英文标点切换热键,但有时候也会有效,所以暂时保留了这两组切换热键设置。
  5. 因为 / 被定义为命令行参数的前导符,从命令行指定热键时使用其上档键 ? 来代替 /,小键盘的 / 用 num? 代替。
  6. 输入法热键的重码检查暂时只在当前当前语言下进行,其它语言自行注意即可。功能待以后改进。但是三组通用切换热键允许不同语言重码,互不影响。
  7. 在 Windows10 的热键设置中对“~”键的定义有误,无法生效,为保持兼容性本工具也保留了这个定义;另 Windows10 热键设置中定义的“抑音符”实际为小键盘的数字0。

二、关于键盘布局

  1. Windows10 从 1903 版本开始,已经无法正常将中文简体-美式键盘显示在输入法列表中了(实际是存在并启用的)。为了方便一些老用户,我在程序的输入法列表里硬加了一个“美式键盘”,以蓝色显示,可以正常使用。但是我发现,当切换到美式键盘后,是无法用打开/关闭输入法的切换热键“Ctrl+空格”切换到其它输入法的,只有改用切换键盘布局热键“Ctrl+Shift”或徽标键+空格键。我个人建议是禁用美式键盘,然后把最常用的输入法设置初始状态为“英文”,再用“Ctrl+空格”就可以正常切换了。
  2. 暂时只支持 0409 这一种英文键盘布局。
  3. 因为某些原因,在对美式键盘进行启用、禁用操作时,刷新需要 3~4 秒,注意操作不要太快。

三、其它

  1. 所有设置修改后立即生效,没有设计“确定”、“应用”这类功能。
  2. 本工具支持 Windows10 32/64 位版本和 Windows Server 2019,32 位版本程序在 64 位操作系统下运行正常。Windows7/8 等以前的操作系统的设置实际差异较大,不再支持。
  3. 如果安装了多种语言的输入法,可以从底部的已安装语言列表中切换进行设置。
  4. 输入法列表中显示为“粗体” 的条目表示此输入法已设置为默认输入法,可以从列表上点击右键,从弹出菜单里修改相关设置。
  5. 每种语言下应至少保留一种输入法或键盘。
  6. 如果要添加/删除某些输入法语言,请转到操作系统的设置/时间和语言/语言下进行设置。尝试过直接删除语言,发现容易造成输入法状态混乱,暂时取消了这个功能。
  7. 偶尔会出现工具里的输入法列表和实际的输入法列表不太一致的现象,来回调整几次刷新刷新就会正常。主要原因是因为 Windows 在语言选项中的输入法列表和任务栏上的输入法列表是两个不同的配置,有时候条目数量和顺序会不一致,通过输入法工具设置会纠正这个问题。
  8. 某些输入法(如小狼毫)在卸载不完全时,TSFTool 的输入法列表里可能会存在空行,以后的版本会想办法解决这个问题( 0.9.2.1 版本已解决)。
  9. 要下载 TSFTool,可以去我的个人网站:https://www.mympc.org

             Silence
             2023年2月10日