QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2486|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>- F) e$ u' ~! _9 P6 \% {
  2. <html lang="en">
    - {* Y7 Z8 Z7 D. K' Z
  3. <head>
    ) n& c; k6 ]- u$ d/ H
  4.   <meta charset="UTF-8">\" q& D4 ?. F' r  o! F
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    ' G# I2 Y4 j) O# D. F: B' [
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">& ~4 U. l8 Z% h, r9 j
  7.   <link rel="stylesheet" >( w$ t8 p+ J# ~0 P
  8.   <title>vector examples Keyboard</title>
    8 Q- y2 c  i' r. i+ z6 F
  9. </head>$ c7 {4 ?+ Q9 a. z, c8 V
  10. <body>
    ! H7 O\" ]# F* {/ m! @
  11.   <div id="keyboard"></div>% |4 a: [: {0 k% k
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->% s6 J) J$ ^: ^  I& F* C! C1 x
  13.   <script type="module" src="./temp.js"></script>
    \" n5 s7 K/ w' T9 n3 h' _9 d# V
  14. </body>2 L4 U% G) h3 M; q$ e* H
  15. </html>
    - y) W& f1 e3 J6 l8 H
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";4 ~( {: _0 t6 L  o, i5 K! d% ^
  2. console.log("Interactive", Interactive);+ ]8 H9 ]2 j4 G) i; S. {; {6 Y
复制代码
  1. /**  V: w* M( ~& t! O, M! j
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard5 ~& ^  F4 W9 F; N
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    7 M& B5 `# ^& o1 }/ P1 ]) V
  4. * @tags [input]
    3 L7 l' Q1 Z3 b
  5. */
    $ d4 {1 N: {2 T; c. G
  6. // import { Interactive, getScriptName } from "../../index.js";
    8 M  D# n; V$ S. [, o& I\" X/ `
  7. // let interactive = new Interactive(getScriptName());
    # z1 D( ?; v2 K
  8. import Interactive from "https://vectorjs.org/interactive.js";1 O3 k3 z4 n8 V6 Z! Z* a
  9. let interactive = new Interactive("keyboard");
    # m/ s( {  {\" H2 X. d3 f' A' L0 ]& z
  10. interactive.width = 768;2 r6 P6 {; i3 |* l7 r& H\" s+ T
  11. interactive.height = 300;
    6 X* U% h4 Z8 T, z& _
  12. interactive.border = true;\" l1 ~! h' E# q6 l1 F
  13. let buffer = "";* b\" L+ m/ ?$ L. x
  14. let keys = [$ u# {7 H. r\" e
  15.   [. L' T1 q3 z! N' a6 }# P% H. _
  16.     "`",  W\" C' @. Y# M6 }0 s1 J
  17.     "1",
    1 V/ D4 q7 v, W\" z& S) ?1 n
  18.     "2",8 ?  k\" W4 V% ~( K6 [$ B' O( Q
  19.     "3",0 @9 n! A6 R7 _$ S. X# M2 F% r\" N
  20.     "4",% w! k+ j  H3 x. f- f& G: t% r
  21.     "5",( D: ^- ?8 {5 o, ~  z# S
  22.     "6",
    5 T0 Y, W5 b* V% N
  23.     "7",
    ; ?  V+ N4 c& \& q
  24.     "8",
    4 r: G\" |2 l5 w9 e! N
  25.     "9",: Z# l7 F1 Y2 e' g$ Q, w5 B! [
  26.     "0",
    * c  ~; t  [$ A, b2 O
  27.     "-",/ [8 I/ G1 E4 O. e( v
  28.     "=",6 h& J2 @5 r6 x) q0 q5 u; Z/ g
  29.     "Backspace",
    2 C. q- \7 S, P* R& J9 }, e9 m) c
  30.   ],
      f4 a$ p7 p% L5 J' G& g6 p5 V6 r
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],4 P  i3 q- D0 w4 P( d7 c3 E! ^
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],\" B& K* i; G\" Q$ h& e7 w\" S( @3 A8 G
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],. L& F& o7 d7 J( ?7 q! e2 Z/ `
  34.   [
    ; K( p0 ^6 C. D\" K6 T
  35.     "fn",. {# ~/ Z- y7 P% y% J% g! r/ [7 L
  36.     "Control",
    ) B# A1 h! g4 B* t, K\" r$ m1 V
  37.     "Alt",! z8 j\" ~# P2 a\" M  j
  38.     "Meta",, U; b6 [7 S# [0 E+ K( R1 A
  39.     " ",
    ' |& X. ~. e2 X- X6 W2 M
  40.     "Meta",7 |: m3 d. X3 m6 N2 h. k/ P( X/ e
  41.     "Alt",: f, ~9 F( ?2 p9 [2 U' F
  42.     "ArrowLeft",
    3 b/ p- Q* B  u+ o* S5 I
  43.     "ArrowUp",
    * u% f* |( V# G: `8 J, E
  44.     "ArrowDown",' w: s+ P: m' b- R. a; _2 ^
  45.     "ArrowRight",+ Q( }  Z\" u# I) O4 F
  46.   ],
    $ p: q7 F0 k9 p$ ]4 t1 U$ F1 j
  47. ];$ k2 n6 D. s( o: e2 I; ^8 L/ b1 y
  48. let buttons = [];% O0 E! C: W, S
  49. let keycodes = {7 P3 Y: N- ]) i+ L( M2 C
  50.   0: { Symbol: 0, Shift: ")" },6 u, r7 M6 ?+ ?7 R. b' v3 U
  51.   1: { Symbol: 1, Shift: "!" },# g4 D/ W' \; {6 U
  52.   2: { Symbol: 2, Shift: "@" },
    & m- b9 A2 o( R! Z
  53.   3: { Symbol: 3, Shift: "#" },
    3 V2 J6 j2 k+ X7 }. _
  54.   4: { Symbol: 4, Shift: "$" },$ D9 j; ~# Q  n
  55.   5: { Symbol: 5, Shift: "%" },
    4 c* S8 a9 R1 p, \
  56.   6: { Symbol: 6, Shift: "^" },
    ; c2 F; s8 g0 Q- z4 m' v5 b! L/ C
  57.   7: { Symbol: 7, Shift: "&" },( ^6 ^# `! J9 G# F: S, `, g- g
  58.   8: { Symbol: 8, Shift: "*" },
    ; \0 f, k' {( O7 R% ]
  59.   9: { Symbol: 9, Shift: "(" },4 u+ J( Z, \/ c% w& Q
  60.   a: { Symbol: "a", Shift: "A" },
    1 l0 B# q! o* }0 l  S7 A- r) V
  61.   b: { Symbol: "b", Shift: "B" },
    1 j( s8 s- M3 H
  62.   c: { Symbol: "c", Shift: "C" },* d& e, V% t8 @9 n& g6 |* O
  63.   d: { Symbol: "d", Shift: "D" },1 X' _1 @: n. d& X
  64.   e: { Symbol: "e", Shift: "E" },
    ! S8 {2 `! x9 h) `1 v
  65.   f: { Symbol: "f", Shift: "F" },( B8 M- M+ |9 V
  66.   g: { Symbol: "g", Shift: "G" },& R, D9 \) V  X& N
  67.   h: { Symbol: "h", Shift: "H" },6 N( g4 Q  v$ F& B* x
  68.   i: { Symbol: "i", Shift: "I" },
    - B+ m\" c\" e4 A, i
  69.   j: { Symbol: "j", Shift: "J" },# j8 b- O. _1 s' L' O
  70.   k: { Symbol: "k", Shift: "K" },* m. @4 ~8 ?7 ~9 Y+ p1 A
  71.   l: { Symbol: "l", Shift: "L" },3 s* l6 p8 q5 ~- ~& ~8 K& N
  72.   m: { Symbol: "m", Shift: "M" },
    3 Z, K' f+ V) w3 L+ Q. S9 y
  73.   n: { Symbol: "n", Shift: "N" },
    . J9 s! Y) k, v4 f# V; ?
  74.   o: { Symbol: "o", Shift: "O" },
    6 f$ O5 T4 M3 E. V\" j+ t; v4 @
  75.   p: { Symbol: "p", Shift: "P" },
    : X/ M2 w  f5 j  r4 _
  76.   q: { Symbol: "q", Shift: "Q" },
    3 `0 x. e- j& z2 r- m1 |# T4 H
  77.   r: { Symbol: "r", Shift: "R" },1 X\" g2 X3 v7 q+ O8 N$ O
  78.   s: { Symbol: "s", Shift: "S" },3 X- _( t0 F; p6 F' Q9 v# D
  79.   t: { Symbol: "t", Shift: "T" },/ f- k+ A; g\" G3 n& Q( f
  80.   u: { Symbol: "u", Shift: "U" },8 c3 n) T: W- I# L% ?3 @8 L7 P
  81.   v: { Symbol: "v", Shift: "V" },1 k8 L) u6 _! P1 N* d
  82.   w: { Symbol: "w", Shift: "W" },
    ' a5 H& t5 O0 \- g
  83.   x: { Symbol: "x", Shift: "X" },
    7 \3 A3 y. x3 A
  84.   y: { Symbol: "y", Shift: "Y" },
    $ T* G+ B5 g& w) q& D/ s5 k
  85.   z: { Symbol: "z", Shift: "Z" },' T1 m* j( b8 r( x! A$ n8 x
  86.   "`": { Symbol: "`", Shift: "~" },
    1 A% ?4 {7 x& ]
  87.   "-": { Symbol: "-", Shift: "_" },
      Q# y& z6 x/ c  j5 \7 g1 ?# n
  88.   "=": { Symbol: "=", Shift: "+" },0 L! r- Q3 a% X$ ]3 v: f% y/ c: I! ~( q
  89.   ";": { Symbol: ";", Shift: ":" },
    0 j; L+ l3 s3 P2 U3 j
  90.   "'": { Symbol: "'", Shift: '"' },5 k9 D' }  ?1 s
  91.   "[": { Symbol: "[", Shift: "{" },2 F( W% M0 ?2 J9 H# f
  92.   "]": { Symbol: "]", Shift: "}" },% z' Z: R2 o+ ?2 q0 J
  93.   "\\": { Symbol: "\\", Shift: "|" },8 Z7 j  l/ a( v  g0 \) Q
  94.   ",": { Symbol: ",", Shift: "<" },
    $ I' V( r9 o8 y
  95.   ".": { Symbol: ".", Shift: ">" },$ R; P0 Q- K0 K
  96.   "/": { Symbol: "/", Shift: "?" },
    6 T5 n3 O, x2 s# Z8 x1 f7 Q
  97.   Backspace: { Symbol: "⌫", Shift: "" },\" f1 z4 u9 w. q
  98.   tab: { Symbol: "  ", Shift: "" },
    ' m. s/ C+ y# m5 @( B\" A0 y
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    ) F6 {0 _$ J, U; v( ?# m5 @
  100.   Shift: { Symbol: "⇧", Shift: "" },
    ; I* i/ p. Y$ i( e2 W  o$ r$ N
  101.   Enter: { Symbol: "⏎", Shift: "" },
    ! v5 q- k, N- K4 V( V
  102.   Control: { Symbol: "⌃", Shift: "" },\" `- W8 x! L4 N7 Z) W1 q
  103.   Alt: { Symbol: "Alt", Shift: "" },
      a/ w$ K6 w8 l0 u8 O- N7 \\" U
  104.   Meta: { Symbol: "⌘", Shift: "" },\" J& r1 ]. G8 Q
  105.   ArrowLeft: { Symbol: "←", Shift: "" },/ L) c7 ?; G1 K
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    ) z, [6 N, o. n5 w
  107.   ArrowDown: { Symbol: "↓", Shift: "" },9 Z$ O/ f- [$ [: o# n4 J
  108.   ArrowRight: { Symbol: "→", Shift: "" },9 A' c( @1 X# J7 ]( o7 b$ m1 _
  109.   " ": { Symbol: " ", Shift: "" },
    - K6 i5 ^- ]( }( V2 L
  110. };9 M. j* _# @, R) z
  111. let buttonMap = new Map();
    ' v0 G3 n3 Q( t1 H) D+ {
  112. let height = 32;
    7 t3 S+ f  T1 Z\" K5 w; X
  113. let margin = 8;
    ! {4 s\" C\" h: {$ }6 z6 G1 j
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);$ p2 U3 R) M( t4 G0 a2 Y/ @. p
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);\" h6 W! Q' z/ N8 [3 `. q+ Y; ~8 `
  116. for (let row = 0; row < keys.length; row++) {
    5 E; f; ?4 b8 F$ I# X2 q
  117.   let x = 32;: O) A\" r  f4 K\" D% V
  118.   let prev;
    ( s! X  t9 T: _6 i- _
  119.   for (let i = 0; i < keys[row].length; i++) {
    $ V  d7 \9 c0 N+ D5 G+ v( S
  120.     let key = keys[row][i];( \! v5 f! W8 D4 g! D
  121.     let width = 32;; G+ v0 x2 C: y) q+ K! P
  122.     let button;
    \" f- p1 H/ S, \; X9 \
  123.     switch (key) {
    7 h# Q' [! U( S7 m( Q5 b1 B; B
  124.       case "CapsLock":
    + ~# D9 K9 g; m5 X) o
  125.         button = capslock;' K0 R' v  X# [* E' o7 O% v- t
  126.         width = 64;% L\" `! t0 F# v  E4 A1 {3 x# P4 I
  127.         break;5 k- _) L, N5 `  ^! S
  128.       case "Shift":( x; K0 n3 F  A0 `6 s\" k* Z& Q
  129.         if (shift.x === 0) {3 p8 W& ~0 x! [7 F  J
  130.           button = shift;$ F' v: c9 c7 F
  131.         } else {4 v  |0 S: Y6 J9 N
  132.           button = interactive.button(
    8 G/ `# S# \( x: a/ y
  133.             0,3 S\" z) Z% U) e/ a; O( P/ g! ?& W
  134.             0,5 g7 x% c* O9 V- A8 B
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    . ]( T+ ^  J4 w* X* {
  136.           );+ H* J( g, |$ V; m' X! `/ p
  137.         }1 H  N! H: |& B8 p
  138.         width = 90;
    0 b. C7 _& {; l; Q% `( A0 N
  139.         break;2 @2 X- N) i4 R  m/ i
  140.       case "tab":
    ( k% c2 A, w. B! S% Z0 l1 C% m7 N2 y
  141.         width = 50;
    , T/ f( T% |: i5 [5 Y
  142.         button = interactive.button(
    * {; ]# j- o5 B, d
  143.           0,  k+ ^3 c2 E- ~6 X1 V% v
  144.           0,
    * _5 m2 [: m- }- @
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    0 G7 V  D* j' s) E
  146.         );0 e6 s7 D+ }) L9 D; m: F5 f5 r- X! N2 F
  147.         break;3 I& w' C( s' V1 e2 A' n
  148.       case " ":
    2 v$ o% k1 J5 Z7 [  W# `3 f; ~
  149.         width = 176;
    7 p* I5 {- K2 t  f
  150.         button = interactive.button(\" H: |' B# F: m$ n$ O/ W
  151.           0,, R- S1 w# K6 x: E\" {
  152.           0,
    # {; n! d2 N% [6 _, i3 A5 z% Q& D
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    $ u/ M( T: Z- }* x1 _3 d
  154.         );) y9 N% l: P# K) H& M% n9 W. U1 `' O' z
  155.         break;
    1 M$ [\" l& K- `. q3 q
  156.       case "Meta":8 a5 u  e( M' b, v) h4 Y$ a
  157.         width = 50;
    ) L. G% x# C\" G6 w% p$ t1 S# P
  158.         button = interactive.button(% c& J4 q0 x& c
  159.           0,
    % I\" O1 b7 g# o& M! m! p
  160.           0,% b9 L3 j\" p+ o4 H: v
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key+ E+ w! H9 L! m- t7 f; ]
  162.         );
    2 J9 b( `  H* j5 ~+ F
  163.         break;3 s/ F0 R6 X- d+ c7 ~
  164.       default:
    6 g( o  Q. C9 c( f( `2 G7 t
  165.         button = interactive.button($ `  b$ [4 Q! ]) `/ ?7 \
  166.           0,
    - W* l, f4 C8 X% @6 S% j
  167.           0,8 _8 B* s9 H! f2 r8 R
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key' L' y2 N4 V( X) _; Q3 U+ _
  169.         );
    1 J4 n9 P( k: o, e. J3 B- U\" o0 q
  170.         if (keycodes[key] != undefined) {- i, ?: R# P( Y1 Z
  171.           if (keycodes[key].Shift != "") {. `& O& ?  ~! }9 E4 H, C1 |: C5 {
  172.             button.addDependency(shift, capslock);
    # ]3 ~$ H& X9 Y  U7 _0 d  H- u* O
  173.             button.update = () => {! W\" a/ F4 A4 T, ^* U
  174.               if (shift.active || capslock.active) {
    6 h- F- h4 d% j! N+ v
  175.                 button.label.contents = keycodes[key].Shift;: Y( r* s) k+ R: }; M+ I' t
  176.               } else {7 a4 Y0 H* D1 R, u
  177.                 button.label.contents = keycodes[key].Symbol;
    6 c' S# ^( t4 o' q& a3 R
  178.               }# |5 o& I! u( g- ?$ l0 s  k
  179.             };+ u9 l: f# p5 @; |0 E
  180.           }# ]( ?5 [) b8 @8 i6 @* |. Q  i; R
  181.         }# M' N\" o. u$ }' x# `8 z( s; ?
  182.     }
    0 S* [* q1 i* ]0 y
  183.     button.x = x;3 c$ ~) |; z2 d$ t9 @2 U: g
  184.     button.y = 64 + row * (height + margin);5 v0 U& a8 \+ X0 ], R7 F
  185.     if (button.box.width < width) {/ H' n1 U; l$ L8 U0 T
  186.       button.box.width = width;6 _2 L& M, q' L
  187.     }
    0 F) m) n$ _/ S, j  q0 |1 A
  188.     let bbox = button.root.getBBox();' H, k0 J) w1 a3 J0 B3 z6 h. J
  189.     x += bbox.width + margin;* U3 r( f9 j4 F4 e
  190.     buttons.push(button);
    ( e! H! G  T0 C$ z$ f4 N; U) E
  191.     prev = button;
    \" C0 {+ o. X$ L/ T\" R: o( F
  192.     buttonMap.set(key, button);
    1 L- A& N5 w% t/ p! w
  193.     if (key === "ArrowUp") {
    $ y6 c$ D2 [# U; e2 \& Y; V\" n6 i
  194.       button.box.height = 16;
    $ s( F: G0 p6 h7 U9 p
  195.       button.label.root.style.display = "none";: S3 L8 [1 c6 h. K% k
  196.     } else if (key === "ArrowDown") {+ ~1 K. t' |9 `0 x3 f
  197.       button.box.height = 16;
    5 `# U1 S9 g/ L
  198.       button.x -= 32 + margin;* J3 x+ v6 A# n6 C: @5 a  ?
  199.       button.y += 16;
    ( l6 X& ~) v8 m# m
  200.       button.label.root.style.display = "none";
    / [( a& V, A& O# y1 |3 H\" r
  201.       x -= bbox.width + margin;
    9 R\" ?7 x2 R  u4 |& ^* b\" k
  202.     }8 C( F# }6 u% k& W1 J2 q0 t
  203.   }
    - T& ]- Y3 x9 h) w8 |$ h0 ?
  204.   let right = prev.x;0 \0 z. Y! A* T+ D
  205.   if (right < 630) {) O' o( t, z0 \1 @& n: M
  206.     prev.box.width = 630 - right;
    & \( H* i$ c0 t' ^' K9 f
  207.   }
    ' T# J4 d: ?7 N2 M
  208. }0 h& \1 P  K$ f4 _
  209. // console.log(keycodes["0"], shift, capslock);
    4 I2 s4 ^! g' D+ K8 S7 G0 M
  210. let active = [];
    / i! J- n8 z+ k( T
  211. window.onkeydown = function (event) {
    * }. G\" r4 D/ {) B- o+ k+ Q
  212.   for (let i = 0; i < buttons.length; i++) {2 X' z; _/ Y# N
  213.     let button = buttons[i];; f\" O: `; g: w1 W5 |, C
  214.     if (: ~. X' x! X2 W& v
  215.       button.label.contents === event.key ||
    5 ~+ y; z\" L; X7 Z
  216.       (keycodes[event.key] != undefined &&
    - a! s& r6 h6 P/ l\" Y! s
  217.         button.label.contents === keycodes[event.key].Symbol)
    * z0 M3 L2 f9 f. @
  218.     ) {: B2 P8 n% l' ?
  219.       button.box.style.fill = "#f8f8f8";0 E: |7 T0 p1 k. |5 P! U4 }
  220.       button.label.style.fill = "#404040";! a4 W& {  X% g( S$ w* q9 o3 J2 k
  221.       button.active = true;
    ) ]6 b0 |5 t: c; V  N3 x
  222.       active.push(button);
    3 q: r7 F4 n6 }4 _  D/ w\" W* x  y
  223.     }/ Z* Z7 K& ~$ L( M5 ~/ @5 Y' q
  224.   }
    9 V6 V1 `; _, R4 E  H. }2 y; z
  225.   buffer += `'${event.key}',`;
    . A% [8 ~# c7 I- S3 Z# D
  226. };
    ) {( Q( Y0 f0 {5 _- o7 e) |2 b  }  M
  227. window.onkeyup = function (event) {
    / I% B0 P0 R2 \\" p+ U
  228.   let newActive = [];
    ! ^7 I& B9 u! Q$ c- u
  229.   for (let button of active) {
    ) y3 l\" U# U9 J\" A; ]- c/ Z
  230.     if (
    # C) P3 ~# b0 T1 U5 }& ?9 m
  231.       button.label.contents === event.key ||
    * ^9 c! w7 E1 r\" w$ X
  232.       (keycodes[event.key] != undefined &&% a; @! a0 I* S) z
  233.         button.label.contents === keycodes[event.key].Symbol)* k9 M8 }& q4 r: k
  234.     ) {/ ]* E% j+ T, J$ r* x+ P- N% Q& f
  235.       button.box.style.fill = "";
    ! y: ?4 c1 T3 _; p4 f
  236.       button.label.style.fill = "";
    8 Q3 K) g6 [0 b8 i+ `
  237.       button.active = false;# G' [\" Y9 }' I) w\" e
  238.     } else {7 C0 B$ f4 ^3 m/ p4 E( ~1 k* v
  239.       newActive.push(button);
    - }& S+ R, f& F0 p
  240.     }4 J, O9 [5 |3 _1 y: M8 Z! d1 y* y
  241.   }
    - z9 n1 C3 S3 h$ f
  242.   active = newActive;- |  F- b% Z- i& Y' c4 M& _9 x9 h\" k+ b
  243. };
    ! O9 V3 d% g$ f4 n$ F' A% ~2 r6 D
  244. let bbox = interactive.input.root.getBBox();+ @0 L  _% D8 I* X2 Z
  245. interactive.setViewBox(5 F: g2 W4 m' T6 s
  246.   bbox.x - margin,
    ; l  x! d: T. o4 N4 i
  247.   bbox.y,: s, E4 ~9 `, h8 A0 U  S6 J
  248.   bbox.width + 2 * margin,( V! p2 ?: E0 l- a
  249.   bbox.height
    & e% \/ z7 I& X( v2 g
  250. );) C+ B) V) s- I# ]- A
  251. //# sourceMappingURL=keyboard.js.map
    4 Z* H) Q0 q+ f. D/ K

  252. % i' ]& V: h0 v
复制代码
2 d0 p: F0 Q3 F6 }* i4 _# G' x& \
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-7 09:37 , Processed in 0.522289 second(s), 51 queries .

回顶部