超简单的html虚拟键盘

完整代码附上:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Virtual Numeric Keyboard</title>
    <style>
        .keyboard {
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 50vh;
            background-color: #f9f9f9;
            border-top: 1px solid #ccc;
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            grid-gap: 0px;
            padding: 0px;
        }

        button {
            padding: 0px;
            font-size: 26px;
            border: 1px solid #ccc;
            background-color: transparent;
        }

        .keyboard button:active {
            background-color: lightblue;
        }
    </style>
</head>

<body>

    <input type="text" id="input">

    <div class="keyboard" id="keyboard" style="display: none;">
        <button>1</button>
        <button>2</button>
        <button>3</button>
        <button>4</button>
        <button>5</button>
        <button>6</button>
        <button>7</button>
        <button>8</button>
        <button>9</button>
        <button>清空</button>
        <button>0</button>
        <button>确定</button>
    </div>
    <script>
        const input = document.getElementById('input');
        const keyboard = document.getElementById('keyboard');
        var setTime = null
        input.addEventListener('focus', () => {
            keyboard.style.display = 'grid';
        });
        input.addEventListener('blur', function (evenet) {
            setTime = setTimeout(() => {
                keyboard.style.display = 'none';
            }, 10)
        });
        keyboard.addEventListener('click', (event) => {
            if (event.target.tagName === 'BUTTON') {
                clearTimeout(setTime);
                const value = event.target.textContent;
                if (value === '清空') {
                    input.value = '';
                } else if (value === '确定') {
                    // 处理确认操作
                    console.log('确认输入:', input.value);
                    keyboard.style.display = 'none';
                } else {
                    input.value += value;
                    let length = input.value.length
                    input.focus();
                    input.setSelectionRange(length, length);
                }
            }
        });
    </script>

</body>

</html>

效果图:

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现汉字虚拟键盘的关键在于将输入的汉字转化为对应的键值,然后将键值发送给系统,让系统模拟键盘输入。 以下是一个简单的C++代码示例: ```c++ #include <iostream> #include <windows.h> #include <fstream> #include <string> using namespace std; void inputChinese(string str) { wstring wstr(str.begin(), str.end()); const wchar_t* wch = wstr.c_str(); int len = WideCharToMultiByte(CP_ACP, 0, wch, -1, NULL, 0, NULL, NULL); char* ch = new char[len]; WideCharToMultiByte(CP_ACP, 0, wch, -1, ch, len, NULL, NULL); for (int i = 0; i < len - 1; i += 2) { INPUT input[2] = { 0 }; input[0].type = INPUT_KEYBOARD; input[0].ki.wVk = 0; input[0].ki.wScan = ch[i] + (ch[i + 1] << 8); input[0].ki.dwFlags = KEYEVENTF_UNICODE; input[0].ki.time = 0; input[0].ki.dwExtraInfo = 0; input[1].type = INPUT_KEYBOARD; input[1].ki.wVk = 0; input[1].ki.wScan = ch[i] + (ch[i + 1] << 8); input[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; input[1].ki.time = 0; input[1].ki.dwExtraInfo = 0; SendInput(2, input, sizeof(INPUT)); } delete[] ch; } int main() { string str; while (true) { cout << "请输入汉字:"; getline(cin, str); if (str == "exit") { break; } inputChinese(str); } return 0; } ``` 代码中使用了Windows API的函数`SendInput()`来模拟键盘输入,首先将输入的汉字转化为Unicode编码,然后构造`INPUT`结构体数组,其中每个结构体表示一个按键事件,第一个结构体表示按下键盘,第二个结构体表示松开键盘。最后调用`SendInput()`函数将键盘事件发送给系统。 你可以在命令行中输入汉字,程序会将汉字转换为键值并输入给系统。输入“exit”退出程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值