WME Virtual Keyboard

Adds a "virtual keyboard" to enter non-english characters (currently only Turkish characters).

  1. // ==UserScript==
  2. // @name WME Virtual Keyboard
  3. // @namespace http://tampermonkey.net/
  4. // @version 2017.11.20.003
  5. // @description Adds a "virtual keyboard" to enter non-english characters (currently only Turkish characters).
  6. // @author MapOMatic
  7. // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
  8. // @license GNU GPLv3
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. function buttonOnMouseDown(evt) {
  16. evt.preventDefault();
  17. var char = $(evt.target).text();
  18. var element = document.activeElement;
  19. var $element = $(element);
  20. if (element && ($element.is('input:text') || $element.is('textarea'))) {
  21. var text = $element.val();
  22. var start = element.selectionStart;
  23. var end = element.selectionEnd;
  24. text = text.slice(0,start) + char + text.slice(end);
  25. $element.val(text);
  26. element.selectionStart = start+1;
  27. element.selectionEnd = start+1;
  28. $element.change();
  29. }
  30. }
  31.  
  32. function init() {
  33. console.log('WME More Letters: Initializing...');
  34.  
  35. var $menuParentDiv = $('#advanced-tools');
  36.  
  37. var $keyboardDiv = $('<div>', {id:'more-letters-popup'})
  38. .css({padding:'2px', 'background-color': '#ccc',
  39. 'box-shadow':'#b2b2b2 2px 2px 8px', 'z-index':'2001', cursor:'default', 'font-size':'13px',
  40. 'text-align':'center', color:'black', 'margin-bottom':'4px', 'border-radius':'8px'})
  41. .appendTo($menuParentDiv);
  42.  
  43. var chars = [['Ç','Ğ','I','İ','Ö','Ş','Ü'],['ç','ğ','ı','i','ö','ş','ü']];
  44. var $table = $('<table>');
  45. var buttonStyle = {width:'22px',height:'22px',padding:'unset'};
  46. var tdStyle = {padding:'2px 4px'};
  47. chars.forEach(function(row) {
  48. var $row = $('<tr>');
  49. row.forEach(function(char) {
  50. $row.append(
  51. $('<td>').css(tdStyle).append($('<button>', {class:'waze-btn waze-btn-white'}).text(char).css(buttonStyle).mousedown(buttonOnMouseDown))
  52. );
  53. });
  54. $table.append($row);
  55. });
  56. $keyboardDiv.append($table);
  57.  
  58. $keyboardDiv.mousedown(function(evt) {
  59. evt.preventDefault();
  60. }).click(function(evt) {
  61. evt.preventDefault();
  62. });
  63. }
  64.  
  65. function bootstrap(retries) {
  66. retries = retries || 0;
  67. if (retries === 100) {
  68. console.log('WME More Letters: Initialization failed. Exiting script.');
  69. return;
  70. }
  71. if (window.require && W && W.loginManager &&
  72. W.map && W.loginManager.isLoggedIn() && $('#advanced-tools').length) {
  73. init();
  74. } else {
  75. retries += 1;
  76. setTimeout(function () {
  77. bootstrap(retries);
  78. }, 250);
  79. }
  80. }
  81.  
  82. bootstrap();
  83. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址