8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 Ubuntu 22.04 中以编程方式配置键盘

Sefa Dedeoglu 2月前

231 0

我曾尝试在 Unity 中创建游戏,并在任何苹果设备上的 iOS 上构建它,除了 iPhone x 之外都没有问题。屏幕截图如下。在此处输入图像描述。它被 ipho 覆盖...

我曾尝试在 Unity 中创建游戏,并在任何 Apple 设备上的 iOS 上构建它,除了 iPhone x 之外都没有问题。屏幕截图如下。 在此处输入图像描述 。它被 iPhone x 凹口覆盖,然后当角色在左侧或右侧时,它被切成两半。还有其他解决方案或插件可以用来解决这个问题吗?有没有 Unity 设置或 xcode 设置?谢谢

帖子版权声明 1、本帖标题:在 Ubuntu 22.04 中以编程方式配置键盘
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Sefa Dedeoglu在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 关于 iPhone X 缺口,你可以使用 这个 :

    Screen.safeArea
    

    这是确定屏幕实际“安全区域”的便捷方法。在 此线程 .

    关于角色被切成两半,这可能是您需要根据游戏逻辑手动处理的事情。通过获取 Screen.width - 您应该能够调整相机(缩小)或限制角色移动,使其不会超出屏幕边缘。

  • 谢谢你的想法,我所做的是,我创建了一个代码,它将能够检测设备类型(iphonex),如果是真的,那么它将自动调整相机,我认为这是最好的方法。并且在其他部分(如画布)上也是同样的事情检测设备类型,然后手动调整。

  • @DulfKoher 这也是一种解决方法 :) 只需注意,更多带有凹口的设备即将问世(实际上现在还有其他设备)。使用 Screen.safeArea 时 - 您可以为所有情况提供解决方案(如果 Unity 团队能够保持其活力) - 虽然为 iPhone X 提供特定解决方案很好 - 但它不是很强大。

  • 需要注意的一点是,只有在 Unity 视图初始化后,Screen.safeArea 才会返回实际的 safeArea。我首先尝试从 -90 优先级脚本的 Awake() 调用,它只会返回全屏区域... 将其移动到 Start() 即可解决问题。

  • 对于 iPhone X 和其他有缺口的手机,您可以使用 Unity 2017.2.1+ 提供的通用 Screen.safeArea。将下面的脚本附加到全屏 UI 面板(锚点 0,0 到 1,1;枢轴 0.5,0.5),它将自行塑造到屏幕安全。

    还建议将画布设置为“随屏幕尺寸缩放”和“匹配(宽度-高度)”= 0.5。

    public class SafeArea : MonoBehaviour
    {
        RectTransform Panel;
        Rect LastSafeArea = new Rect (0, 0, 0, 0);
    
        void Awake ()
        {
            Panel = GetComponent<RectTransform> ();
            Refresh ();
        }
    
        void Update ()
        {
            Refresh ();
        }
    
        void Refresh ()
        {
            Rect safeArea = GetSafeArea ();
    
            if (safeArea != LastSafeArea)
                ApplySafeArea (safeArea);
        }
    
        Rect GetSafeArea ()
        {
            return Screen.safeArea;
        }
    
        void ApplySafeArea (Rect r)
        {
            LastSafeArea = r;
    
            Vector2 anchorMin = r.position;
            Vector2 anchorMax = r.position + r.size;
            anchorMin.x /= Screen.width;
            anchorMin.y /= Screen.height;
            anchorMax.x /= Screen.width;
            anchorMax.y /= Screen.height;
            Panel.anchorMin = anchorMin;
            Panel.anchorMax = anchorMax;
        }
    }
    

    为了更深入地了解,我在这里写了一篇带有屏幕截图的详细文章: https://connect.unity.com/p/updating-your-gui-for-the-iphone-x-and-other-notched-devices 。希望对您有所帮助!

  • @CthulhuJon 目前 Screen.safeArea 仅适用于 2017.2.1+。对于 Android 缺口支持,Unity 开发人员表示,目前正在为 v2018.3 或更高版本进行开发,可能不会移植到 2017.4。forum.unity.com/threads/538924/#post-3816202。鉴于此信息,遗憾的是,该系统不太可能移植到 5.6。

  • 如果 iOS.DeviceGeneration 可以在 5.6 中返回 X 系列值,那么您可能会硬编码手动安全区域系统,类似于我在文章中创建模拟安全区域的方式,但我不相信他们已经或将会将这些新设备枚举修补到 5.6 中。如果有办法使用插件或其他方式在 5.6 上检测 iPhone X,您可以这样做。

  • 抱歉回复迟了,但我已经调整了 iOS 设备的相机视口矩形,它工作正常。检查它是否也适用于您的相机。

    我尝试过 safeArea 和其他基于脚本的解决方案,但似乎不起作用。

    #if UNITY_IPHONE
            mainCamera.rect = new Rect(0.06f, 0.06f, 0.88f, 1);
    #endif
    
  • 我正在使用 Ubuntu 22.04,并且创建了一个自定义键盘。我正在使用 Ansible 来配置机器,并将自定义键盘映射文件放在 /usr/share/X11/xkb/symbols/tss_ki 下...

    我正在使用 Ubuntu 22.04,并且创建了一个自定义键盘。我正在使用 Ansible 来配置机器,并将自定义键盘映射文件放在 /usr/share/X11/xkb/symbols/tss_kiosk 下

    我有一个定制的 evdev.xml 文件,其内容如下,位于 /usr/share/X11/xkb/rules/evdev.xml 下:

      <configItem>
            <name>tss_kiosk</name>
            <!-- Keyboard indicator for English layouts -->
            <shortDescription>tss_kiosk</shortDescription>
            <description>tss_kiosk</description>
            <languageList>
              <iso639Id>eng</iso639Id>
            </languageList>
          </configItem>
    
    

    如果我使用 UI 在设置下的输入源中配置键盘布局。我可以看到,当我添加新键盘时,它会显示在英语(美国)列表下,如果我选择它并删除默认的英语(美国),我的键盘绑定就可以正常工作了。我的问题是,在将文件放到机器上后,如何以编程方式设置它以在配置期间选择 tss_kiosk 作为默认键盘。

    我还尝试配置 /etc/default/keyboard 文件,使其看起来像下面这样:

    # KEYBOARD CONFIGURATION FILE
    
    # Consult the keyboard(5) manual page.
    
    XKBMODEL="pc105"
    XKBLAYOUT="tss_kiosk"
    XKBVARIANT=""
    XKBOPTIONS=""
    
    BACKSPACE="guess"
    
    

    这似乎也没有影响任何事情。

    我设法使用以下方式以编程方式设置键盘布局

    gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'tss_kiosk')]"
    

    这样就可以了,但是当我使用 Ubuntu Frame 启动操作系统并在框架中启动 Firefox 浏览器时,设置不起作用。

    我的期望是,我将启动并应用正确的键盘映射。

  • 我已经设置了一个受密码保护的存储库服务器,用于托管我的应用程序的一些 deb 包。存储库运行良好,一旦

    我已经设置了一个受密码保护的存储库服务器,用于托管我的应用程序的一些 deb 包。存储库运行良好,一旦将存储库添加到 /etc/apt/sources.list.d/app.list 中,我就能够在客户端虚拟机 (Ubuntu 22.04) 上安装软件包,凭据添加到 /etc/apt/auth.conf 中。

    但问题是,存储在 /etc/apt/auth.conf 中的存储库凭据是明文的,我不想向用户公开这些凭据。

    在这种情况下,有哪些可能的方法可以保护我的密码?

    我曾尝试加密文件夹,并在文件中存储散列密码,但显然 apt 要求密码以明文形式呈现。

    任何指示都非常感谢!!

  • 我为 Unity 创建了一个 Android 插件,它需要手动添加一些依赖项。当前执行此操作的步骤是:转到编辑 > 项目设置 > 播放器 > 发布设置...

    我为 Unity 创建了一个 Android 插件,它需要手动添加一些依赖项。当前执行此操作的步骤如下:

    1. 转到“编辑”>“项目设置”>“播放器”>“发布设置”。
    2. 启用“自定义主 Gradle 模板”
    3. 导航到该 mainTemplate.gradle 文件并打开它。
    4. 添加我提供的依赖项。

    有没有办法使这个过程自动化?

    我正在考虑:

    • 添加依赖项的预构建脚本。
    using System.IO;
    using UnityEditor;
    using UnityEditor.Build;
    using UnityEditor.Build.Reporting;
    using UnityEngine;
    
    public class GradleTemplateModifier : IPreprocessBuildWithReport
    {
        public int callbackOrder => 0;
    
        public void OnPreprocessBuild(BuildReport report)
        {
            if (report.summary.platform == BuildTarget.Android)
            {
                string gradleTemplatePath = "Assets/Plugins/Android/mainTemplate.gradle";
                if (File.Exists(gradleTemplatePath))
                {
                    string content = File.ReadAllText(gradleTemplatePath);
                    string[] dependencies = new[]
                    {
                        "implementation 'com.example:some-dependency:1.0.0'",
                    };
    
                    foreach (var dependency in dependencies)
                    {
                        if (!content.Contains(dependency))
                        {
                            int index = content.LastIndexOf("dependencies {") + "dependencies {".Length;
                            content = content.Insert(index, $"\n\t{dependency}");
                            File.WriteAllText(gradleTemplatePath, content);
                            Debug.Log("Added dependency to mainTemplate.gradle");
                        }
                    }
                }
            }
        }
    }
    

    在此脚本中,我将插件依赖项直接添加到 `mainTemplate.gradle` 文件中并保存。但是,这种方法存在一些问题:

    • p5

    • p6

    如您所见,我需要有关整体流程和实施方面的帮助。我相信一定有更好的解决方案。
    据我所知,unity 不支持多个 build.gradle 文件。
    有没有更简单的为什么? 是否有内置的为什么?

  • 我有一个 Laravel 项目,在执行某些操作后,会生成一个存档,并需要将其放置在远程服务器上。为了进行测试,我创建了一个运行 Ubuntu 服务器的 VM,该服务器配置了...

    我有一个 Laravel 项目,在执行一些操作后,会生成一个存档并需要将其放在远程服务器上。为了进行测试,我创建了一个运行 Ubuntu 服务器的虚拟机,并配置了 SSH 连接。当将项目连接到服务器以存储存档时,我想通过 SSH 密钥系统和更传统的用户密码方法使用双重身份验证。第一阶段正确执行,我的私钥被识别,而问题出现在第二部分。

    经过检查,输入的用户名是正确的,但是唯一的错误信息是这个:\'message:proposition #536 SftpAdapter.php:+232 Could not login with username: test, host: 192.168.*.**\'

    为了简化测试,用户账户已配置如下::用户名:测试密码:测试

    上面给出的消息是我拥有的唯一日志,它来自 laravel 日志。在 VM 端,经过检查,理论上存在几个日志文件,但我只找到了三个理论上的文件中的一个,它没有为我提供我所希望的信息。

    于是我尝试让日志出现在VM端,但是我找不到与这些著名日志相对应的任何参数。而且,我逐点检查了可能导致此问题的各种元素,但没有一个是原因。

  • 引用 14

    请说明您的具体问题或提供更多详细信息以准确突出您的需求。根据目前的写法,很难准确说出您要求的是什么。

  • 我正在重现 safety-starter-agents 的代码。为了满足 setup.py 文件中的要求,我在运行 python3.7 的虚拟环境中运行代码。此 python 版本...

    的代码 safety-starter-agents 。为了满足 setup.py 文件中的要求,我在运行 python3.7 的虚拟环境中运行代码。此 python 版本与所有必需的软件包版本兼容。

    具体来说,我从 这里 本教程 将 EXPORT 路径添加到 ~/.bashrc

    上运行代码 WSL Ubuntu 24.04 .

    当我运行时 pip install mujoco_py==2.0.2.7 ,出现以下错误:

    为收集的包构建轮子:mujoco_py为 mujoco_py 构建轮子(pyproject.toml)... 错误错误:子进程退出并出现错误

    × 为 mujoco_py (pyproject.toml) 构建 wheel 未成功运行。退出代码:1> [95 行输出] 运行 bdist_wheel 运行构建性能提示:mujoco_py/cymj.pyx:67:5:对“c_warning_callback”的异常检查将始终需要获取 GIL。可能的解决方案:1. 如果您控制定义并且确定不希望该函数引发异常,则将“c_warning_callback”声明为“noexcept”。2. 在“c_warning_callback”上使用“int”返回类型以允许返回错误代码。性能提示:mujoco_py/cymj.pyx:104:5:对“c_error_callback”的异常检查将始终需要获取 GIL。可能的解决方案:1。如果您控制定义并且确定不希望该函数引发异常,请将“c_error_callback”声明为“noexcept”。
    2. 在“c_error_callback”上使用“int”返回类型以允许返回错误代码。

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
          See c_warning_callback, which is the C wrapper to the user defined function
          '''
          global py_warning_callback
          global mju_user_warning
          py_warning_callback = warn
          mju_user_warning = c_warning_callback
                             ^
      ------------------------------------------------------------
    
      mujoco_py/cymj.pyx:92:23: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'. Exception values are incompatible. Suggest adding 'noexcept' to the type of 'c_warning_callback'.
    
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
          See c_warning_callback, which is the C wrapper to the user defined function
          '''
          global py_error_callback
          global mju_user_error
          py_error_callback = err_callback
          mju_user_error = c_error_callback
                           ^
      ------------------------------------------------------------
    
      mujoco_py/cymj.pyx:127:21: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'. Exception values are incompatible. Suggest adding 'noexcept' to the type of 'c_error_callback'.
      Removing old mujoco_py cext /tmp/pip-install-nineq6nn/mujoco-py_1f5e0ced38f24aaea6fba7e65c0b6efd/mujoco_py/generated/cymj_2.0.2.7_37_linuxcpuextensionbuilder_37.so
      Compiling /tmp/pip-install-nineq6nn/mujoco-py_1f5e0ced38f24aaea6fba7e65c0b6efd/mujoco_py/cymj.pyx because it changed.
      [1/1] Cythonizing /tmp/pip-install-nineq6nn/mujoco-py_1f5e0ced38f24aaea6fba7e65c0b6efd/mujoco_py/cymj.pyx
    

    此链接 中建议的解决方案 。但是,在此特定设置下,更改 Cython 版本不起作用。

    我能够在同一个虚拟环境中成功下载其他版本的 MuJoCo。MuJoCo 2.0.2.7 出现此错误。

    有人知道如何解决这个错误吗?

  • 这是我的小想法。我认为您应该对以下设置之一进行故障排除:

    • 验证 host port 匹配
    • 确保您的虚拟机允许传入 SSH 连接
    • 验证提供给您的 Laravel 应用程序的公钥。该 public_key 与您的 laravel 密钥不同。请注意这一点。

    在我看来,远程 VM 似乎不允许你的 Laravel 服务器与他通信。尝试 log in 使用 terminal 来访问你的 ssh [email protected] ,然后提供密码 test 。如果有效,则意味着 .env 需要编辑你的 laravel 文件才能更改 host port 。或者验证 ssh_public_key 你提供给 laravel 的

  • @DavidW 感谢您的解释。我尝试在单独的“constraints.txt”文件中设置 Cython 安装版本 \'cython<3\' 的约束,并运行以下命令“pip install mujoco_py==2.0.2.7 -c ./constraints.txt”。但这并没有解决问题。您认为我的设置中可以成功重现代码吗?如果可以,您能给我一些提示吗?我正在使用 Ubuntu 24.04

  • 我有点惊讶这些约束不起作用。你可能希望以尽可能详细的模式运行 pip,看看它正在安装什么

  • 通过AR功能,我们希望通过智能手机的实际前置摄像头,只留下脸部区域,然后使其余区域透明。目前,识别面部的方法主要是通过前置摄像头来识别,而前置摄像头则是将脸部其余区域做成透明的。

    通过AR功能,我们希望通过智能手机的实际前置摄像头只留下脸部区域,然后使其余区域透明。目前,已经应用了识别脸部并在脸部上贴上面具或物体的方法。使用实际的智能手机相机拍照时,使除脸部以外的其他区域透明是行不通的。我想问一下有没有办法。帮助

    我尝试使用着色器代码创建材质,但失败了。无法识别背景

  • 实现目标的最有效方法是创建自定义着色器。虽然面部跟踪已经正常工作,但您需要使用着色器在拍照时使背景透明。可以设置着色器以保持面部区域可见,同时遮盖其余部分。这样,当您按下照片拍摄按钮时,只有面部可见,背景将是透明的。

    您提到您之前尝试过创建着色器。您能分享一下您是如何编写着色器代码的以及您在哪里遇到了问题吗?也许进行一些小的调整或更改就可以解决问题。此外,您可能已经正确创建了着色器,但您是否确保人脸检测实时更新蒙版并将其应用于着色器?这一步对于着色器正常工作至关重要。

返回
作者最近主题: