xmodmap 在最新的 Google Chrome 更新中停止工作

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。

很高兴这终于有效了。如果您找到较低级别的方法来解决此问题,请告诉我,但我会非常感激!