San*_*ing 5 google-chrome xmodmap
我重新映射了 Insert、Home、Page Up、Delete、End 和 Page Down,它已经工作了很多年,但是在最新的 Google Chrome 更新中,它会忽略重新映射,如果没有重新映射,则执行操作。在 Chrome 之外,重新映射有效。
知道如何让 Chrome 尊重重新映射的键吗?
小智 1
我做了类似的键重新映射并遇到了同样的问题。我不确定 xmodmap 重新映射是否真的在 Chrome 中正常工作。例如,在 Google 表格中,按修饰键(在我的情况下为大写锁定)将清除当前单元格。
我通过 (a) 购买支持 QMK 固件的新 USB 键盘和 (b) 发现我的 System76 笔记本电脑使自定义键盘固件变得微不足道,从而解决了这个问题。
我意识到这两种选择都可能涉及新硬件和大量费用,因此并不理想。
我认为 Chrome 能够绕过重新映射的按键这一事实表明重新映射的级别过高。可能使用 evdev 重新映射可能效果更好,但我还没有尝试过。祝你好运,抱歉我没有更通用的解决方案。
小智 0
我不知道这是否能解决您的具体问题,但我也遇到了类似的问题,因为我的映射在 Google 表格中不起作用。
基本上,据我了解,大写锁定键代码仍然被发送到浏览器 - 我对操作系统的了解不够了解 - 所以我最终做的是keydown专门覆盖 Google Sheets 中的事件。不理想,绝对不理想。但是,这可以阻止 Google 表格清除当前单元格。
您必须安装 TamperMonkey 并添加以下脚本。确保脚本运行于document-start。
// ==UserScript==
// @name Google Sheets Capslock Blocker
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Take control of Google Sheets.
// @author nate-wilkins
// @match https://docs.google.com/spreadsheets/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com
// @grant none
// ==/UserScript==
'use strict';
console.log('Running Google Sheets Capslock Blocker');
const element = document.createElement('div');
const originalAddEventListener = element.__proto__.addEventListener;
element.__proto__.addEventListener = function (event, handler) {
if (event === 'keydown') {
originalAddEventListener.call(this, event, function () {
console.log({ e: arguments[0] });
if (arguments[0].key === 'ModeChange') {
console.log(">> Blocked Caps <<");
return;
} else {
handler.apply(this, arguments);
}
});
} else {
originalAddEventListener.call(this, event, handler);
}
};
Run Code Online (Sandbox Code Playgroud)
这让我可以拥有.xmodmap:
keycode 66 = Mode_switch
keysym h = h H Left
keysym l = l L Right
keysym k = k K Up
keysym j = j J Down
Run Code Online (Sandbox Code Playgroud)
这让我可以使用非常基本的 vi/vim 移动键来浏览 Google Sheets。
很高兴这终于有效了。如果您找到较低级别的方法来解决此问题,请告诉我,但我会非常感激!
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |